【问题标题】:Codeigniter session set_flashdataCodeigniter 会话 set_flashdata
【发布时间】:2015-03-31 22:10:28
【问题描述】:

我在 CI 中使用 set_flashdata 时遇到问题。

控制器:

if($var == true) {
        // some action here
        $this->session->set_flashdata('success', 'Success');
        redirect($_SERVER['HTTP_REFERER']);
    } else {
        $this->session->set_flashdata('fail', 'Error');

        redirect($_SERVER['HTTP_REFERER']);
    }

查看:

<?php if (isset($_SESSION['fail'])): ?>
<p class="text-danger"><?php echo $_SESSION['fail'] ?></p>
<?php if (isset($_SESSION['success'])): ?>
<p class="text-success"><?php echo $_SESSION['success'] ?></p>

无论如何,我都没有看到任何消息。 尝试使用var_dump($this-&gt;session-&gt;flashdata('success'));

我该如何解决这个问题?

有什么想法吗?

谢谢。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    首先,我将确保您已正确初始化所有内容 ($this-&gt;load-&gt;library('session');),并且您已在配置文件中设置了加密密钥。

    其次,Codeigniter 不使用 PHP 的原生 $_SESSION,它们实现了自己的。所以你不应该测试它是否设置为&lt;?php if (isset($_SESSION['fail'])): ?&gt;

    我会尝试类似的东西:

    <?php if(isset($this->session->flashdata('fail'))): ?>
    <p class="text-danger"><?php echo $this->session->flashdata('fail'); ?></p>
    

    【讨论】:

    • $autoload['libraries'] = array('session'); 如您所见,它已设置为自动加载,我尝试了您的建议,但页面上仍然没有看到任何内容。
    • 我刚刚在一个视图中测试了:$var = TRUE; if($var == true) { // some action here $this-&gt;session-&gt;set_flashdata('success', 'Success'); } else { $this-&gt;session-&gt;set_flashdata('fail', 'Error'); } ?&gt; &lt;p class="text-danger"&gt;&lt;?php echo $this-&gt;session-&gt;flashdata('success'); ?&gt;&lt;/p&gt; 并且它有效。它给了我成功的警报。它必须在您的配置中。我会再问一次,您确定您的加密密钥已设置吗?如果您希望我们查看,您可以使用您的配置编辑您的问题。
    • 我有加密密钥,但它不起作用。你想让我在我的问题中添加什么?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2013-08-13
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多