我在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
会停留在页面上,除非我刷新。
谁能告诉我为什么会这样?
答案 0 :(得分:5)
拿这个部分:
if(isset($_POST['submitName'])) {
$_SESSION['name'] = $_POST['textName'];
}
在此之上:
if(empty($_SESSION['name'])) {}
当您提交表格时,开头;因为会话是空的,因此表单仍然存在,然后会话被初始化。当您刷新页面时,会话检查有效。