PHP会话变量一直重置

时间:2014-08-25 21:36:10

标签: php session isset

我有用Yii框架编写的网站(只是值得一提),它有一些观点。并且每个视图都包含相同的会话变量,然后检查它是否已经设置。如果还没有设置做某事,否则不要做。问题是,当我设置变量时,当我转到另一个视图时,它会自动取消设置。这是一个例子:

<?php
    if(!isset($_SESSION['cookieNotifier']))
{ ?>

<div id="cookies>
   <button style="margin-top:5px; margin-right:10px;" class="lelbutton" onclick="hideClick()"><b>HIDE</b></button>
</div>

<?php } ?>

<script>
function hideClick(){
   $( "#cookies" ).hide(); 
   <?php $_SESSION['cookieNotifier'] = 1; ?>
}
</script>

我使用默认值1设置它,但在查看视图后,它似乎取消了自己。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我认为和Fred -ii-提到的一样。

您可以使用以下代码进行故障排除(只需在发生任何事情之前将其添加到PHP代码的顶部)。

<?php session_start(); ?>

问题可能是会话并非总是启动,因此它会丢失$ _SESSION []值。

答案 1 :(得分:-1)

您应该尝试使用Yii等效项来存储用户会话变量。查看CWebUser的文档。 http://www.yiiframework.com/doc/api/1.1/CWebUser#setState-detail

您的示例并使用CWebUser状态:

<?php if(is_null(Yii::app()->user->getState('cookieNotifier', null))): ?>
    <div id="cookies>
        <button style="margin-top:5px; margin-right:10px;" class="lelbutton" onclick="hideClick()"><b>HIDE</b></button>
     </div>
<?php endif; ?>
    <script>
        function hideClick(){
            $( "#cookies" ).hide();
            <?php Yii::app()->user->setState('cookieNotifier', 1); ?>
        }
    </script>