Как сохранить значение в текстовом поле после отправки? - PullRequest
5 голосов
/ 19 февраля 2010

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

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

Я не знаю, как это сделать, хе-хе.Я просто новичок в программировании на 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>

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

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

Ответы [ 8 ]

15 голосов
/ 19 февраля 2010

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

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

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

2 голосов
/ 19 февраля 2010

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

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

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

и т. Д.

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

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

1 голос
/ 19 февраля 2010

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

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

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

0 голосов
/ 29 августа 2016

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

<form onsubmit="event.preventDefault(); validateMyForm();">
0 голосов
/ 19 февраля 2010

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

Пример

$ = флаг ры;

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

тогда внизу страницы если ($ флаг == верно) echo "форма отправки";

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

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

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

0 голосов
/ 19 февраля 2010

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

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

0 голосов
/ 19 февраля 2010

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

0 голосов
/ 19 февраля 2010

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

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

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