Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вопрос по $_SESSION
 
 автор: designshadow   (06.08.2009 в 21:29)   письмо автору
 
 

Имеется форма комментариев , допустим пользователь вводит текст, но не вводит имя, проверка срабатывает на обработчике и не добавляет комментарий. Нажимаешь в браузере "Back" текст введённый пользователем остался.

Начал пользоваться сессиями($_SESSION), делаю тоже самое , после нажатия "Back" текста нет. Как сделать так чтобы введённая информация оставалась как и раньше? Создать специальную сессию для этого?

  Ответить  
 
 автор: speedsoft   (06.08.2009 в 22:31)   письмо автору
 
   для: designshadow   (06.08.2009 в 21:29)
 

Может я заблуждаюсь, но сессии тут не причем. Это зависит от браузера. Кто-то при нажатии на БЭК запрашивает кэш, а кто-то заново страницу. вот при кэше данные останутся, а при перезагрузке - нет и тут нужно сделать примерно вот так:


if (isset($_SESSION['text'])) $text=html_special_chars($_SESSION['text']); else $text='';

echo "<input type=text value=\"$text\">";

  Ответить  
 
 автор: designshadow   (07.08.2009 в 02:21)   письмо автору
 
   для: speedsoft   (06.08.2009 в 22:31)
 

В <textarea> value не прокатит!

  Ответить  
 
 автор: Рома   (06.08.2009 в 23:48)   письмо автору
 
   для: designshadow   (06.08.2009 в 21:29)
 

По моему лучшим решением было бы проверять яваскриптом заполненность поля, а при проверке на сервере, если что-то не так - сохранять в сессию и возвращать к форме.

  Ответить  
 
 автор: Trianon   (07.08.2009 в 00:34)   письмо автору
 
   для: designshadow   (06.08.2009 в 21:29)
 

В http-протоколе нет такого метода BACK.
Браузер имеет право показать после этого действия любую картину, к серверу даже не обращаясь.

  Ответить  
 
 автор: designshadow   (07.08.2009 в 02:22)   письмо автору
 
   для: Trianon   (07.08.2009 в 00:34)
 

Ну а что делать?

  Ответить  
 
 автор: Trianon   (07.08.2009 в 02:45)   письмо автору
 
   для: designshadow   (07.08.2009 в 02:22)
 

идти в раздел HTML
B php и сессии тут не при чем.

  Ответить  
 
 автор: designshadow   (07.08.2009 в 02:55)   письмо автору
 
   для: Trianon   (07.08.2009 в 02:45)
 

Я здесь из-за сессии! Нету сессии - нету проблемы!
Как начал использовать сессию, появилась проблема.

  Ответить  
 
 автор: Trianon   (07.08.2009 в 02:58)   письмо автору
 
   для: designshadow   (07.08.2009 в 02:55)
 

Непонятно?
сессия - метод сохранения данных на серверной стороне между обращениями клиента к серверу.
При BACK на клиенте обращение к серверу вообще может не выполняться.

Вы здесь из-за сессий? Так уберите к черту сессии.

  Ответить  
 
 автор: designshadow   (07.08.2009 в 02:59)   письмо автору
 
   для: Trianon   (07.08.2009 в 02:58)
 

Толково!

  Ответить  
 
 автор: sim5   (07.08.2009 в 03:02)   письмо автору
 
   для: designshadow   (07.08.2009 в 02:55)
 

Вводит текст, но не вводит имя, это ошибка и возврат формы пользователю, и делать этот возврат надо так, чтобы никакие повторые данные отправленные пользователем по back или F5 не имели воздействия. А чтобы пользователь "не терял" уже введенных данных, при возврате формы, то в качестве значения полей ее, указывайте принятые от пользователя данные.

  Ответить  
 
 автор: tvv123456   (07.08.2009 в 03:01)   письмо автору
 
   для: 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования