php - 取消设置 session 变量时出现问题

标签 php session session-variables

我的网站上有一个用于邀请 friend 的表格。这是一个简单的文本字段和一个提交按钮。如果出现错误,我将重定向回此页面并在它们是 session 变量集时显示错误消息。

if (isset($_SESSION['invite_error'])) {
   echo $_SESSION['invite_error'];
   unset($_SESSION['invite_error']);
}

但是,如果我离开此页面并返回到该页面,错误消息仍会显示。如果我离开并再回来一次,它就会完成。当我刷新该页面时也是如此...1 次刷新不会摆脱它,但 2 次会。我不能破坏整个 session ,我只想取消设置这个变量。 PHP 版本为 5.2.5 build 6,注册全局变量已关闭,我在本页顶部调用 session_start(),我也尝试过使用无缓存 header 。

编辑:添加完整代码。

<?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");
?>

最佳答案

在开始输出缓冲之前启动 session 。因此,切换 ob_start()session_start() 调用。

由于 session cookie 是在发送到浏览器的 header 中定义的,并且 header 是在您启动缓冲区时发送到浏览器的,因此您必须在缓冲区之前启动 session 。

关于php - 取消设置 session 变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025300/

相关文章:

PHP OOP 最佳实践或如何正确编码?

php - 发布前预览音频文件

php - MYSQL 用户定义的@VARIABLE

asp.net - session 最佳实践

php - 防止在 Yii 框架上使用 ajaxButton/ajaxSubmitButton 加载 jQuery Assets

session 持续时间超过谷歌分析中的默认值(30 分钟)

session - 身份验证 : JWT usage vs session

php - 蜜 jar 反垃圾邮件技术。如何为每个站点加载的隐藏字段随机生成一个名称?

PHP如何使用标题(重定向)将数据发送到另一个页面

php - 查找数字或第二大数字