httprequest — PHP Header: значение параметра обрезается после #

Я использую следующий код для перенаправления в PHP

header("Location:restaurantsList.php?msg=Restaurant 100#we updated successfully");

В restaurantsList.php когда я пытаюсь получить request parameters затем получить следующий массив.

Array ( [msg] => Restaurant 100 )

Значение параметра становится усеченным после '#',

Если передать любой нормальный текст в параметре (без #), то я получаю всю строку как есть.

Есть ли решение, чтобы получить строку, как есть, даже если строка будет содержать #?

0

Решение

Вам следует URL кодировать специальные символы в строке запроса, чтобы ваш URL выглядел следующим образом:

header("Location:restaurantsList.php?msg=Restaurant%20100%23we%20updated%20successfully");
1

Другие решения

# Символ используется для якорных ссылок и поэтому должен быть закодирован, если используется в качестве «данных» в URL. Вы можете использовать urlencode PHP функция для этого. # символ будет переводиться в %23

1

в URL # вести себя как хэш-тег, который называется Fragment identifier

Javascript: window.location.hash; // это жало возврата, начинающееся с # тег

Вам нужно будет закодировать компонент URL в коде на стороне сервера, чтобы сохранить сообщение

header("Location:restaurantsList.php?msg=".
urlencode("Restaurant 100#we updated successfully"));

ИЛИ ЖЕ

header("Location:restaurantsList.php?msg=Restaurant 100%23we updated successfully");
1

Вам нужно urlencode строка после msg=:

header("Location:restaurantsList.php?msg=" . urlencode("Restaurant 100#we updated successfully");
1
По вопросам рекламы [email protected]