我有以下php代码:
<?php session_start();
....
$result=$db->query($query);
$row=$result->fetch_assoc();
$_SESSION['id']=$row['id'];
header('Location: http://www.blabla.com/successLoginPage.php');
php代码:successLoginPage.php
<?php session_start();
echo $_SESSION['id'];
这是问题所在。当我做所有的事情时,我在successLoginPage.php中看不到任何内容,大约10分钟后我刷新页面并看到正确的变量。我试图清除缓存,ctrl + f5,关闭浏览器和计算机,但没有任何变化 - 仍需要等待10分钟。 chrome和ie8中存在此问题。
我该如何解决这个问题?
提前致谢。
*编辑1:
我使用以下代码添加logout.php页面:session_start(); session_destroy(); unset($ _ SESSION);当我成功登录并收到正确的回音时,我按下注销链接,然后使用其他帐户登录 - 一切都很棒。 第一个问题 - 我可以第一次通过第一个帐户登录,第二次通过第二个帐户登录吗?这个可以吗? 第二个问题 - 当我无法登录时,我再次看到冻结。如果我在此之后尝试使用正确的帐户登录,我将看到有关失败登录的旧信息。我需要做什么?
答案 0 :(得分:1)
可能有些明显,但是...... $ row ['id']实际上是一个数字/字符串,而不是NULL? :p你可以尝试
var_dump($_SESSION['id']);
而不是
echo $_SESSION['id'];
答案 1 :(得分:0)
你试过吗?
session_write_close();
设置会话变量后?
答案 2 :(得分:0)
首先,您没有显示整个代码,在这种情况下,它非常重要。
<?php session_start();
....
$result=$db->query($query);
$row=$result->fetch_assoc();
$_SESSION['id']=$row['id'];
header('Location: http://www.blabla.com/successLoginPage.php');
// Mystery ???
当您调用标题('Location:xxx')时,它不会停止脚本,因此标题后面的所有内容都会被执行。
您可以添加函数die以防止在重定向后执行任何其他代码。
<?php session_start();
....
$result=$db->query($query);
$row=$result->fetch_assoc();
$_SESSION['id']=$row['id'];
header('Location: http://www.blabla.com/successLoginPage.php');
die(); // No more code executed after this //
答案 3 :(得分:0)
解决了这个问题。 我删除了所有登录文件并从头开始重写它们现在似乎全部工作了。不知道bug在哪里。