Как установить атрибут значения HTML (с пробелами) - PullRequest
11 голосов
/ 20 июня 2010

Когда я использую PHP для установки значения элемента ввода формы HTML, он работает нормально, если у меня нет пробелов в данных.имя пользователя, оно повторяется обратно ко мне, как и ожидалось.Однако, если я введу «Большой Тед», я получу повторение «Большой» только при отправке формы.

Обратите внимание, что переменная $_POST["Username"] верна;когда я повторяю его с помощью PHP, он устанавливается на «Большой Тед».

Ответы [ 5 ]

22 голосов
/ 20 июня 2010

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

<input value=Big Ted>

а точнее это

<input value="Big Ted">

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

Пример запуска:

<input value="<?php echo (isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''); ?>">
1 голос
/ 18 марта 2014

просто убедитесь, что вы ставите двоеточие после поля, например:

  <option value="'.$row['name'].'">
1 голос
/ 20 июня 2010

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

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

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

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

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

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

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

1 голос
/ 20 июня 2010
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? ('value = "'.$_POST["username"].'"') : "value = \"\""; ?> />

Будьте в курсе использования вашей цитаты.

1 голос
/ 20 июня 2010
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = '".$_POST["username"]' : "value = ''"; ?> />

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...