【发布时间】:2012-02-01 14:43:21
【问题描述】:
我目前正在编写自己的 CMS 以获取乐趣,但是当我使用 $_SESSION 时,它不起作用。会话未保存...
这是我的代码:
<?php
include('header.php');
if (isset($_SESSION['logged_in']))
{
$link = 'profile.php';
$link_name = 'Profile';
}
else
{
$link = 'login.php';
$link_name = 'Login';
}
if (isset($_POST['action']))
{
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$password = md5($password);
$user = mysql_query("SELECT * FROM users WHERE `username`='".$username."'");
if (mysql_num_rows($user) == 1)
{
while ($userinfo = mysql_fetch_array($user))
{
if ($userinfo['banned'] != true)
{
$_SESSION['user_id'] = $userinfo['id'];
$_SESSION['username'] = $userinfo['username'];
$_SESSION['logged_in'] = "true";
header('Location: index.php');
}
else
{
header('Location: login.php?error=banned');
}
}
}
else if (mysql_num_rows($user) == 0)
{
header('Location: login.php?error=not-found');
}
}
?>
在代码中,我在数据库中获取用户信息,然后检查用户是否被禁止。如果没有,我设置我的 $_SESSION[] 并重定向到主页...
【问题讨论】:
-
除非它在
header.php中,否则您省略了session_start()。在您访问$_SESSION的每个脚本上,您必须在访问或设置$_SESSION中的任何内容之前调用它。 -
你有没有 session_start();在每一页的顶部?
-
@Michael 它在
header.php... -
@dSquared 是的,在
header.php。