2012-02-07 80 views
1

我試圖在用戶每次刷新頁面時顯示隨機橫幅。我面臨的問題是我不想再次顯示最後的橫幅。我有沒有其他的方式來記住最後顯示的一個,而不使用cookie或數據庫實現?記住上次顯示的橫幅

Cookie實施:

<?php 

$randIndex = rand(1,6); 
if(!isset($_COOKIE["lastDispalyed"])){ 
    setcookie("lastDispalyed",$randIndex,time()+60*60*24); 
} 
else{  
    while($_COOKIE["lastDispalyed"] == $randIndex){ 
     $randIndex = rand(1,6); 
    } 
    setcookie("lastDispalyed",$randIndex,time()+60*60*24); 
} ?> 

<img src="images/mainBanners/<?php echo $randIndex; ?>.JPG"/>

+0

你可以使用'$ _SESSIONS'。爲什麼你不想讓他們看到另一個廣告,也如果你只有六個,你可能會用盡廣告 – Cjueden 2012-02-07 18:50:33

回答

2

你可以使用一個會話變量:

<?php 

    session_start(); // <-- start session before outputting any HTML 

    $randIndex = rand(1,6); 

    if (!isset($_SESSION["lastDisplayed"])) { 

     $_SESSION["lastDisplayed"] = $randIndex; 

    } else {  

     while ($_SESSION["lastDisplayed"] == $randIndex) { 
      $randIndex = rand(1,6); 
     } 

     $_SESSION["lastDisplayed"] = $randIndex; 
    } 

?> 

參考session_start()

+0

我得到無限循環錯誤與此代碼... – 2012-10-22 20:46:37

+0

@DarrylHebbes它說什麼? – paislee 2012-10-22 23:40:53

+0

它顯示一個超時消息,實際上是我的錯誤。 如果rand(1,1)發生,則while循環旋出。 所以不用擔心,你的例子很好。 – 2012-10-24 11:09:11

0

設置爲旗幟的ID或URL會話變量:

$_SESSION['lastDisplayed'] = $id; //could be the id of the banner you are displaying, or the file's url, whatever you have access too 

然後測試它,當你去顯示一個新的旗幟。