我一直在努力解决这个问题很长一段时间,我已经阅读了几十篇关于它的帖子,但没有任何东西帮助我解决这个问题。
我设置了支票,因此如果您没有登录我的网站,它会将您发送到登录页面,其中包含$_GET
变量,其中包含成功登录后需要重定向的信息。
在登录页面上,我将HTML表单发送到“checklogin.php
”文件,以便在用户名和密码与数据库匹配时登录用户(我还会传递原始$_GET
这次重定向作为$_POST
变量的变量,以保持“面包屑”连接)。如果登录信息匹配,我启动会话并为会话变量分配有关用户的一些信息。
在页面底部,成功登录后,我这样做是为了回到以前的位置:
$go = "http://something/page.php?id=".$_POST['breadcrumb'];
header($go);
这很有效......最初(会话变量成功传递给page.php
)。但是,当用户点击进入下一页时,会话结束并且他/她不再登录。
太令人沮丧了! session_start()
位于每个页面的顶部。当用户刚刚登录而没有动态标头重定向(没有$_POST['breadcrumb']
)时,会话就会成功。< / p>
我尝试了很多不同的解决方案,并没有解决这个问题。
答案 0 :(得分:0)
您是否检查过所有代码以确保某处没有会话毁坏? 您也可以尝试使用$ _SERVER [&#39; REQUEST_URI&#39;];获取重定向网址然后只需将其插入标题代码即可。
header("location: <breadcrumb>);
答案 1 :(得分:0)
问题是我没有在整个网站上保持我的网址重定向一致。有时我有
www.website.com/home.php
有时我有
/home.php
搞砸了$ SESSION。
解决方案是让我的标题在URL的开头没有(或一直都是)“www.website.com”的情况下一直重定向。