我有以下设置:
访问任一页面时,我都有一个“标题介绍动画”。我只希望用户在第一次访问页面时看到此动画,而不是在刷新/访问同一会话中的其他子页面时重复此动画。
我尝试过以下操作:
$disableAnimationOnOtherPages;
if(session_id() === '')
{
// session has NOT been started
session_start();
echo "SESSION WAS NOT SET";
}
else
{
// session has been started
echo "SESSION HAS BEEN SET";
$disableAnimationOnOtherPages = true;
}
因此,当我第一次访问任何页面时,我设置/启动会话,然后如果我刷新或转到子页面,则会设置$disableAnimationOnOtherPages = true;
,以便我可以将其用作禁用的参考我的javascript动画在我包含的.js文件中进一步向下。
但不管我做什么,我只会得到“会话没有开始”。
关于在这种情况下我做错什么的任何想法?
答案 0 :(得分:1)
session_start();
并不意味着“创建新会话”,这意味着创建或继续之前启动的会话,然后您可以使用$ _SESSION来存储值。
所以你真正想做的是:
session_start();
if(!isset($_SESSION['disableAnimation']))
{
// Session wasn't started, show animations.
$_SESSION['disableAnimation'] = false;
}
else
{
// Session has been started previously, disable animations.
$_SESSION['disableAnimation'] = true;
}
然后您可以使用$_SESSION['disableAnimation']
来禁用动画而不是全局变量,因为全局变量通常不受欢迎。
编辑:
要在JavaScript中访问它,您需要以下内容:
<script type="text/javascript">
var disableAnimation = <?=$_SESSION['disableAnimation'];?>;
// do Javascript stuff with disableAnimation
</script>
答案 1 :(得分:0)
尝试删除位于脚本顶部的$ disableAnimationOnOtherPages?我有类似的问题,它只激活第一个实例,而且似乎是调用函数的顺序的问题。
或(我最近也这样做了)
第一个条件是异常吗?
if(session_id !='')
{
//session has been started
echo "SESSION HAS BEEN SET";
$disableAnimationOnOtherPages = true;
} else {
//session has NOT been started
echo "SESSION HAS NOT BEEN SET";
session_start();
}
这是完全未经测试的,只是我头脑中的一个尝试。 (我一直在反对类似的问题并且一直在玩这两种想法,有时他们会工作,有时候代码会笑着叫我“SUCKER”)