我有一个网站,用户使用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身份验证登录传递会话用户名,这样我就可以将其转移到其他几个页面。
答案 0 :(得分:2)
if (isset($_SERVER['PHP_AUTH_USER'])) {
$_SESSION['user']=$_SERVER['PHP_AUTH_USER'];
}
哪里需要:
echo $_SESSION['user']
并且不要忘记在您使用会话的页面上添加session_start();
(在任何输出之前)