0

我会尽我所能解释我的情况,我在这里看了几个问题,但似乎没有一个能回答我的问题。

我使用我自己的自定义 MVC 框架创建了一个网站,效果很好。

我有一个简单的登录命令,它也可以正常工作,只要他们的电子邮件和密码正确,它就会正确返回一个客户 ID 和他们的名字。

一旦它们被验证,而不是返回数据,我只是设置了几个会话变量,所以当它们返回到主页(现在通过会话变量登录)时,它们会在购物车中显示它们的名称和项目,而不是“欢迎访客”。

        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 变量时,由于未定义,它会引发错误,但是如果我在会话启动下方定义它,则当用户登录时在,变量总是假的,他们永远不会在购物车中显示他们的名字或物品。

4

4 回答 4

0

尝试在之后添加以下内容session_start();

    if(!isset($_SESSION["LoginStatus")){
         $_SESSION["LoginStatus"] = false;
    }

如果我理解正确,应该解决问题。

于 2013-06-02T14:17:42.380 回答
0

您可能需要使用空标签进行检查:

if(!empty($_SESSION["LoginStatus"])){

   code to do as loggined user
 }else{
    code to 
  }
于 2013-06-02T14:19:21.180 回答
0

使用 if 检查

isset($_SESSION["LoginStatus"])

在检查其值之前,如果已设置,则检查其值,如果未设置,则根本没有登录

于 2013-06-02T14:01:23.400 回答
0

当没有用户登录时,$_SESSION[LoginSatus"] 为空。

您必须在第一个脚本中将其设置为 false 或在第二个脚本中检查它是否为空/isset。

于 2013-06-02T14:04:31.020 回答