2012-01-23 12 views
-3

В это время я, кажется, неправильно понял что-то о куках. Почему это не работа ...Я не могу установить файлы cookie в php

<?php 

if (isset($_COOKIE["stop"])){ 
    echo "Welcome " . $_COOKIE["stop"] . "!<br />"; 
} 


$passedvar = $_POST["stopsaway"]; 

if (isset($passedvar)){ 
echo "HHHYES!!!"; 
if (is_numeric($passedvar)){ 
echo "Yup its a number string alright! I'll turn it into a int and I'll make a cookie."; 
//$passedvar = (int)$passedvar; 
setcookie("stop", $passedvar, time()+30); 
echo "COOKIE MADE."; 
} 
} 

if (isset($_COOKIE["stop"])){ 
    echo "Welcome " . $_COOKIE["stop"] . "!<br />"; 
} 
//var_dump($_POST["stopsaway"]); 

?> 

ВТОРОЙ КОД

<?php 

$thing = 1; 

if ($thing==1){ 
setcookie("stop","4",time()+30); 
} 

if (isset($_COOKIE["stop"])){ 
echo "So why won't it work THERE!?"; 
} 

print_r($_COOKIE); 
?> 

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

Кроме того, я помню, как слышал, что ничего не может произойти до setcookie, поскольку он должен работать, это должна быть самая первая строка кода ..... Итак, как я должен сначала проверить вход или другие условия ? Благодаря! О, верно, и я использую Firefox, но я тоже тестировал свой Android. И он работает на одной странице, но не в другой, поэтому я не думаю, что это браузер.

+0

Я думаю, проблема в том, что '+ 30' - это крошечное время, если я правильно помню, что 30 означает 30 миллисекунд ... сделайте это как 3000 на 3 секунды. –

+2

' Я помню, как слышал, что ничего не может произойти до setcookie, для он должен работать, он должен быть самой первой строкой кода ..... Итак, как я должен сначала проверять вход или другие условные выражения? »Вы просто ничего не можете выводить перед этим, поскольку это вызывает заголовки, являющиеся послал. У вас все еще есть код PHP, который вам нравится. –

+0

Итак, я мог бы сохранить условные обозначения, пока они не используют эхо или что-то еще? Я удалил эхо, похоже, сделал трюк. Благодаря!! И Шон не использует секунды. – user1159454

ответ

0

$ _COOKIE не будет установлен до следующего просмотра страницы. Поскольку ваш файл cookie истекает через 30 секунд, скорее всего, он исчезнет при следующем доступе к странице.

+0

Спасибо, сделайте куки учтите время загрузки ?? – user1159454

+0

Cookies истекают точно в указанное вами время - время загрузки не имеет к этому никакого отношения. – whichdan

+0

Я вижу. Хорошо, я вижу, что по умолчанию файлы cookie, похоже, используют смещение времени(), чтобы определить их истечение. Мне интересно, есть ли способ, которым вы можете настроить его для использования определенного времени, которое находится на странице, на которую оно перенаправлено ... как способ сказать через 5 секунд после загрузки страницы. Кроме того, после того, как еще несколько балов, и это не было 3 часа, я понял, что случилось. Переадресация заголовка идет после настройки файла cookie, и файл cookie приходит после эха. Думаю, теперь я понимаю, что куки-файлы могут иметь столько же PHP до этого, сколько угодно, если код не имеет ничего общего с записью на страницу. – user1159454