2013-03-18 6 views
0

EDIT: МОЙ ПЛОХОЙ, ЭТО БЫЛО (СЕРВЕРНАЯ СТОРОНА). Спасибо за помощь.PHP, не обнаруживающий cookie, установленный по Javascript

У меня есть сайт, который при посещении сначала проверяет наличие файла cookie «intro», а затем, если он не существует, перенаправляет его на вводную страницу.

<?php if (!isset($_COOKIE["intro"])) { 
header('Location: http://explainasterisk.com/intro/') ; } ?> 

Когда пользователь нажимает на кнопку «начать» на странице интро, печенье устанавливается с помощью:

<script type="text/javascript"> 
      $(document).ready(function() { 
       $('.home').click(function() { 
        scroll(0, 0); //scrolltotop 
        var intro = "intro" //setting cookiename variable 
        var today = new Date(); 
        var expire = new Date(); 
        expire.setTime(today.getTime() + 3600000*24*365); 
        document.cookie = intro+"=1" 
            + ";expires="+expire.toGMTString();     
        $('.home').slideUp(3000, function() { //slideUp function 
         //Nothing 
        }); 
       }); 
      }); 
</script> 

В Opera и Chrome куки устанавливаются, но когда я нажимаю на пропустите кнопку на странице ввода (которая вернет меня на исходную страницу), я просто перенаправлен на страницу Intro. Вы можете увидеть это здесь: http://explainasterisk.com/

ответ

0
if (!isset($_cookie["intro"])) { 

- неверное имя массива. Это должно быть в CAPS, как этот

if (!isset($_COOKIE["intro"])) { 

Артикул: $_COOKIE

Благодаря Brad Christie.

+0

_Obligatory ссылка на [ '$ _COOKIE'] (http://www.php.net/manual/en/reserved.variables.cookies.php) _ –

+0

Изменил он, по-прежнему не работает , Спасибо хоть. – jackson5

0

Источником проблемы является то, что у вас нет error_reporting(E_ALL); в начале вашего кода (и ini_set('display_errors','On'); в среде разработки).

Если у вас есть это, PHP отобразит сообщение об ошибке, что нет переменной $ _cookie.

0

Возможно, вы захотите дать jquery-cookie попытку, потому что он упрощает настройку и обработку файлов cookie в javascript с датами истечения срока действия.

Одна простая линия:

$.cookie("[cooke name]", "[value]", { expires: [time in days]); 

.: например

$.cookie("intro", "set", { expires: 365); 

Ваш PHP фрагмент выглядит хорошо для меня, и - если куки установлен правильно - должно работать.

0

Попробуйте добавить путь и домен в конце вашего печенья:

path=/; domain=.<?php echo $_SERVER['HTTP_HOST']; ?> 
0

куки в JavaScript создается с доменом .explainasterisk.com

Так что попробуйте, прежде чем читать куки.

ini_set("session.cookie_domain", ".explainasterisk.com");

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