我有用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设置它,但在查看视图后,它似乎取消了自己。有什么建议吗?
答案 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>