如何逐个显示两个链接?

时间:2014-01-25 16:06:30

标签: php session cookies logic

以下代码首先显示链接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;

2 个答案:

答案 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;
    }
?>