我有以下设置:
- index . php
- subpage.php
当访问任何一个页面时,我有一个"标题介绍动画"。我只希望用户在第一个页面访问时看到这个动画,而不是在同一会话中刷新/访问其他子页面时重复它。
我试着做以下事情:
$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;
将被设置,这样我就可以使用它作为参考,在我包含的。js文件中禁用我的javascript动画。
但是不管我怎么做,我只得到"SESSION WAS NOT STARTED"。
在这种情况下,我做错了什么?
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']
来禁用你的动画,而不是一个全局变量,因为全局变量通常是不被允许的。
<script type="text/javascript">
var disableAnimation = <?=$_SESSION['disableAnimation'];?>;
// do Javascript stuff with disableAnimation
</script>
尝试删除$disableAnimationOnOtherPages是在脚本的顶部?我有类似的问题,它只激活第一个实例,这似乎是一个问题,一个函数被调用的顺序。
OR(我最近也这么做过)
第一个条件是例外吗?
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")