Сохранение слешей в cookie-файлах PHP - PullRequest
0 голосов
/ 18 августа 2011

Я создаю страницу входа.Сейчас на странице есть срок действия, для которого я использую куки.Я хочу, чтобы сайт перенаправлял обратно на страницу, на которой он находился после повторного входа в систему.

Для этого я использую файл cookie, в котором хранится имя страницы (например, queue.php), и он возвращает их обратно.

Этот метод отлично работает, если яЯ иду на страницу, которая находится в том же каталоге, но если я хочу вернуться в подкаталог (например, Deployment / deploy.php), он не работает.

Я пробовал urlencode (), обратную косую черту, addlashes (),% 2F вместо прямой косой черты, и, похоже, ничего не работает.

Вот как я устанавливаю cookie:

$url_name = "Deployment/deployment.php";
setcookie("url",$url_name);

Буду признателен за любую помощь, я полностью потерян.

Ответы [ 5 ]

2 голосов
/ 20 января 2012

setrawcookie (), кажется, функция, которую вы собираетесь.Согласно php.net, он точно такой же, как setcookie (), только он не выполняет никакого urlencoding.

1 голос
/ 18 августа 2011

Я не знаю, где находится ваша страница входа в систему, но если Deployment является подкаталогом (таким образом, на один уровень ниже основной папки), вы должны добавить косую черту напротив него, например:

$url_name = "/Deployment/deployment.php";
setcookie("url", $url_name);
0 голосов
/ 18 августа 2011

Что именно не работает?Как указано в руководстве :

Обратите внимание, что часть значения куки будет автоматически кодироваться при отправке куки, а когда она будет получена, она автоматически декодируетсяприсваивается переменной с тем же именем, что и имя файла cookie.

Таким образом, нет необходимости вручную кодировать / декодировать.Я не думаю, что косая черта в $url_name является проблемой.Я подозреваю, что путь, по которому вы перенаправляете, неверен, но я не могу проверить без дополнительного кода.

0 голосов
/ 18 августа 2011

Можете ли вы объяснить свою проблему немного больше?Я только что попробовал следующее, и смог получить значение cookie просто отлично:

<?php 
$url = "http://google.com/mail";
echo "Setting cookie with value " . $url . "</br>";
setcookie("url", $url);
echo "The cookie is: " . $_COOKIE['url'] . "</br>";
?>
0 голосов
/ 18 августа 2011

Возможно, вы могли бы base64_encode() значение и затем base64_decode его при получении? Просто хотя. Я не знаю, почему косая черта не будет разрешена. Возможно, кто-то еще сможет просветить меня!

...