2012-05-24 4 views
1

Проблема в том, что я не могу установить cookie из PHP. Я попытался решить проблему и искать здесь в stackoverflow, но Ни одно из решений не работает.PHP set cookie localhost не работает

Я пробовал:

setcookie('user_id', $row['user_id'], time() + (60 * 60 * 8), '/', '127.0.0.1'); 
setcookie('user_id', $row['user_id'], false, '/', false); 
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 8), '/', false); 
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 8), '/', ''); 

Браузер я использую Firefox 12 и Chrome 19 на сервере Apache.

Благодарим за помощь.

EDIT: Кажется, проблема с моей базой данных, когда я извлекаю данные, чтобы поместить в свои файлы cookie so nevermind;) спасибо за ваше время!

+2

Откуда вы знаете, что это не работает? – flowfree

+0

У вас возникла ошибка или как вы знаете, что она не работает? –

+0

После того, как я перенаправляю и пытаюсь использовать файл cookie, он не установлен. isset возвращает false, и ничего не работает, как предполагается, если файлы cookie работают. – ptf

ответ

1

Уверены, что нет выхода до этого кода? Все echo s и все include с включением чего-то, что не является полностью кодом PHP считаются выходными.

Причина, по которой вы ничего не можете вывести до звонка setcookie(), довольно проста. Чтобы установить файл cookie, сервер должен отправить команду заголовка в браузер. Этот заголовок не может быть отправлен, если тело контента уже распечатано.

Вы можете изменить свой код, чтобы поместить эти вызовы перед любым выходом, или вы можете просто поставить ob_start() в начале вашего кода. Эта функция заставляет PHP буферизовать весь вывод и отправлять его только один, когда скрипт заканчивается.

+0

У меня заголовок ('Местоположение:' ...); после этого, и он перенаправляет успешно. – ptf

+0

@kjelelokk Попробуйте поместить 'header()' call ** перед ** 'setcookie()' вызывает. –

Смежные вопросы