Как установить атрибут значения HTML (с пробелами)

Когда я использую PHP для устанавливания значения входного элемента HTML-формы, это хорошо работает, если у меня нет пробелов в данных.

<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = ".$_POST["username"] : "value = \"\""; ?> />

Если я ввожу "Jonathan" как имя пользователя, оно повторяется назад мне как ожидалось. Если я ввожу "Крупного Ted", однако, я только получаю "Большую" повторную спину, когда я отправляю форму.

Обратите внимание что $_POST["Username"] переменная корректна; когда я повторяю его с помощью PHP, это установлено на "Крупного Ted".

13
задан davidism 1 August 2017 в 13:43
поделиться

4 ответа

Цитируйте это.В противном случае пробел станет просто разделителем атрибутов, а все, что находится после пробелов, будет рассматриваться как атрибуты элемента. Щелкните правой кнопкой мыши страницу в веб-браузере и просмотрите исходный код. Он не должен выглядеть так (также см. Цвета выделения синтаксиса):

<input value=Big Ted>

, а скорее это

<input value="Big Ted">

Не говоря уже о том, что это все равно не работает, когда кто-то имеет цитату в своем имени (и, таким образом, ваш код чувствителен к XSS атаки ). Используйте htmlspecialchars () .

Пример начала:

<input value="<?php echo (isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''); ?>">
25
ответ дан 1 December 2019 в 20:27
поделиться

Как видите, это вообще не вопрос PHP5 или даже PHP.
Базовые знания HTML являются обязательными для того, кто хочет стать пользователем PHP.

А с использованием шаблонов это выглядит более аккуратно:

Получение кода части данных:

$username = "";
if isset($_POST['username'])) $username = htmlspecialchars($_POST["username"]);

И кода шаблона:

<input type="text" name="username" value="<?=$username?>">

Если вы разделите свой код на 2 части, он станет более удобным для поддержки и читаемым .

1
ответ дан 1 December 2019 в 20:27
поделиться
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = '".$_POST["username"]' : "value = ''"; ?> />

Вы должны заключить переменную result в кавычки, чтобы браузер мог знать, каково содержимое ввода.

1
ответ дан 1 December 2019 в 20:27
поделиться
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? ('value = "'.$_POST["username"].'"') : "value = \"\""; ?> />

Обратите внимание на использование цитат.

1
ответ дан 1 December 2019 в 20:27
поделиться
Другие вопросы по тегам:

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