【发布时间】:2012-03-01 13:56:08
【问题描述】:
我编写了一个 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 和 JavaScript 的人很少。您花费的时间超出了处理的价值。
-
@sarnold 尽快
-
是的,但是 cookie 和 javascript 对网站性能都至关重要,我想完全控制它们
标签: php