Как сохранить значение в текстовом вводе после отправки?

Я хочу проверить форму, чтобы пользователь записывал имя и фамилию.

Если пользователь записывает только его фамилию, форма должна появиться снова с сообщением об ошибке рядом с полем последнего имени, но значение имени все равно должно быть там.

Я не знаю, как это сделать, хе-хе. Я просто программист PHP для новичков.

Вот что я до сих пор:

<html> <head> </head> <body> <form action="formprueba.php" method="get"> <dl> <dt>Last Name:</dt> <dd><input type="text" value="" name="name" /> <?php if((isset($_GET['name'])) && ($_GET['name'] == "")){ echo "Please write a correct name."; } ?> </dd> <dt>Last Name:</dt> <dd><input type="text" value="" name="lastname" /> <?php if((isset($_GET['lastname'])) && ($_GET['lastname'] == "")){ echo "Please write a correct last name."; } ?> </dd> <br /> <dt> <input type="submit" value="enviar" /> </dt> <input type="hidden" name="enviado" value="j"/> </dl> </form> </body> 

Кроме того, я уверен, что эта проверка является ужасной, если у вас есть несколько минут, я был бы действительно графом, если кто-то может показать мне более эффективный способ проверки (без использования сторонних аддонов).

Спасибо, ТАК.

Solutions Collecting From Web of "Как сохранить значение в текстовом вводе после отправки?"

Поместите нужную переменную в поле «значение» вашего тега ввода следующим образом:

 <input type="text" value="<?php echo htmlspecialchars($_GET['lastname']); ?>" name="lastname" /> 

И важно процитировать как минимум HTML-символы, которые кто-то может вставить (по htmlspecialchars).

Если пользователь записывает только его фамилию, форма должна появиться снова с сообщением об ошибке рядом с полем последнего имени, но значение имени все равно должно быть там.

Просто получите их значение от $_GET (метод формы, который вы используете)

 <input type="text" value="" name="lastname" value="<?php echo $_GET['lastname'];?>" /> 

и так далее….

Вы также должны использовать функцию htmlspecialchars по соображениям безопасности.

Дополнительная информация здесь.

Если вы делаете что-то вроде

 <input type="text" value="" name="lastname" value="<?php echo $_GET['lastname'];?>" /> 

никогда не забывайте проверять / избегать отображаемого значения, например htmlentities (). В противном случае вы открыты для абсолютно тривиальных атак с использованием javascript!

просто маленькая заметка, которую я должен был усердно изучить: отображение сообщения об ошибке и принуждение пользователя нажимать кнопку «назад» (или делать то же самое с помощью javascript) вообще не сохраняет значения в полях ввода.

Это, похоже, полностью зависит от браузера, например, для меня это работало на Safari, но не на Firefox …

Хорошо делать проверки на стороне сервера. Ваш подход кажется правильным. Вы можете просто сохранить флаг, который сообщит вам в конце страницы о погоде или не подтвердил, что проверка прошла успешно.

пример

$ = Флаг р;

 <?php if((isset($_GET['lastname'])) && ($_GET['lastname'] == "")){ echo "Please write a correct last name."; $flag="false"; } ?> 

затем в нижней части страницы if ($ flag == true) echo "form submit";

О сохранении ценности, которую один из людей правильно упомянул, добавляя значение к вашему тегу ввода

 value="<?php echo $_GET['lastname'];?>" 

Надеюсь это поможет.

Вы можете использовать javascript на стороне клиента – таким образом вы сохраняете поездку на сервер.

Однако недостаток: вы действительно можете выполнять базовую проверку, так как пользователю нельзя доверять (конечно, для мер безопасности). Вы можете по крайней мере «пометить» недопустимые шаблоны, прежде чем совершить дорогостоящую поездку на сервер.

Добавьте это в свою форму, где вы сначала объявите его:

 <form onsubmit="event.preventDefault(); validateMyForm();"> 

Я думаю, Javascript – лучший ответ, если вы можете положиться на Javascript. Но сценарий клиентской стороны может быть перегружен. Поэтому подтвердите свой ввод на сервере позже.