2011-12-26 97 views
0

我在嘗試通過while loop中的foreach loop設置這些cookie時出現錯誤。我得到的錯誤是.... Notice: A non well formed numeric value encountered in
PHP腳本:設置cookie通過循環內部的foreach循環

while($row = mysql_fetch_array($sql)){ 
      $path = "/"; 
      $expire = time() + 2592000; 
      $expire = date("Y-m-d h:i:s",$expire); 
      $c = array(
      md5('id')=>$row['id'], 
      md5('name')=>$row['u'], 
      md5('sex')=>$row['s'], 
      md5('country')=>$row['co'], 
      md5('state')=>$row['st'], 
      md5('city')=>$row['ci'], 
      md5('timezone')=>$row['ti'] 
      ); 
      foreach($c as $name=>$value){ 
       setcookie($name,$value,$expire,$path); 
      } 
      echo "Logging you in! <img src=\"source/image/50gl.gif\"><br>"; 
     } 
+3

你在哪一行得到錯誤? – 2011-12-26 18:37:16

+0

我解決了這個問題,感謝他從我的格式化時間戳,我只是總是假設你可以把任何日期放在時間戳(格式化或不)中,但顯然你不能! :) – 2011-12-26 18:43:44

+0

爲什麼你md5加密cookie數據名稱? – Gajus 2011-12-26 18:50:03

回答

4

$expire有望成爲一個int。你有一個字符串。這條線是不必要的,問題的原因:

$expire = date("Y-m-d h:i:s",$expire); 

http://us3.php.net/setcookie

您可能會注意到到期參數發生在一個Unix時間戳,而不是日期格式WDY,DD-星期一到YYYY HH:MM:SS GMT,這是因爲PHP在內部執行此轉換。

0

setCookie()的第三個參數「expire」需要一個整數,但是您證明了日期字符串。 這是一個Unix時間戳,因此距離該時代以秒爲單位。 因此,評論 // $ expire = date(「Y-m-d h:i:s」,$ expire);

它會很好的工作。