2011-12-26 23 views
0

foreach loopwhile loopにこれらのクッキーを設定しようとしているときにエラーが発生します。私は取得していますエラーが.... Notice: A non well formed numeric value encountered in
PHPスクリプトです:ループ内にループを設定している間にクッキーを設定する

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

どのラインでエラーが表示されますか? –

+0

私はそれを解決しました。ありがとうございました。タイムスタンプをフォーマットしてくれた私から来ていました。私はいつもあなたがタイムスタンプ(フォーマットされているかどうか)に日付を入れることを許されていたと仮定しました。 :) –

+0

なぜあなたはmd5でクッキーのデータ名を暗号化していますか? – Gajus

答えて

4

$expireはint型であることが予想されます。あなたには文字列があります。この行は不要であり、問​​題の原因:

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

http://us3.php.net/setcookie

日付形式WDY、DD-MON-とは対照的に、有効期限が切れるパラメータは、UnixのタイムスタンプにかかることがありYYYY HH:MM:SS GMT、これはPHPが内部的にこの変換を行うためです。

0

setCookie()の3番目のパラメータexpireには整数が必要ですが、日付文字列を証明しています。 これはUnixのタイムスタンプなので、エポックからの秒数です。 だから、コメント // $ expire = date( "Y-m-d h:i:s"、$ expire);

これで正常に動作します。

関連する問題