2015-05-11 5 views
1

Это не простая ситуация после публикации, потому что страница перенаправляется сюда.Как сохранить значения формы даже после перенаправления страницы назад

У меня есть немного большая форма с примерно 20 или более полями ввода.

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

Итак, как преодолеть эту проблему ...

Я видел некоторых людей, предполагающие использовать $ _SESSION для хранения этих данных. Это безопасно ? У меня более 20 входов, и это большой объем данных.

+0

Данные сеанса в порядке, или вы можете использовать файлы cookie. –

+0

Привет, я думаю, что $ _SESSION - лучшее решение, потому что оно будет хранить кешированные данные или когда пользователь отправит форму, а форма примет эти значения в правильный файл php-файла, вы можете перенаправить эти значения в URL-адресе на с помощью ? и & передавать данные через URL-адрес, я надеюсь, что мой комментарий будет вам полезен. –

+0

Неважно, если вы перенаправляетесь на другую страницу или на другую. Вам просто нужно проверить, находится ли значение для конкретного поля в пост-данных и, если да, отобразить его в атрибуте value. – pawel

ответ

1

Если вы не используете определенную PHP-платформу, есть несколько способов сделать это.

1) Да, вы можете использовать $ _SESSION для хранения информации, если после отправки вам попадает определенное недопустимое поле. Не забудьте использовать session_start(), чтобы начать/получить доступ к сеансу. Это безопасный метод, если вы не беспокоитесь о захвате сеанса; но это другая тема, с ее собственными методами профилактики.

2) Вы можете отправить свою форму на ту же страницу, что и HTML-форму вашей формы (или страницу/функцию, требующую самой HTML-формы). Вы можете проверить в начале, если $_POST не пуст или установлен. Если это так, вы можете выполнить проверку полей и вставить в базу данных. Если вы столкнулись с недопустимым полем, вы можете продолжить (или потребовать) форму HTML. У вас все равно будет доступ к $ _POST, и вы можете заполнить поля формы снова. Ваш код может иметь

<input type="text" name="first_name" value="<?php if(isset($_POST['first_name'])) echo $_POST['first_name'];?>" /> 

Я считаю, что это правильный способ справиться с вашей проблемой, потому что это очень оптимальным способом, чем идти в стычку с помощью $ _SESSION таким образом. Я не считаю, что вам нужно «хранить» данные для вашего дела.

+0

Спасибо! Я сделал проверки поверх одной и той же страницы и добавил перенаправление только после успешной подачи. Это сработало! :-) – TharinduLucky