检查是否在没有重定向的情况下启用了 cookie
Check if cookies are enabled without redirect
我需要在每个页面上检查 cookie 是否 enabled.And 使用此代码。
<?php
setcookie('COOK_CHK',uniqid(),time()+60*60*24);
if(!isset($_COOKIE['COOK_CHK'])){
echo"Cookies are disabled!";
exit;
}
session_start();
?>
但是在第一次检查时它给了我错误,直到我不刷新 page.I 在每个页面中包含此代码所以每次我加载页面时都无法重定向,因为它减少了 performance.However我想使用它,即使 javascript 是 disabled.Any 个建议?
可以使用javascript吗?如果是这样,只需检查 navigator.cookieEnabled
变量即可。
它适用于大多数现代浏览器。您可以在这里阅读更多相关信息:http://www.w3schools.com/jsref/prop_nav_cookieenabled.asp
不可能,因为 Cookie 位于浏览器中,并且 PHP 在页面呈现时发送它们,因此仅在第二页中可用。
解决此问题的一种可能方法是使用 javascript。
如果你真的应该在 PHP 中这样做,出于某种疯狂的原因,将你的所有请求发送到主控制器并使用其他方法保存状态,例如,将 var 写入文件,然后重定向并在下一个重定向 您将知道是否已启用 cookie 而无需任何其他重定向。示例:
$file = 'cookie_fake_'.$userIP;
if( !isset($_COOKIE['COOK_CHK']) && !file_exists($file) ){
file_put_contents($file, 'dummy');
setcookie('COOK_CHK',uniqid(),time()+60*60*24);
header('Location:/');
exit;
}
if(!isset($_COOKIE['COOK_CHK'])){
setcookie('COOK_CHK',uniqid(),time()+60*60*24);
echo"Cookies are disabled!";
exit;
}
那么你应该每隔一小时左右写一些东西来清理旧文件,当然你可以使用缓存层或数据库或类似的东西来代替写文件。
编辑:如果用户启用 cookie 并刷新页面,之前的代码将非常糟糕,现在我已经修复,因此它在第二次刷新时可以正常工作。不完美但是......你真的应该使用 javascript.
干杯。
我需要在每个页面上检查 cookie 是否 enabled.And 使用此代码。
<?php
setcookie('COOK_CHK',uniqid(),time()+60*60*24);
if(!isset($_COOKIE['COOK_CHK'])){
echo"Cookies are disabled!";
exit;
}
session_start();
?>
但是在第一次检查时它给了我错误,直到我不刷新 page.I 在每个页面中包含此代码所以每次我加载页面时都无法重定向,因为它减少了 performance.However我想使用它,即使 javascript 是 disabled.Any 个建议?
可以使用javascript吗?如果是这样,只需检查 navigator.cookieEnabled
变量即可。
它适用于大多数现代浏览器。您可以在这里阅读更多相关信息:http://www.w3schools.com/jsref/prop_nav_cookieenabled.asp
不可能,因为 Cookie 位于浏览器中,并且 PHP 在页面呈现时发送它们,因此仅在第二页中可用。 解决此问题的一种可能方法是使用 javascript。 如果你真的应该在 PHP 中这样做,出于某种疯狂的原因,将你的所有请求发送到主控制器并使用其他方法保存状态,例如,将 var 写入文件,然后重定向并在下一个重定向 您将知道是否已启用 cookie 而无需任何其他重定向。示例:
$file = 'cookie_fake_'.$userIP;
if( !isset($_COOKIE['COOK_CHK']) && !file_exists($file) ){
file_put_contents($file, 'dummy');
setcookie('COOK_CHK',uniqid(),time()+60*60*24);
header('Location:/');
exit;
}
if(!isset($_COOKIE['COOK_CHK'])){
setcookie('COOK_CHK',uniqid(),time()+60*60*24);
echo"Cookies are disabled!";
exit;
}
那么你应该每隔一小时左右写一些东西来清理旧文件,当然你可以使用缓存层或数据库或类似的东西来代替写文件。
编辑:如果用户启用 cookie 并刷新页面,之前的代码将非常糟糕,现在我已经修复,因此它在第二次刷新时可以正常工作。不完美但是......你真的应该使用 javascript.
干杯。