2012-03-27 70 views
-1

我正在嘗試爲cookie執行此計數。當我訪問網站不止一次,但首次訪問時,Cookie會給出正確的值,它總是告訴我cookie(兩者)都沒有設置。我是PHP新手,所以我不確定是否錯過了一些東西。 Cookie在html標籤之前設置。Cookie計數器php

setcookie("user", isset($_COOKIE["user"])? ++$_COOKIE["user"] : 1); 
setcookie("date", date("d/m/y h:i:s")); 
$count = $_COOKIE["user"]; 

--------------------------------- 
<body> 

    <p><?php 
     if($count == 1) 
      echo "Welcome! You're new here."; 
     else 
      echo "Hello, you have visited " .$_COOKIE["user"]. " times."; 
      echo "<br/>"; 
      echo "Your last visit was ".$_COOKIE["date"]; 

    ?></p> 

</body> 
+0

當您訪問的頁面第二次(這樣的cookie被定義)做它打印:您好,您曾經訪問過1次。 ? – grifos 2012-03-27 03:36:21

+0

不,它打印「你已經訪問過2次」,並在每次刷新後計數增加1 – user977151 2012-03-27 04:09:50

回答

1

setcookie函數使餅乾到服務器的HTTP報頭,其與所述第一請求一起發送。然而,$_COOKIE數組並沒有在內部傳遞這些值(來自setcookie函數),而是從瀏覽器發送的請求頭中生成的,而這隻發生在瀏覽器從第一個請求獲取cookie並將其發回之後在第二個請求。

你可以做的是這樣的:

$count = isset($_COOKIE["user"])?$_COOKIE["user"]:1; 
+0

感謝您的評論讓我清楚,但您的想法並沒有解決它100%。但我最終弄清楚了。 – user977151 2012-03-27 04:40:10

1

我不確定,但我現在看到的所有其他都是使用錯誤的方式。
你可以寫:

if (cond) 
    do(); 
else 
    doelse(); 

只是單線條像這樣工作。
使用代替:

<?php 
     if($count == 1) 
      echo "Welcome! You're new here."; 
     else { 
      echo "Hello, you have visited " .$_COOKIE["user"]. " times."; 
      echo "<br/>"; 
      echo "Your last visit was ".$_COOKIE["date"]; 
     } 
?>