[英]Check if session has been started and set global var for javascript to use
我有以下设置:
当访问任一页面时,我都有一个“标题简介动画”。 我只希望用户在第一次访问页面时看到此动画,而不希望在刷新/访问同一会话中的其他子页面时重复该动画。
我尝试执行以下操作:
$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_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>
尝试删除脚本顶部的$ 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”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.