字符串不更新

时间:2014-12-10 13:26:02

标签: php session pdo

我正在使用MVC和PDO。我试图根据会话是否为空来更新字符串,所以在我的index.phtml中我有:

<?php if (!empty($_SESSION)) :?>
    <p>
        Welcome back, <a href="logout.php"><?php echo $_SESSION["info"]["users_name"];?></a>
    </p>
<?php endif; ?>
<?php if(empty($_SESSION)) : ?>
    <p>
        Hello, would you like to <a href="" data-toggle="modal" data-target="#myModal">sign in</a>
    </p>
<?php endif; ?>

因此,如果会话为空,则显示&#34;您好,您想登录&#34;通过单击登录,它将打开登录模式,如果会话不为空,则显示&#34;欢迎回用户&#34;并将链接更改为logout.php。我遇到的唯一问题是,当会话不为空时,它不会更新字符串。我的登录模式完美无缺,就像用户键入错误的密码一样,它重定向到index.php并说'#34;错误的传递&#34;但是如果用户登录它重定向到index.php但不更新字符串。

如果有帮助,这是我的index.php:

<?php
require("Models/UserData.php");
$view = new stdClass();
$view->pageTitle = 'Login';

if(isset($_POST["email"]) && isset($_POST["password"])) {
    $userVeri = new UserData();

    $result = $userVeri->login($_POST["email"],$_POST["password"]);

    if (!empty($result)) {
        session_start();

        $_SESSION["info"] = $result;

        header("Location: index.php");

        exit;
    } else {
        echo "Wrong pass";
    }
}

 // Then verify it


 require("Views/index.phtml");

在我的index.phtml中,我有文本输入名为&#34; email&#34;和#34;密码&#34;所以每个人都完美地联系起来,似乎字符串没有更新。有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

移动

session_start();

到文件的顶部,它必须是文件中执行的第一件事。

在使用会话变量进行任何写入或读取或将任何输出写入浏览器之前,会话必须正在运行。重要的是,你不希望会话存在,这取决于他们是否拥有一个具有适当价值的正确密钥;如果你的代码中的某个点可能需要会话密钥的会话值,那么你总是希望有一个持续的会话,即从头开始调用它,以便在你需要它时可以使用它,而不需要你必须了解什么打破了它。

同样重要的是要知道在session_start()中调用a.php不会使会话在b.php中生效,除非在session_start()中调用b.php。或者,如果您将a.php重定向到a.php(刷新),那么除非您在文件开头有session_start(),否则会话将不会生效,因此使用if语句来确定会话是否应该如果工作开始,那么持续进行是不会有效的,价值将在两者之间失去。