我会尽力解释我的情况,我已经在这里看了几个问题,但似乎没有人回答我的问题。
我使用自己的自定义MVC框架创建了一个网站,效果很好。
我有一个简单的登录命令也可以,它正确返回一个customerID和他们的名字,只要他们的电子邮件和密码是正确的。
一旦验证,而不是返回数据,我只需设置几个会话变量,所以当它们返回到主页(现在通过会话变量登录)时,会显示它们的名称和项目购物车,而不是“欢迎访客”。
if($record = $stmt->fetch())
{
$_SESSION["Name"] = $record["FirstName"];
$_SESSION["CustomerID"] = $record["ID"];
$_SESSION["LoginStatus"] = true;
$response->SetViewName("DefaultView"); // Login Success, back to homepage
}
else
{
$response->SetViewName("LoginView"); // Login Failure, back to login view
}
在我的header.php文件中,我有html代码,显示相应的欢迎消息,如果他们是访问者,他们会显示访问者,如果没有($ _SESSION [“LoginStatus”] == true)他们会被显示他们的名字和购物车中的物品......
<?php
if($_SESSION["LoginStatus"] == false) // if visitor
{
echo '<p class="welcome">Welcome visitor, please <a href="Index.php?cmd=Login">log in</a> or <a href="Index.php?cmd=Register">register</a></p>';
}
else if($_SESSION["LoginStatus"] == true) // if logged in
{
echo "<p class='welcome'>Welcome back ".$_SESSION["Name"].", you have ".$_SESSION["ItemsInCart"]." items in your cart</p>";
}
?>
因此,当一个新用户访问该网站时,他们会启动一个会话,但是当检查了LoginStatus变量时,由于未定义它会抛出错误,但是如果我在会话下面定义它就会启动,用户登录时,变量始终为false,并且永远不会在购物车中显示其名称或项目。
答案 0 :(得分:0)
使用if check
isset($_SESSION["LoginStatus"])
在检查其值之前,如果已设置,则检查其值,如果未设置,则它们不会全部登录
答案 1 :(得分:0)
当没有用户登录时,$ _SESSION [LoginSatus“]为空。
您必须在第一个脚本中将其设置为false,或者检查第二个脚本中是否为空/ isset。
答案 2 :(得分:0)
尝试在session_start();
if(!isset($_SESSION["LoginStatus")){
$_SESSION["LoginStatus"] = false;
}
如果我理解的话,应该解决问题。
答案 3 :(得分:0)
您可能需要使用空标签来检查:
if(!empty($_SESSION["LoginStatus"])){
code to do as loggined user
}else{
code to
}