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

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

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

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

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

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

 <input value=Big Ted> 

но это

 <input value="Big Ted"> 

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

Пример Kickoff:

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

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

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

Имейте в виду использование вашей цитаты.

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

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

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

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

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

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

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

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

  <option value="'.$row['name'].'">