PHP:特定页面不会使其会话变量在下一页中可访问

时间:2014-02-01 15:45:06

标签: php

我的网站有一个注册页面和登录页面。当用户注册时,我希望他的一些细节存储在 SESSIONS 中,以便它可以 可在下一页访问。这适用于本地服务器,但它不在实时服务器上。

我在根目录中有login.php和signup.php,我在根目录中也有三个文件夹; SIGNUP2 文件夹(这个用户具有signup2.php) 完成注册), HOME 文件夹(这有一个home.php,这是用户成功登录时网站的主页)和 PROFILE 文件夹 (其中details.php用于查看用户的个人资料)。 PROFILE 中有一个.htaccess文件,它仅用于重写与其相关的网址。

login.php开始,如果用户经过验证并且重定向到header("Location:http://www.example.com/home/home.php");,则会创建会话。这个 在实时服务器上工作正常,会话数据按预期使用。但是,如果用户在signup.php注册,则会在何时创建会话 他/她的详细信息已经过验证并重定向到header("Location:http://www.example.com/signup2/signup2.php");但会话返回空数组 通过print_r($_SESSION);

我创建了一个文件printSession.php并将其存储在主页文件夹中。如果我前往它header("Location:http://www.example.com/home/printSession.php"); 它仍然通过print_r($_SESSION);打印空数组,但如果我从login.php重定向到它,它会打印出数据。

所有文件的顶部都有session_start();。在signup.php。

中使用时,print_r($_SESSION);打印出数据

signup.php的PHP代码:

all the codes are working correctly and data are getting stored correctly in MySQL db
$_SESSION['token'] = $token; 
$_SESSION['name'] = $name;  
 header("Location:http://mursali.com/Profile/test.php");

提前致谢。

1 个答案:

答案 0 :(得分:0)

您应该在每次重定向之前调用session_write_close(),以确保会话已被写下并关闭。

http://uk3.php.net/manual/en/function.session-write-close.php