установка cookie через цикл foreach внутри цикла while - PullRequest
0 голосов
/ 26 декабря 2011

Я получаю сообщение об ошибке при попытке установить эти файлы cookie через foreach loop внутри while 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>"; 
        }

Ответы [ 2 ]

4 голосов
/ 26 декабря 2011

$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 голосов
/ 26 декабря 2011

Третий параметр "expire" в setCookie () ожидает целое число, но вы проверяете строку даты. Это метка времени Unix, так же как и количество секунд с начала эпохи. Итак, комментарий // $ expire = date ("Y-m-d h: i: s", $ expire);

Тогда все будет работать нормально.

...