2017-02-09 9 views
0

Я работаю над решением, которое требует сохранения ключа массива в кодировке base64.Имеет ли base64 любые символы, которые могут сломать _SESSION?

Хотя он в настоящее время работает хорошо, мне интересно, имеют ли кодировки base64 (utf-8) какие-либо символы, которые сломают $ _SESSION?

+0

Я не знаю конкретную реализацию $ _SESSION в PHP, но base64 кодирующие символы - просто AZ, az, 0-9, /, + и =. Только последние три могут вызвать у вас какие-либо проблемы, и, по-видимому, это достаточно легко проверить, поставив их в переменную сеанса? – CptCoathanger

+0

Ответ отсутствует – apokryfos

ответ

0

Base64 создает буквенно-цифровые символы и «+», «/» и «=». Скобок нет, поэтому проблем не должно быть.

0

$ _SESSION способен хранить произвольные данные до тех пор, пока они не могут быть сериализованы/несертифицированы PHP (что может сделать большинство данных). Он может обрабатывать произвольные символы, поскольку данные сеанса хранятся в файле, и файл может обрабатывать их. На самом деле вам даже не нужно вызывать функции serialize/ unserialize, PHP сделает это за вас.

Вопрос заключается в том, какие символы разрешены в качестве ключей массива в PHP, и ответ, если это символ или целое число, разрешено.

0

no. Сессия сохранит его как строку символов. Просто убедитесь, что у вас включено расширение php-mbstring. отредактируйте файл php.ini, чтобы использовать default_charset = "utf-8". и для браузера Ouput вы можете использовать функцию заголовка PHP

header('Content-Type: text/html; charset=utf-8'); 

или вы можете указать кодировку в вашем HTML

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">