$ _SESSION ['pseudo'] = null,虽然它显然不应该

时间:2019-09-25 15:27:39

标签: php session header isset

让我解释一下:我有3个页面(登录后一个页面,一个过渡页面,以及我的主页。) 因此,我希望阻止访问我的应用程序,因为如果断开会话连接,然后返回,即使会话关闭,您仍然可以访问该网站。这就是为什么我要使用!isset($_SESSION['pseudo'])

第一页:

<form method="post" action="<?php echo serverRoot; ?>?action=connect">
    <input required class="input-login" name="pseudo" type="text" id="pseudo" placeholder="Login">
    <input required class="input-login" type="password" name="password" id="password" placeholder="Password">
    <input id="connect" type="submit" value="Connect" />
</form>

如您所见,提交后,我们执行了“连接”操作。

这里是“连接”的情况:

if (isset($_GET['action'])) {

    switch ($_GET['action']) {

    case 'connect':
            {
                showPage(adresseRoot . 'PHP/View/', 'FormConnection.php', "Connection");
                break;
            }

第二页:

$user = UserManager::getByPseudo($_POST['pseudo']);

if ($user->getPassword() === 'md5'.md5($_POST['password'].$_POST['pseudo']))
    {
        $_SESSION['pseudo'] = $user->getLogin();
        $_SESSION['id'] = $user->getIdUtilisateur();
        $message = '<p>Welcome ' . $user->getLogin() . ', !</p>';
        echo $message;
        header("refresh:3;url=Paths.php?action=listMenu");
    } 

您可以看到$_SESSION['pseudo']现已设置。不是NULL! 然后您有header("refresh:3;url=Paths.php?action=listMenu")

case 'listMenu':
{
    if(!isset($_SESSION['pseudo'])){

        showPage(adresseRoot . 'PHP/View/', 'FormConnection.php', "Connection"); //You don't have the right to go to the Website
        break;

    }
    else{
        showPage(adresseRoot . 'PHP/View/', 'ListMenu.php', "Main page"); //You have the right to go to the Website
        break;
    }
}

事实是,当我输入正确的登录名时,我被重定向到连接页面,而不是在我的主页上……Wtf?

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我找到了。

我在Paths.php的顶部添加了onFaxChange(value){ this.ngM_Fax = value.substring(0, value.length - 1); }

&我已经删除了所有其他页面的session_start()