2010-05-25 78 views
0

在我的注册脚本PHP会话值我有:失去了一个脚本后,重定向,但保留重定向后另一

// Save registration information into the database 

// Set sessions 
$_SESSION['var1'] = 'somevalue'; 
$_SESSION['var2'] = 'anothervalue'; 

header('Location: /somewhere'); 
exit(); 

然后在我的登录脚本我有:

// Check if user provided correct login credentials 
if (correct) { 
    $_SESSION['var1'] = 'somevalue'; 
    $_SESSION['var2'] = 'anothervalue'; 
} 

header('Location: /somewhere'); 
exit(); 

发生了什么事是会话变量在注册脚本中的头部重定向后丢失,但在登录脚本中重定向后保留。

我检查session_id()在两页,它们具有相同的价值,包括session_start()在每个页面的顶部,基本上尝试解决#2发现这个共同的问题,但不知何故似乎没有什么工作。

我开始怀疑它是否与我的服务器配置而不是我的代码有关。

回答

1

您是否在www.example.com和example.com之间重定向?由于这些是两个不同的领域。

+0

没有其重定向到同一个域。不知道有什么问题:( – Iuhiz 2010-05-25 04:26:21

-3

为什么使用exit()?标题(“location:/ somewhere”);将阻止脚本的其余部分被执行。

+4

只有头部成功,如果失败(例如,输出已经开始)脚本将发出警告并继续,出口是一个很好的安全网 – 2010-05-25 04:08:13

+0

嗯,我没有' t知道这一点。谢谢! – 2010-05-25 04:31:16

+1

头不会终止任何情况下的脚本执行 – 2010-11-20 19:22:04

1

有关session_write_close的手册页有很多有此类或类似问题的人的评论。有人说这是通过调用“标题(“位置”行之前session_write_close固定

这个帖子:http://us.php.net/manual/en/function.session-write-close.php#86791

他说,没有为他工作,但调用session_regenerate_id()没有工作(这个变化。会话cookie,并强制php发送cookie。

可能需要再次发送cookie。我读过一些人说,有些浏览器在重定向之后不发送cookie,除了他们刚刚获得的cookie原网址

+0

刚刚尝试添加session_generate_id()但该死的,仍然不工作 – Iuhiz 2010-05-25 09:11:13

+1

你试过session_write_close()吗? – JasonWoof 2010-05-26 00:05:51

0

我意识到这是一个旧的线程,但我只是将网站移动到新闻专用IP与证书和会议不会传递一个标题(“位置:”)重定向...在旧的位置,他们传递的很好。唯一有效的工作是添加session_regenerate_id(true);在重定向之前。我仍然好奇为什么?那里有任何想法?

0

我有同样的问题,之后我已经尝试了一切:年底

exit(); 

session_write_close(); 

要么$_SESSION['user'] = $user;session_register("user");

所有不可能性几何位置在session_start();

页...我发现在我的配置中会话保存路径的文件夹不可写。

一旦设置为可写,并设置正确的用户,一切工作就像一个魅力。

要找到您保存路径,看看你的的phpinfo()什么是下的session.save_path