0

有没有更好的方法来做到这一点?我在我的初始代码中设置了一个会话并在之后直接引用它,但它在第一次迭代时没有得到识别。

用户输入激活密钥,代码会根据数据库对其进行检查,如果存在则将密钥放入会话中以供以后进一步使用。它从浏览器第一次打开时就不起作用,但之后总是起作用……这很奇怪。

创建会话:

session_start();
....
$_SESSION['SESS_KEY'] = $member['key'];    
session_write_close();
header("location: http://example1.com")
exit();

检查会话:

 session_start();
 if(!isset($_SESSION['SESS_KEY']) || (trim($_SESSION['SESS_KEY']) == '')) {
    header("location: http://example2.com");
 }

这可能是我使用 session_start() 和 header 的方式,但我在砖墙上,花了太长时间试图理解它。任何建议将不胜感激。

4

1 回答 1

0

这是正常行为,一旦创建,它就会在来自客户端浏览器的下一个请求的请求标头中发送。您无法在同一页面上访问刚刚创建的会话变量值。在这种情况下,您可以只创建一个变量并在需要时访问它,在 PHP 中的单个请求处理中可以跨不同文件访问变量。

于 2012-09-10T18:36:18.003 回答