2009-03-10 2 views
3

Я развиваюсь на своем ноутбуке Mac, я использую MAMP. Я пытаюсь установить cookie с PHP, и я не могу. Я отказался от домена, я пробовал использовать «\» для домена. Не повезло.Как установить cookie на localhost с помощью MAMP + MacOSx + PHP?

setcookie("username", "George", false, "/", false); 
setcookie("name","Joe"); 

Должно быть, что-то не хватает. Мне нужно быстрое и простое решение. Есть ли это?

Я не делаю ничего особенного, просто налива (через MAMP) страницу, http://localhost:8888/MAMP/lynn/setcookie.php

Этот сценарий имеет код SetCookie в верхней части, до написания даже в HTML-теги. (хотя я тоже пробовал его в ТЕЛО). Я загружаю страницу в различные браузеры, а затем открываю список файлов cookie. Я знаю, что браузеры принимают файлы cookie, потому что я вижу текущие в списке. Только не мой новый.

+0

Это то, что вы не можете увидеть файл cookie в браузере или что он не возвращается к PHP на следующей странице (var_dump ($ _ COOKIE))? –

+0

Я не вижу cookie в браузере, а точнее, в списках cookie в разных браузерах. – lynn

+1

Есть ли пробелы перед открывающим тегом php Simon

ответ

6

Из документов:

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

Это он?

редактировать:

Вы можете увидеть куки отправляются на сервер, например, с помощью расширения Firefox Данные Tamper или telnet? Вы видите, что он отправляется обратно браузером по следующему запросу? Какова возвращаемая стоимость setcookie()? Разве это не работает во всех браузерах или просто в некоторых?

+0

Не кажется проблемой. – lynn

+1

Любые пустые строки в скрипте PHP перед вызовом setcookie()? Или, может быть, даже пустые строки перед первым

+0

Да! Вот и все. – lynn

0
<?php 
ob_start(); 
if (isset($_COOKIE['test'])) { 
    echo 'cookie is fine<br>'; 
    print_r($_COOKIE); 
} else { 
    setcookie('test', 'cookie test content', time()+3600); /* expire in 1 hour */ 
    echo 'Trying to set cookie. Reload page plz';  
} 

Попробуйте это.

0

Вывод «localhost» и просто пустая строка работала для меня.

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