Задать вопрос
@MaxQw

Почему пропадает плюс из $_COOKIE?

Как сохранить + в $_COOKIE?

<script>
    document.cookie = "cookie=Etc/GMT+9";
</script>


5f2efc9ea58a7460240582.png

<?php
var_dump($_COOKIE['cookie']);
?>


string(9) "Etc/GMT 9"

+ отвалился.

UPD
+ нужен для реализации:

<?php
echo '<select id="List">';
$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);
foreach($tzlist as $value)
{
echo '<option value='. $value .'>'. $value .'</option>';
}
echo '</select>';
$takeCookie = $_COOKIE['cookie'];
if (in_array($takeCookie, DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC))) 
{
echo "Found";
} 
else {
echo "Not Found";
}
?>


<script>
	$("#List").change(function() {
	var tz = $(this).val();
	document.cookie = "cookie="+tz;
    });
</script>
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 2
@MaxQw Автор вопроса
Как подсказали, использовал encodeURIComponent.

<script>
    document.cookie = "cookie="+encodeURIComponent('Etc/GMT+9');
</script>


В браузере сохраняется как cookie=Etc%2FGMT%2B9

<?php
var_dump($_COOKIE['cookie']);
?>


Выводится как:
string(9) "Etc/GMT+9"

Выполняет условие:
if (in_array($takeCookie, DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC)))


В общем, все вроде работает, но есть вопрос.

Из $takeCookie получаю переменную в Octobercms:

$this['tz'] = $takeCookie;

И использую в Twig

{{ "now"|date("H:i:s", "" ~ tz~ "" ) }}

Отображается корректно, но если вместо ~ tz~ в Twig конкретно указать Etc%2FGMT%2B9, то ошибка.

Вопрос, а в какой момент Etc%2FGMT%2B9 преобразуется в Etc/GMT+9 для Twig?
И правильно ли я вообще применил encodeURIComponent?
Ответ написан
zabudkin
@zabudkin
Инженер-системотехник, программист, админ, ТПУ!!!!
document.cookie = "cookie=Etc/GMT+9";
сохраняйте сразу через encode
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы