0

我已经为此苦苦挣扎了很长时间,并且已经阅读了数十篇与之相关的帖子,但没有任何东西可以帮助我解决这个问题。

我有一个检查设置,所以如果您没有登录我的网站,它会将您发送到登录页面,其中包含一个$_GET变量,其中包含成功登录后需要重定向回的信息。

在登录页面上,我将 HTML 表单发送到“ checklogin.php”文件,以便在用户名和密码与数据库匹配的情况下登录用户(这次我还将$_GET重定向的原始变量作为$_POST变量传递,以保持 '面包屑的连接)。如果登录信息匹配,我将启动一个会话并为会话变量分配有关用户的一些信息。

在页面底部,成功登录后,我这样做是为了回到之前的位置:

$go = "http://something/page.php?id=".$_POST['breadcrumb'];
header($go);

这有效......最初(会话变量成功传递给page.php)。但是随后用户点击进入的下一页,会话结束并且他/她不再登录。

太令人沮丧了!位于session_start()每一页的顶部。当用户在没有动态标头重定向(没有$_POST['breadcrumb'])的情况下登录时,会话始终是成功的。

我尝试了许多不同的解决方案,但没有解决这个问题。

4

2 回答 2

0

您是否检查了所有代码以确保某处没有会话破坏?您也可以尝试使用 $_SERVER['REQUEST_URI']; 要获取您的重定向网址,然后只需将其插入标题代码中即可。

header("location: <breadcrumb>);
于 2013-02-23T21:08:49.327 回答
0

问题是我没有在整个网站上保持我的 url 重定向一致。有时我有

www.website.com/home.php

有时我有

/home.php

这搞砸了$SESSION。

解决方案是在 URL 的开头保持我的标头重定向全部一致,而没有(或全部一致)“www.website.com”。

于 2013-03-03T18:41:36.217 回答