2013-09-01 2 views
1

По какой-то причине я не могу настроить cookie в одном из моих файлов PHP. Весь код работает нормально, за исключением того, что он отказывается устанавливать cookie. Я поместил разные версии настроек cookie с разными аргументами, но, похоже, это не имеет никакого значения. Кроме того, я могу установить cookie, используя ту же строку кода в отдельном PHP-файле в том же каталоге. Я попытался разместить setcookie() в разных местах, и я все равно получаю тот же результат. Я что-то упускаю?PHP: Невозможно установить Cookie

<?php 
$table_name="lfgs"; 
$name=$_POST['name']; 
$event="["; 
$level=$_POST['level']; 
$comments=$_POST['comments']; 
$hours=$_POST['hours']*60*60; 
$minutes=$_POST['minutes']*60; 
$time=$hours+$minutes+time(); 

setcookie("remember", $name, $time, 'www.domain.com', '/'); 

if(isset($_POST['event'])){ 
    if (is_array($_POST['event'])) { 
     foreach($_POST['event'] as $value){ 
      $event = $event . "\"" . $value . "\","; 
     } 
    } else { 
     $value = $_POST['event']; 
     $event = $event . "\"" . $value . "\"]"; 
    } 
} else { 
    $event = ""; 
} 

if($event[strlen($event)-1] == ',') { 
    $event = substr_replace($event ,"]",-1); 
} 

$con=mysqli_connect("domain.com","username","password","database"); 

$req="INSERT INTO $table_name(name, event, level, comments, time) VALUES ('$name', '$event', '$level', '$comments', '$time')"; 
mysqli_query($con,$req); 

mysqli_close($con); 

foreach($_COOKIE as $c) { 
    echo $c . "<br />"; 
} 
?> 

Edit: Это ALL код для всего файла.

+0

Вы пробовали следовать куки в инструментах разработчика в chrome или firefox? –

+0

Печенье никогда не появляется. Как вызов был проигнорирован. Инструменты разработчика Chrome говорят, что файлов cookie нет. – Kyle

ответ

1

По ссылке PHP, правильный путь для использования функции setcookie является

bool setcookie (string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]]) 

Вы не swaped в $ путь и $ домена аргумент?

Попробуйте

setcookie("remember", $name, $time, '/', 'www.domain.com'); 
+0

Это сделало. Должно быть, слишком поздно. – Kyle

0

Вы уверены, что интерпретатор php не отправляет символ перед вызовом setcookie() по какой-то причине? Функция отправляет HTTP-заголовок, поэтому он должен отображаться перед любой печатью на странице.

+0

Если переменная $ _POST не может повлиять на нее, то, что вы видите, - это весь код всей страницы. – Kyle

1

попробовать

setcookie("remember", $name, '/', $time); 
+0

Вариант, который я не пробовал, но все равно безрезультатно. – Kyle

1

Я dont't понимаю, что вы хотите сделать, но это будет не работает так, как вы делаете. Всегда помните: вы работаете с PHP на стороне сервера . Итак, чтобы установить cookie, а затем проверить, если это сработало, вам всегда нужно выполнить шаги буксировки (потому что вы находитесь на стороне сервера): Первым шагом является установка файла cookie. И затем во время запроса следующего вы можете проверить, содержит ли ur cookie глобальный массив $ _COOKIE. если да, то хорошо, если нет, то mybe клиент/пользователь не позволяет устанавливать файлы cookie.

Если вам нужно сделать это за один шаг, вы должны использовать JavaScript. Что-то вроде этого: Оставить форму, установить куки-файл, а затем развернуть действие отправки (отправить данные на сервер). JQuery поддерживает хорошее решение для установки и чтения файлов cookie.

0

Из моего опыта, если у вас есть сеанс, активный на странице, он не позволит создавать PHP-файлы cookie. Начните новую пустую страницу и протестируйте ее таким образом.

Вы должны иметь возможность установить cookie на новую общую страницу. Затем вернитесь на свою другую страницу, на которой начался сеанс. Измените детали этого файла cookie на странице сеанса, и вы получите сохраненное значение, без проблем.

Вы можете позвонить куки, но вы не можете создать их на активной странице сеанса. По крайней мере, я не могу с моими текущими системными настройками/config.

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