1
回答
[菜鸟提问]PHP中setcookie()函数对写入cookie中变量值的时间点问题
开发十年,就只剩下这套Java开发体系了   
<?php
date_default_timezone_set("Etc/GMT-8");
if(!isset($_COOKIE["visittime"])){									//如果Cookie不存在
 	setcookie("visittime",date("y-m-d H:i:s")); 					//设置一个Cookie变量
	echo "欢迎您第一次访问网站!"."<br>";						     //输出字符串
}else{																//如果Cookie存在
	setcookie("visittime",date("y-m-d H:i:s"),time()+60); 			//设置带Cookie失效时间的变量
    echo "您上次访问网站的时间为:".$_COOKIE["visittime"];			//输出上次访问网站的时间
	echo "<br>";													//输出回车符
}
	echo "您本次访问网站的时间为: ".date("y-m-d H:i:s");			//输出当前的访问时间
echo "<br />";
print_r($_COOKIE["visittime"]);
?>

在上面这段代码里,假设我在01:00:00、01:00:10、01:00:30,三个时间点三次运行了这个代码。在第一次运行代码的时候,创建cookie,setcookie()函数写入cookie的时间应该是和下面echo的“欢迎第一次...”里显示的时间是一样的,都是01:00:00。

那么我的问题在第二次开始运行程序的时候,if()函数判断存在cookie文件,执行else下的代码,这时又是setcookie()函数写入了新的date时间(01:00:10),那么不就把上次的运行时间(01:00:00)给覆盖变成了这次新的运行时间了么?

当然运行结果和我想象的不一样,结果是“您上次访问的时间为:01:00:00”,和“您本次的访问时间为:01:00:10”。

我在这段程序的最后试着用print_r输出了下cookie的变量值,还是“01:00:00”,但是我运行第三次的话,上次访问时间又会相应的变成“01:00:10”,所以我不太清楚,程序是什么时候把新的时间写入进cookie里的?

<无标签>
举报
Syou_K_Wu
发帖于2年前 1回/239阅
顶部