PHP не будет получать cookie - PullRequest
       0

PHP не будет получать cookie

1 голос
/ 08 апреля 2011

Прежде всего, пожалуйста, ответьте на вопрос, так как я только начинаю с этого.

Итак, у меня в index.php работает следующее:

<?php  

    if(isset($_COOKIE['language'])) {
        if (($_COOKIE['language']) == 'en')
            print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URLGOESHERE\"</SCRIPT>";  
        elseif (($_COOKIE['language']) == 'fr') 
            print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URLGOESHERE\"</SCRIPT>";
    }
    else {
        print "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\"URL-FOR-COOKIE-SETTING-PAGE\"</SCRIPT>";
    }
    ?>

Перенаправление оператора else возвращает страницу, на которой пользователь устанавливает свои языковые предпочтения, и после этого эта страница устанавливает файл cookie, а затем отправляет их в соответствующую версию сайта. Однако, когда пользователь возвращается к этому главному index.php, он не может найти cookie и пропускает прямо к выражению «else». Раньше переадресация делалась с PHP, используя 'header', и тогда он тоже не работал. Я читал в другом месте, что это может создать некоторые проблемы, поэтому я переключил его, чтобы попробовать напечатать Javascript.

Странная вещь в том, что я могу найти cookie, как только он будет установлен, именно там, где он должен быть, с правильным именем и переменной. Я сделал это точно так, как говорят мне книги (насколько мне известно). Я пробовал это как в Firefox, так и в Safari без удачи.

Что я пропустил?

РЕДАКТИРОВАТЬ : Вот скрипт, который фактически устанавливает cookie. Параметр передается по ссылке через URL-кодировку, например: <a href="setlang.php?lang=en">

<?php 

$lang = urlencode($_GET["lang"]);

setcookie("language", $lang, time()+60*60*24*90, ".URL");

switch ($lang) {

case 'en':
header('Location:  URLGOESHERE');
break;

case 'fr':
header('Location:  URLGOESHERE');
break;
}

 ?>

Ответы [ 2 ]

3 голосов
/ 08 апреля 2011

cookie не доступен для скрипта, который его установил.

Вы должны установить cookie, и тогда на следующей странице загрузки cookie будет доступен для php-кода

0 голосов
/ 08 апреля 2011

Попробуйте этот код:

setcookie("language", $lang, time()+60*60*24*90, "/");

Я не уверен, что .URL должен был сделать o.o

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...