会话变量未进入下一页

时间:2013-06-17 02:05:47

标签: php session

我刚刚开始使用会话并且有些头痛,我昨晚有这个工作,现在正在打开它......不再有效。

在我的登录处理器中,如果一切正常,我会有以下内容。这个脚本工作正常,我已经回应了会话变量以确保数组工作,并且确实如此。

$username - > post from login script
$encrypt_password -> created from password check further up the script      

        {

                    $session_name = 'LOGIN'; // Set a custom session name
                    $secure = false; // Set to true if using https.
                    $httponly = true; // This stops javascript being able to access the session id. 
                    $cookie_lifetime = '3600';
                    $cookie_path = '/';
                    $cookie_domain = '127.0.0.1';

                    session_set_cookie_params($cookie_lifetime, $cookie_path, $cookie_domain, $secure, $httponly); 
                    session_name($session_name); // Sets the session name to the one set above.

                    $group = $row['group_type'];

                    $user_browser = $_SERVER['HTTP_USER_AGENT']; /*grabs browser info*/

                    $user_id = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $username); /*XSS Protection*/
                    $group_id = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $group);   /*XSS Protection*/

                    session_start();
                    $_SESSION['user']=$user_id;
                    $_SESSION['group_name']=$group_id;
                    $_SESSION['login_string'] = hash('sha512', $user_browser.$encrypt_password);
                    session_write_close();

                    header("location:".$group_id."_index.php");                         
                }

我创建了一个包含文件的包含文件,该文件包含在每个受保护页面上的会话中,这就是它崩溃的地方。我为每个if语句创建了自定义错误代码,并且发现此处的if语句失败。回应会话变量或者晚上打印会话数组不会返回任何内容。

 $session_name = 'LOGIN'; // Set a custom session name
        $secure = false; // Set to true if using https.
        $httponly = true; // This stops javascript being able to access the session id. 
        $cookie_lifetime = '3600';
        $cookie_path = '/';
        $cookie_domain = '127.0.0.1';

        session_set_cookie_params($cookie_lifetime, $cookie_path, $cookie_domain, $secure, $httponly); 
        session_name($session_name); // Sets the session name to the one set above.
        session_start(); // Start the php session
        session_regenerate_id(false); // regenerated the session, delete the old one.     

    if(isset($_SESSION['user'],$_SESSION['group_name'], $_SESSION['login_string']))

我在改变之前改变了用户组的工作方式,但是没有一个变量能够完成。顺便说一句,我正在从他的啧啧中学习:create a secure login script in php and mysql

每次用户访问受保护的页面时,我还需要调用会话参数吗?

提前感谢任何指针。

2 个答案:

答案 0 :(得分:1)

尝试将session_start();放在所有内容的顶部,最重要的是在你召集会话之前。你在开始之前就打电话给session_name($session_name);

it=session

答案 1 :(得分:0)

您在每个页面上重新生成会话,这会导致上一个会话销毁数据。

删除session_regenerate_id(false);