我搜索过高低,但我还没有找到解决这个特定问题的方法。
我有一个网站,清洁公司使用该网站允许其客户登录,查看他们拥有的属性,并选择一个输入清洁日期。用户使用存储在数据库中的用户名和密码登录。用户ID从数据库返回并保存为会话变量,然后用于访问整个站点的信息:
session_start();
include 'templates/login.php';
include 'entity/loginQuery.php';
$MainEntity = new loginQuery();
if(!empty($_POST)){
$MainEntity->setUsername($_POST["username"]);
$MainEntity->setPassword($_POST["password"]);
$MainEntity->processSearch();
if($MainEntity->getUserID() != ""){
$_SESSION["userID"] = $MainEntity->getUserID();
header ("Location: property_selection.php");
}
}
“属性选择”页面使用用户ID来填充具有该用户属性的页面。选择一个之后,用户被发送到他们可以输入他们信息的房屋页面。这是问题发生的地方:
我创建了一个按钮,将它们返回到属性选择页面,以便他们可以选择其他属性。该按钮运行此javascript代码:
function back(){
window.location.replace('http://www.example.com/property_selection.php');
}
单击此按钮后,用户将进入属性选择页面,但$ _SESSION ['userID']现在为空。因为它是空的,所以屏幕上不会显示任何内容,但是在任何数据库查询发生之前,用户都会被发送到访问被拒绝的页面。
最奇怪的是,在重新登录网站后,再也不会遇到这个问题。一切都很完美。只能通过先关闭浏览器然后再次登录来重新创建问题。
我有session_start();在每个页面的开头,我绝对肯定它正在重定向到正确的URL。任何想法?
PS - 对于长篇文章感到抱歉,但我希望尽可能具体。