会话变量不再持久

我写了一个在过去3个月里一直工作的代码。 现在突然间,我发现我的PHP _Session变量不再在我登录的不同页面之间持续存在。 请注意,代码实际上适用于本地,但不适用于我的服务器(papahost)。

下面是我想要做的一个非常简单的版本(SESSION从A到B):

class function.php

<?php 
function sec_session_start()
{
        //other code goes here 
        session_name('sec_session_id');
        $secure = SECURE;

        // This stops JavaScript being able to access the session id.
        $httponly = true;

        if (ini_set('session.use_only_cookies', 1) === FALSE) 
        {
           header("Location: ../error.php?err=8");
           session (ini_set)
           exit();
        }
       $cookieParams = session_get_cookie_params();
       session_set_cookie_params($cookieParams["lifetime"], 
       $cookieParams["path"], 
       $cookieParams["domain"], $secure, $httponly);
       //end of other code
    session_start();
}
?>



class a.php

<?php 
include_once 'function.php';
sec_session_start();
$_SESSION["test"] = "this is a test";
$url = "b.php";
echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
echo '</noscript>'; 
exit;
?>



class b.php

<?php 
include_once 'includes/functions.php';
sec_session_start();
echo($_SESSION["test"]); 
?>

类b.php的预期输出是“这是一个测试”,但实际的输出是“”在我的服务器上,因为由于未知原因,会话数据不是持久的。 正如我所说,它在当地完美运作。 任何人都有线索可能是什么问题? 这可能是来自php.it或我错过的CPanel属性的问题吗?

我注意到,在session.start()函数在function.php中执行后没有创建PHPSESSID。

感谢您的帮助!


session_start()通过$secure = SECURE;sec_session_start() 。 你不应该在session_start()之前定义和分配任何变量。

编辑:实际上试着把它一步一步地带到上一层,并以某种方式与其他会话功能结合起来。 在它之前不使用标题。

编辑:看到这里(第1点)由第二行session_start()引起的大问题,解决非常简单。

链接地址: http://www.djcxy.com/p/60247.html

上一篇: Session variable no longer persistate

下一篇: SESSION data is not passing along