以下代码首先显示链接A,然后显示链接B.
cookie保存在用户个人电脑上,如果用户一次又一次刷新,他会查看不同的链接,但如果他点击并离开和其他用户点击并离开页面,根据此代码用户首先查看该怎么办?始终在第一次点击时链接。
如果我使用session而不是cookie怎么办?会话将保存在服务器上,两个链接将由不同的用户分发。或者给我这个逻辑的替代?
if(!isset($_COOKIE["lastLink"])){
setcookie("lastLink","b"); // you can set an expire time.
}
if($_COOKIE["lastLink"] == "a"){
$link = "www.b.com";
setcookie("lastLink","b");
}elseif($_COOKIE["lastLink"] == "b"){
$link = "www.a.com";
setcookie("lastLink","a");
}
echo $link;
答案 0 :(得分:0)
将过期时间设置为setcookie()
,以便重置Cookie。
答案 1 :(得分:0)
<强>DİKKAT!不推荐使用MySQL,而是使用MySQLi。
如果使用数据库存储链接,可以使用:
(我没试过,因为我没有数据库表,请尝试反馈我)
<?php
$resource = mysql_query($query); // mysql query
$i = 0; // loop value
$links = array(); // links container
while( $values = mysql_fetch_array($resource) )
{
$links[$i] = $values["link_column"];
$i++;
}
// What if it is users first visit?
if(!isset($_COOKIE["lastLink"])){
// we dont know how many links will be in the DB. also, be aware that indexes start with zero.
setcookie("lastLink",count($links));
}
$cookie = $_COOKIE["lastLink"]; // I'm a lazy programmer, sorry
// we pass the value of cookie and the array of links here, bcz it can be a problem.
echo gimme_the_link($cookie,$links);
// Iterate the cookie value to the next link
$cookie = ($cookie!=count($links)) ? $cookie+1 : 0;
setcookie("lastLink",$cookie);
function gimme_the_link($cookie,$links){
$return = ($cookie!=count($links)) ? $links[$cookie+1] : $links[0];
return $return;
}
?>