при написании класса для доступа к суперглобалам я только что узнал, что php удаляет точки с запятой из суперглобалей, вероятно, по соображениям безопасности.
например при установке значения cookie на что-то вроде <?php phpinfo(); ?>
я могу видеть дамп переменной, который выглядит как Array ( [cookie] => <?php phpinfo() [?>] => )
увидеть строку, содержащую точку с запятой, разделяющуюся на два или триминг-значения до первого появления точки с запятой.
теперь вот вопрос.
Как можно передать полную строку?
Поскольку я уже «контролирую» переданные переменные, я хочу записать, например, шестнадцатеричный дамп произвольной полезной нагрузки с использованием unpack("H*",$booboostr)
,
Итак, вот второй вопрос.
Как можно создать шестнадцатеричное представление для ввода?
заранее спасибо за любые подсказки.
С уважением
Чтобы завершить комментарий @ Barmar, любое значение $ _COOKIE с точкой с запятой будет разделено на дополнительный ключ $ _COOKIE, пары значений, если в разделе содержится «=», в противном случае данные будут пропущены.
Вкратце, для значений $ _COOKIE будет двойной взрыв для «;» и «=» вызывается.
Когда клиент изменяет значение cookie для ключа cookie sg
перед (повторной) отправкой таким образом, чтобы это выглядело как firstval; foo=bar; omit-me; §$&%/&(/)=}][{ ¬½
это приведет к массиву $ _COOKIE со следующими данными на стороне сервера, вместо того, чтобы быть «простой» строкой для ключа cookie cookie
:
$_COOKIE = Array (
[cookie] = firstval,
[foo] = bar,
[§$&%/&(/)] = ][{ ¬½
);
Как вы видете omit-me
будет опущено, что приводит к тому, что невозможно получить полную строку сразу, учитывая условия, упомянутые выше.
С уважением.
Других решений пока нет …