会话在首次运行时未被识别

时间:2012-09-10 18:26:40

标签: php

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

用户输入激活密钥,代码会对数据库进行检查,如果存在,则会将密钥放入会话中以供日后使用。它从浏览器首次打开时起作用,但此后一直有效......这很奇怪。

创建会话:

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()和标题的方式,但我在砖墙上并且花了太长时间试图理解它。任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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