Когда я использую 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'].'">