任何人都可以指导或帮助我了解这个make_cookie功能吗?它确实创建了重定向循环,并且页面将不会加载。这从PHP 5.3升级到PHP 5.5之后出现,我比较了php.ini文件
function make_cookie($name,$value,$time,$loc=0) {
global $QUERY_STRING, $db_handler, $user;
if($this->cookies) {
setcookie($name,$value,$time);
} else {
$query="SELECT t2.*,t1.id AS sess FROM session AS t1 ".
"LEFT JOIN user AS t2 ON t1.user=t2.id ".
"WHERE t1.last_ip='".$_SERVER["REMOTE_ADDR"]."' ".
"AND t1.cookie='".$value."' AND t1.out_time>NOW()";
$result=mysqli_query($db_handler,$query) or die(mysqli_error($db_handler));
if($rida=mysqli_fetch_assoc($result)) {
//define("_asutus_id",$rida["asutus_id"]);
$user_id=$rida["id"];
$mods_text=$this->get_mods($user_id);
$user1_text=$this->get_user1($user_id);
$fl=fopen("tmp/$value.inc","w+");
fwrite($fl,"<?\n");
fwrite($fl,"\$GLOBALS[\"mod_rights\"]=".$mods_text.";\r\n");
fwrite($fl,"\$GLOBALS[\"user1\"]=".$user1_text.";\r\n");
fwrite($fl,"?>\n");
fclose($fl);
$fl=fopen("tmp/".$value."_1.inc","w");
fwrite($fl,"<?\n");
fwrite($fl,"\$GLOBALS[\"tooted\"]=Array();\r\n");
fwrite($fl,"?>\n");
fclose($fl);
//$query=mysql_query("UPDATE session SET rights='$rights_text',mods='$mods_text' WHERE id=".$rida["sess"]) or die(mysql_error());
mysqli_free_result($result);
}
$qry_str=preg_replace("/sessID=[0-9a-f]{32,32}/i","",$QUERY_STRING);
Header("Location: index.php?sessID=".$value."&".$qry_str);
}
}
我在另一个函数中调用它
function new_sess($loc=0) {
global $user,$db_handler;
$token=md5(microtime());
$expires=time()+3600;
$exp=date("Y-m-d H:i:s", $expires);
mysqli_query($db_handler, "INSERT INTO session (cookie, in_time, out_time, last_ip, ipname) VALUES ('".$token."', NOW(), '".$exp."', '".$_SERVER["REMOTE_ADDR"]."', '".gethostbyaddr($_SERVER["REMOTE_ADDR"])."')") or die(mysqli_error($db_handler));
$this->sessID=$token;
$this->make_cookie("sessID",$token,time()+3600,$loc);
$user='';
log_("new_session","_");
}