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

问题描述 投票:0回答:2

我试图通过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>"; 
        }
php while-loop setcookie
2个回答
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在内部执行此转换。


0
投票

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

然后它会正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.