我有一个网站,用户在其中使用 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();
(在任何输出之前)