会话和 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();(在任何输出之前)