在POST之后,empty()检查未验证

时间:2016-11-22 11:29:55

标签: php

我在header.php设置会话变量:

<?php

session_start();

if(empty($_SESSION['name'])) {
    ?>
    No name set! <br>
    <form action="" method="post">
        <input type="text" name="textName"/>
        <input type="submit" name="submitName" value="Log in"/>
    </form>

    <?php
    if(isset($_POST['submitName'])) {
        $_SESSION['name'] = $_POST['textName'];

    }
}

并验证我的索引上是否设置了name变量:

<?php

include 'header.php';

if(!empty($_SESSION['name'])){
    ?>
<a href="session_kill.php">Log out</a>
<?php
}

?>

我可以确认会话变量存在,因为会出现logout链接。

通过表单提交名称后,会话变量会更新,但empty()检查不会再次发生,这意味着textarea会停留在页面上,除非我刷新。

谁能告诉我为什么会这样?

1 个答案:

答案 0 :(得分:5)

拿这个部分:

if(isset($_POST['submitName'])) {
    $_SESSION['name'] = $_POST['textName'];

}

在此之上:

if(empty($_SESSION['name'])) {}

当您提交表格时,开头;因为会话是空的,因此表单仍然存在,然后会话被初始化。当您刷新页面时,会话检查有效。