我正在编写自己的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 [],然后我重定向到家...
答案 0 :(得分:10)
您最初需要session_start()
。
答案 1 :(得分:4)
你应该在脚本的开头调用session_start()
。确保在每个需要访问会话变量的页面上调用它
答案 2 :(得分:1)
确保调用session_start()。使用篡改数据检查已发送和已接收请求的标头。您从服务器查找Set-Cookie标头,从客户端查找Cookie标头。这应包含您的PHPSESSID。如果您没有看到这个,那么您的会话就不会启动。祝你好运!