会话和HTTP身份验证

时间:2015-03-12 20:50:15

标签: php html session authentication

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

我理解并拥有另一个网站,我针对sql数据库执行此操作(例如显示代码的abit):

//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身份验证登录传递会话用户名,这样我就可以将其转移到其他几个页面。

1 个答案:

答案 0 :(得分:2)

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

哪里需要:

echo $_SESSION['user']

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