在循环中通过foreach循环设置cookie

时间:2011-12-26 18:34:46

标签: php while-loop setcookie

尝试通过foreach loop内的while loop设置这些Cookie时出错。我得到的错误是...... 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>"; 
        }

2 个答案:

答案 0 :(得分:4)

$expire应该是一个int。你有一个字符串。这条线是不必要的,问题的原因是:

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

http://us3.php.net/setcookie

  

您可能会注意到expire参数采用Unix时间戳,而不是日期格式Wdy,DD-Mon-YYYY HH:MM:SS GMT,这是因为PHP在内部执行此转换。

答案 1 :(得分:0)

setCookie()的第3个参数“expire”需要一个整数但你要证明日期字符串。 这是一个Unix时间戳,因此是自纪元以来的秒数。  所以,评论 // $ expire = date(“Y-m-d h:i:s”,$ expire);

然后它会正常工作。