Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кеширование формы???

2.0K
07 июля 2005 года
Junkers
47 / / 21.02.2004
Народ, подскажите, плиз, а то я туплю...

Вот у меня на php-странице есть форма (положим, регистрации). Вот юзер заполняет форму, нажимает кнопку и ему выдается предупреждение, мол, не заполнил такое-то поле, и снизу ссылочка "НАЗАД".

Так вот в чем вопрос: как сделать так, чтобы при нажатии ссылки "НАЗАД", т.е. при возвращении юзера к форме, юзеру не пришлось заново забивать все поля, а только исправить свой косяк?
8
07 июля 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Junkers
Народ, подскажите, плиз, а то я туплю...

Вот у меня на php-странице есть форма (положим, регистрации). Вот юзер заполняет форму, нажимает кнопку и ему выдается предупреждение, мол, не заполнил такое-то поле, и снизу ссылочка "НАЗАД".

Так вот в чем вопрос: как сделать так, чтобы при нажатии ссылки "НАЗАД", т.е. при возвращении юзера к форме, юзеру не пришлось заново забивать все поля, а только исправить свой косяк?


Следует понимать, что при нажатии на "Отправить" работает новый скрипт, который и выдаёт предупреждение?
Тогда, сделай на страничке с предупреждением еще одну форму с двумя hidden-полями, в которые записывай содержимое предыдущей формы. Соответственно, когда возвращаешь человека обратно, в соответствующие поля приставляй значение из этих полей.
Т.е., буквально это может выглядеть так:
Форма регистрации:

 
Код:
<form method="POST" action="<проверка.htm>">
<input type="text" name="login" value="<? echo @$_POST['login']; ?>">
<input type="text" name="password" value="<? echo @$_POST['password']; ?>">
<input type="button" value="Отправить">
</form>

Проверка:
 
Код:
//..Проверили, и если поле не заполнено, то:
<form method="POST" action="<форма_регистрации.htm>">
echo "Поле не заполнено!";
<input type="hidden" name="login" value="<? echo @$_POST['login']; ?>">
<input type="hidden" name="password" value="<? echo @$_POST['password']; ?>">
<input type="button" value="Назад">
</form>


А зачем всё это?
271
07 июля 2005 года
MrXaK
721 / / 31.12.2002
а я бы посоветовал рендеринг формы вынести в отдельную функцию.. только первый раз рендерить с пустыми полями, а потом уже с неошибочными при ошибке... то есть что-нить типа такого:
Код:
$frm = "<form method=POST action=\"aaa.php\"><input type=text name=text value=\"{:text:}\"><input type=submit name=submit value=submit></form>";
if( !isset($_POST['submit']) )
  echo $frm = ereg_replace("{:text:}", "", $frm);
else
{
   /* проверка на ошибки */
   if( $err == 1 )
      echo $frm = ereg_replace("{:text:}", $_POST['text'], $frm);
   else
      echo "Success:)";
}

и без всяких хидденов)
8
07 июля 2005 года
mfender
3.5K / / 15.06.2005
[QUOTE]Originally posted by Mr.Hacker
а я бы посоветовал рендеринг формы вынести в отдельную функцию.. только первый раз рендерить с пустыми полями, а потом уже с неошибочными при ошибке... то есть что-нить типа такого...
[QUOTE]
Так я ж и спросил в конце: а зачем всё это?
Но вопрос-то был как раз про многочисленные "туда-сюда". :D
2.0K
07 июля 2005 года
Junkers
47 / / 21.02.2004
Спасибо всем откликнувшимся!

Решил проблему так:

1) Делаю форму с такими полями

 
Код:
<input name="user_name" type="text" id="user_name" size="32" value="<? echo @$_POST['user_name'] ?>" title="Введите Ваш логин">


2) В теге action пишу адрес этой же самой страницы.
3) Дальше проверяю на ошибки
4) Если ошибки есть - вывожу ту же самую форму, если нет - отправляю дальше.

Еще раз всем спасибо!
15
08 июля 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by Junkers
Спасибо всем откликнувшимся!

Решил проблему так:

1) Делаю форму с такими полями

 
Код:
<input name="user_name" type="text" id="user_name" size="32" value="<? echo @$_POST['user_name'] ?>" title="Введите Ваш логин">


2) В теге action пишу адрес этой же самой страницы.
3) Дальше проверяю на ошибки
4) Если ошибки есть - вывожу ту же самую форму, если нет - отправляю дальше.

Еще раз всем спасибо!


Как вариант, (чтоб народ hidden не пугать и код не загромождать) можно их в сессию пихать.

8
08 июля 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Junkers
Спасибо всем откликнувшимся!

Решил проблему так:

1) Делаю форму с такими полями

 
Код:
<input name="user_name" type="text" id="user_name" size="32" value="<? echo @$_POST['user_name'] ?>" title="Введите Ваш логин">


2) В теге action пишу адрес этой же самой страницы.
3) Дальше проверяю на ошибки
4) Если ошибки есть - вывожу ту же самую форму, если нет - отправляю дальше.

Еще раз всем спасибо!


Самый правильный вариант.:!!!:

15
08 июля 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by mfender
Самый правильный вариант.:!!!:


C моей точки зрения вопрос спорный.
Тут надо из надобностей исходить:)
Можно попробывать и это.

8
08 июля 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by shaelf
C моей точки зрения вопрос спорный.
Тут надо из надобностей исходить:)
Можно попробывать и это.


Можно еще поповые окошки открывать с предупреждениями и прочие понты разводить. По мне так вообще самый лучший поступок - использовать Autorization в заголовках :D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог