|
|
|
| Имеется форма комментариев , допустим пользователь вводит текст, но не вводит имя, проверка срабатывает на обработчике и не добавляет комментарий. Нажимаешь в браузере "Back" текст введённый пользователем остался.
Начал пользоваться сессиями($_SESSION), делаю тоже самое , после нажатия "Back" текста нет. Как сделать так чтобы введённая информация оставалась как и раньше? Создать специальную сессию для этого? | |
|
|
|
|
|
|
|
для: designshadow
(06.08.2009 в 21:29)
| | Может я заблуждаюсь, но сессии тут не причем. Это зависит от браузера. Кто-то при нажатии на БЭК запрашивает кэш, а кто-то заново страницу. вот при кэше данные останутся, а при перезагрузке - нет и тут нужно сделать примерно вот так:
if (isset($_SESSION['text'])) $text=html_special_chars($_SESSION['text']); else $text='';
echo "<input type=text value=\"$text\">";
|
| |
|
|
|
|
|
|
|
для: speedsoft
(06.08.2009 в 22:31)
| | В <textarea> value не прокатит! | |
|
|
|
|
|
|
|
для: designshadow
(06.08.2009 в 21:29)
| | По моему лучшим решением было бы проверять яваскриптом заполненность поля, а при проверке на сервере, если что-то не так - сохранять в сессию и возвращать к форме. | |
|
|
|
|
|
|
|
для: designshadow
(06.08.2009 в 21:29)
| | В http-протоколе нет такого метода BACK.
Браузер имеет право показать после этого действия любую картину, к серверу даже не обращаясь. | |
|
|
|
|
|
|
|
для: Trianon
(07.08.2009 в 00:34)
| | Ну а что делать? | |
|
|
|
|
|
|
|
для: designshadow
(07.08.2009 в 02:22)
| | идти в раздел HTML
B php и сессии тут не при чем. | |
|
|
|
|
|
|
|
для: Trianon
(07.08.2009 в 02:45)
| | Я здесь из-за сессии! Нету сессии - нету проблемы!
Как начал использовать сессию, появилась проблема. | |
|
|
|
|
|
|
|
для: designshadow
(07.08.2009 в 02:55)
| | Непонятно?
сессия - метод сохранения данных на серверной стороне между обращениями клиента к серверу.
При BACK на клиенте обращение к серверу вообще может не выполняться.
Вы здесь из-за сессий? Так уберите к черту сессии. | |
|
|
|
|
|
|
|
для: Trianon
(07.08.2009 в 02:58)
| | Толково! | |
|
|
|
|
|
|
|
для: designshadow
(07.08.2009 в 02:55)
| | Вводит текст, но не вводит имя, это ошибка и возврат формы пользователю, и делать этот возврат надо так, чтобы никакие повторые данные отправленные пользователем по back или F5 не имели воздействия. А чтобы пользователь "не терял" уже введенных данных, при возврате формы, то в качестве значения полей ее, указывайте принятые от пользователя данные. | |
|
|
|
|
|
|
|
для: designshadow
(06.08.2009 в 21:29)
| | Вот еще лучший вариант и не надо использовать кнопку бэк(чуток правда усложниться обработчик):
В файле который обрабатывает введенную инфу просто создайте(или скопируйте) такую же форму как и в файле-исходнике(короче файл с формой). И если что-то не удовлетворяет выводите эту форму предварительно в value прописав, то что людь ввел на предыдущей странице например допустим пользователь не заполнил поле login
<? if (empty($_post['login']) || empty................)
{
echo "Вы заполнили не все поля
<form..........>
<input .......... value='$_post['login']'>
<input .......... value='$_post['name']'>
<input .......... value='$_post['sername']'>
...............................................
</form>
";
}
?>
|
Только с textarea это не прокатит! Но это не страшно делайте так:
<?
echo "<textarea...>".$text."</textarea>";// проьте правописание а то я неуверен что слово правильно написал
?>
|
НУ в принципе и всё и не надо мудиться нажимать на бэк(что кстати делает покрасивше сайт:)! Все не заполненые поля остануться таковыми, а заполненые будут заполнены так как заполнил их пользователь и не надо будет их по новому заполнять.
Кстати для особо одаренных: в форме нужно указывать страницу обработчик, то есть по сути можно вообще поставить #.
И Еще ТРИОНОН дельные вещи тут говорит: СЕССИИ(и php) Здесь не причем!
____________________
Извиняюсь если немного коряво получилось. http://www.phpsite.z4.ru | |
|
|
|