PHP $ _SESSION不起作用

时间:2012-02-01 14:43:22

标签: php session

  

可能重复:
  PHP session seemingly not working

我正在编写自己的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 [],然后我重定向到家...

3 个答案:

答案 0 :(得分:10)

您最初需要session_start()

答案 1 :(得分:4)

你应该在脚本的开头调用session_start()。确保在每个需要访问会话变量的页面上调用它

答案 2 :(得分:1)

确保调用session_start()。使用篡改数据检查已发送和已接收请求的标头。您从服务器查找Set-Cookie标头,从客户端查找Cookie标头。这应包含您的PHPSESSID。如果您没有看到这个,那么您的会话就不会启动。祝你好运!