Когда я использую PHP для устанавливания значения входного элемента HTML-формы, это хорошо работает, если у меня нет пробелов в данных.
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = ".$_POST["username"] : "value = \"\""; ?> />
Если я ввожу "Jonathan" как имя пользователя, оно повторяется назад мне как ожидалось. Если я ввожу "Крупного Ted", однако, я только получаю "Большую" повторную спину, когда я отправляю форму.
Обратите внимание что $_POST["Username"]
переменная корректна; когда я повторяю его с помощью PHP, это установлено на "Крупного Ted".
Цитируйте это.В противном случае пробел станет просто разделителем атрибутов, а все, что находится после пробелов, будет рассматриваться как атрибуты элемента. Щелкните правой кнопкой мыши страницу в веб-браузере и просмотрите исходный код. Он не должен выглядеть так (также см. Цвета выделения синтаксиса):
<input value=Big Ted>
, а скорее это
<input value="Big Ted">
Не говоря уже о том, что это все равно не работает, когда кто-то имеет цитату в своем имени (и, таким образом, ваш код чувствителен к XSS атаки ). Используйте htmlspecialchars ()
.
Пример начала:
<input value="<?php echo (isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''); ?>">
Как видите, это вообще не вопрос PHP5 или даже PHP.
Базовые знания HTML являются обязательными для того, кто хочет стать пользователем PHP.
А с использованием шаблонов это выглядит более аккуратно:
Получение кода части данных:
$username = "";
if isset($_POST['username'])) $username = htmlspecialchars($_POST["username"]);
И кода шаблона:
<input type="text" name="username" value="<?=$username?>">
Если вы разделите свой код на 2 части, он станет более удобным для поддержки и читаемым .
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = '".$_POST["username"]' : "value = ''"; ?> />
Вы должны заключить переменную result в кавычки, чтобы браузер мог знать, каково содержимое ввода.
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? ('value = "'.$_POST["username"].'"') : "value = \"\""; ?> />
Обратите внимание на использование цитат.