我在启用 JS 的检测方面遇到了一个小问题。 不太大,因为我知道我走在正确的轨道上。 但这是我的交易:
当我尝试使用此代码在 JS (jQuery) 中设置 cookie
$(window).load(function(){
$.cookies.set('c_jsEnabled', 'true');
});
或者只是使用此代码在纯 JS 中
function setCookie()
{
document.cookie='c_jsEnabled=true';
}
<body onload="setCookie();">
然后尝试使用此代码在 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', '');
需要刷新 2 次页面才能真正将正确的值输入到 PHP 中。 我的猜测是,这基本上意味着 PHP 脚本在 JS 函数被触发之前执行。 这可能是因为上面显示的所有代码都在同一个脚本(index.php)中吗?
这对我来说是一个问题,因为我想阻止人们在禁用 JS 时使用我的网站。
有没有办法在 php 尝试获取 cookie 变量之前设置 cookie?
最佳答案
PHP总是在 JavaScript 之前“触发”,因为 PHP 在服务器上进行处理,然后发送 HTML 和 JavaScript 供浏览器处理和呈现。因此,您永远不能指望 JavaScript 在 PHP 之前执行。
在您的情况下,使用 JavaScript 设置 cookie,然后执行重定向来刷新页面,以便 PHP 可以获取 cookie 值并采取相应的操作。
关于php - JS禁用时页面内容不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999152/