我的网站上有一个用于邀请朋友的表格。这是一个简单的文本字段和一个提交按钮。如果出现错误,我会重定向回此页面并显示错误消息(如果它们是会话变量集)。
if (isset($_SESSION['invite_error'])) {
echo $_SESSION['invite_error'];
unset($_SESSION['invite_error']);
}
但是,如果我离开此页面并返回到该页面,错误消息仍然会显示。如果我离开并再回来一次,事情就完成了。当我刷新该页面时也是一样...1 次刷新不会消除它,但 2 次刷新会消除它。我无法销毁整个会话,我只想取消设置这个变量。 PHP 版本是 5.2.5 build 6,注册全局变量已关闭,我在本页顶部调用 session_start(),我也尝试过使用无缓存标头。
编辑:添加完整代码。
<?php
ob_start();
session_start();
$user_id = $_SESSION['user_id'];
$user_name = $_SESSION['user_name'];
if ($user_id==null) header("Location: /login.php");
if (isset($_SESSION['invite_errors'])) {
$error = $_SESSION['invite_errors'];
unset($_SESSION['invite_errors']);
}
require_once("ui/header.php");
?>
<div id="invite" class="content">
<?php if($error) { ?>
<div class="errors round">
<?php echo $error ?>
</div>
<?php } ?>
<h3>Invite Your Friends</h3>
<div class="invite-form">
<form method="post" action="controllers/invite.php">
<div class="row">
<textarea class="txt-area" name="emails" id="emails" rows="5"></textarea>
<div class="tip">Separate multiple email addresses with ,</div>
</div>
<div class="row-submit">
<input type="submit" name="submit" id="submit" class="submit-btn" value="Submit" />
</div>
</form>
</div>
</div>
<?php
require_once("ui/footer.php");
?>
在开始输出缓冲之前启动会话。所以,切换ob_start()
and session_start()
calls.
由于会话cookie是在发送到浏览器的标头中定义的,并且当您启动缓冲区时标头会发送到浏览器,因此您必须启动会话before缓冲区。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)