Gab*_*tos 0 javascript php cookies jquery
我有一个JS启用检测的问题.不是太大,因为我知道我在正确的轨道上.但这是我的交易:
当我尝试使用此代码在JS(jQuery)中设置cookie时
$(window).load(function(){
$.cookies.set('c_jsEnabled', 'true');
});
Run Code Online (Sandbox Code Playgroud)
或者只是在使用此代码的普通JS中
function setCookie()
{
document.cookie='c_jsEnabled=true';
}
<body onload="setCookie();">
Run Code Online (Sandbox Code Playgroud)
然后尝试使用此代码在PHP中检测它
if($_COOKIE['c_jsEnabled'] == 'true')
{
if(file_exists('./main.php'))
{
require_once ('./main.php');
}
echo getIndex();
}
else
{
if(file_exists('./noJS.php'))
{
require_once ('./noJS.php');
}
echo getIndex();
}
setcookie('c_jsEnabled', '');
Run Code Online (Sandbox Code Playgroud)
它需要2页刷新才能真正获得正确的PHP值.我的猜测是,这基本上意味着PHP脚本在JS函数被触发之前执行.可能这是因为上面显示的所有代码都在同一个脚本(index.php)中?
这对我来说是一个问题,因为我想阻止人们在JS被禁用时使用我的网站.
有没有办法在php尝试获取cookie变量之前设置cookie?
PHP 总是在JavaScript之前被"解雇",因为PHP在服务器上处理,然后发送HTML和JavaScript以供浏览器处理和呈现.因此,您永远不会期望JavaScript在PHP之前执行.
在您的情况下,使用JavaScript设置cookie,然后执行重定向以刷新页面,以便PHP可以获取cookie值并相应地执行操作.