我的网站上有一个用于邀请朋友的表单.这是一个简单的文本字段和一个提交按钮.如果有错误,我会重定向回此页面并显示错误消息(如果它们是会话变量集).
if (isset($_SESSION['invite_error'])) { echo $_SESSION['invite_error']; unset($_SESSION['invite_error']); }
但是,如果我离开此页面并返回到该页面,则仍会显示错误消息.如果我离开并再次回来,它将会完成.当我刷新那个页面时它是一样的… 1刷新不会摆脱它,但2会.我不能破坏整个会话,我只是想取消设置这个变量. PHP版本是5.2.5 build 6,注册全局变量是关闭的,我在这个页面的顶部调用了session_start(),我也尝试过使用no-cache标头.
编辑:添加完整代码.
<?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()和session_start()调用.
由于会话cookie在发送到浏览器的标头中定义,并且在启动缓冲区时标头会发送到浏览器,因此必须在缓冲区之前启动会话.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。