一个PHP函数来检查cookie
我写了一个php函数和一些帮助函数,它们在有人登录页面时检查cookie,但速度并不快。 我想知道是否有任何方法使其更快或改善它我知道可以使用JavaScript检查cookie客户端,但如果它被禁用,那么我需要一个纯粹的服务器端解决方案。
<?php
function check_cookie(){
if(is_cookie_disabled()){
header("location:cookie_is_disabled.php");
exit;
}
}
function is_cookie_disabled(){
$curr_url = $_SERVER['PHP_SELF'];
if(isset($_COOKIE['testCookie']) && !(isset($_COOKIE['cookie']))){
$original_url = original_url ($curr_url);
header("location: ".$original_url);
setcookie("cookie", 'enabled');
exit;
} elseif(!(isset($_COOKIE['testCookie']))) {
if(isset($_GET['temp'])){
return true;
} else{
if(if_parameters_exist_in_url($curr_url)){
$url = $curr_url."&temp=temp";
} else {
$url = $curr_url."?temp=temp";
}
header("location: ".$url);
setcookie("testCookie", 'test');
exit;
}
}
return false;
}
function original_url ($curr_url){
if (!empty($_GET)){
if (isset($_GET['temp'])) {
if(count($_GET)>0){
return removeqsvar($curr_url, 'temp');
} else {
return removeallvars($curr_url);
}
}
}
return $curr_url;
}
function removeqsvar($url, $varname) {
return preg_replace('/([?&])'.$varname.'=[^&]+(&|$)/','$1',$url);
}
function removeallvars($url){
return $url = strtok($url, '?');
}
function if_parameters_exist_in_url($url){
if (strpos($url, '=')) {
return true;
} else {
return false;
}
}
//at the top of your pages
check_cookie();
?>
它可能从所有的位置重定向缓慢。 但我从来没有做过这样的事情,所以我不能确定。
是否可以懒惰地设置Cookie。 例如,在首页加载时设置会话和cookie。 然后,在第二页加载检查cookie是否存在。
这是如何检查页面是否已加载。
session_start();
$_SESSION['first_load'] = isset($_SESSION['first_load']) ? false : true;
if( !$_SESSION['first_load'] && isset($_COOKIE['testCookie']) )
echo 'cookies enabled!'
else
echo 'no cookies for you!'
这当然不慢。 测量所花费的时间:
microtime(true)
), 您会发现优化此代码不会产生任何改进,因为此PHP代码可能需要几毫秒才能执行,而对于小页面而言,页面加载可能需要一秒多的时间。
链接地址: http://www.djcxy.com/p/71529.html