会话和 HTTP 身份验证

Sessions and HTTP Authentication

我有一个网站,用户使用 http 身份验证登录,我想做的是使用他们的用户名启动会话,以跨页面传递,以便稍后根据该用户名提取文件。

我了解并有另一个站点,我可以在其中针对 sql 数据库执行此操作(例如,仅显示一些代码):

//session variables here, etc etc
mysql_select_db($mysql_database, $db) or die('Failed to select database<br>'.mysql_error());
   $sql = "SELECT password, fullname, active FROM ".$mysql_table." WHERE username = '".mysql_real_escape_string($_POST['username'])."'";
   $result = mysql_query($sql, $db);
   if ($data = mysql_fetch_array($result))
   {
      if ($crypt_pass == $data['password'] && $data['active'] != 0)
      {
         $found = true;
         $fullname = $data['fullname'];
      }
   }
   mysql_close($db);
   if($found == false)
   {
      header('Location: '.$error_page);
      exit;
   }
   else
   {
      if (session_id() == "")
      {
         session_start();
      }
      $_SESSION['username'] = $_POST['username'];
      $_SESSION['fullname'] = $fullname;
      $_SESSION['expires_by'] = time() + $session_timeout;
      $_SESSION['expires_timeout'] = $session_timeout;
      $rememberme = isset($_POST['rememberme']) ? true : false;
      if ($rememberme)
      {
         setcookie('username', $_POST['username'], time() + 3600*24*30);
         setcookie('password', $_POST['password'], time() + 3600*24*30);
      }

and then using this on subsequent pages to get that info:

    <?php
    if (session_id() == "")
    {
       session_start();
    }
    if (!isset($_SESSION['username']))
    {

我一直在调查 $_SERVER['PHP_AUTH_USER'] 但不确定这是否是我所缺少的正确方向。有一个文本文件,上面有他们的用户名和密码,我可以从中提取,只是不确定如何设置它或与 sql 数据库相比如何找到它,除非我想太多了。

我基本上只需要根据他们的 http 身份验证登录传递一个会话用户名,这样我就可以将它转移到其他几个页面。

if (isset($_SERVER['PHP_AUTH_USER'])) {
$_SESSION['user']=$_SERVER['PHP_AUTH_USER'];
}

任何需要的地方:

echo $_SESSION['user']

并且不要忘记在您使用会话的页面上添加 session_start();(在任何输出之前)