Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как передать данные из формы в обрабочик только после проверки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как сделать так, чтобы данные из формы передавались только по
stranger140569
Отправлено: 16 Февраля, 2011 - 00:14:44
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2010  
Откуда: Россия


Помог: 0 раз(а)




Подскажите пожалуйста, как передать данные в обработчик, только после того, как пользователь заполнил все поля. Если я напишу в action формы имя обработчика, то как возратится обратно в форму и дать возможность пользователю исправить данные? Код внизу:

Спойлер (Отобразить)

Спойлер (Отобразить)

(Отредактировано автором: 16 Февраля, 2011 - 01:03:44)



-----
Умение ценить опыт старших прямо пропорционально количеству изобретенных велосипедов.
 
 Top
grefon
Отправлено: 16 Февраля, 2011 - 00:32:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Вариантов масса!
1) Можно сделать проверку формы на javascript на стороне клиента. Например поставить свойство disabled на кнопку "отправить", и написать функцию, которая при заполнении всех необходимых полей формы будет разблокировать кнопку "отправить".
2) Если все оставлять на пхп, то не стоит разбивать форму и скрипт обработчик на отдельные файлы. Когда все будет вместе - намного удобней.
3) Можно занести параметры в сессию. То есть Вы отправляете данные к примеру из поля name, проверяете их в скрипте, если они Вас устраивают, то заносите в глобальный массив session переменную: $_SESSION['form_name'] = $_POST['name'], а дальше делаете редирект на следующий скрипт где проверяете значение переменной $_SESSION['form_name'].

Я бы на Вашем месте выбрал 1 или 2 вариант.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
stranger140569
Отправлено: 16 Февраля, 2011 - 01:11:07
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2010  
Откуда: Россия


Помог: 0 раз(а)




Спосибо grefon за ответ, но у меня возникло два вопроса:

1. Где писать session_start() в самом начале скрипта, или в блоке if(count($info) == 0).
2. Как сделать редедерект на обработчик. Редирект на скрипта на самого себя я знаю:
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); а вот на скрипт я еще никогда не делал. Заранее большое спасибо.


-----
Умение ценить опыт старших прямо пропорционально количеству изобретенных велосипедов.
 
 Top
grefon
Отправлено: 16 Февраля, 2011 - 01:38:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Первое: session_start() нужно писать в самом верху.
Второе: я наверное Вас плохо понял. Я думал у Вас 3 файла (1 - сама форма, 2 - скрипт проверки формы, 3 - скрипт в который нужно передать данные из файла 2). Если я неправильно понял, то тогда можно подробнее, в чем именно у Вас трудности?


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
stranger140569
Отправлено: 16 Февраля, 2011 - 01:51:26
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2010  
Откуда: Россия


Помог: 0 раз(а)




grefon пишет:
Я думал у Вас 3 файла (1 - сама форма, 2 - скрипт проверки формы, 3 - скрипт в который нужно передать данные из файла 2).


Дело в том, что скрипт проверки формы (все ли поля заполнены) я совместил вместе с формой. Так будет удобней я думаю. Путаница у меня возникла из-за того, что неправильно оформил код в первом посте. Огорчение А дальше (если все поля заполнены), я хочу передать их в обработчик. Как я должен написать? Так?

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. header(Content-type: text/html; charset=utf-8");
  5. error-reporting(E_ALL);
  6.  


А в блоке if(count($info) == 0)

PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['form_name'] = $_POST['name'];
  3. // и т. д.
  4. // a вот тут я не знаю как!
  5.  

(Отредактировано автором: 16 Февраля, 2011 - 02:06:53)



-----
Умение ценить опыт старших прямо пропорционально количеству изобретенных велосипедов.
 
 Top
grefon
Отправлено: 16 Февраля, 2011 - 02:59:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Все равно не понял куда Вам нужно отправить данные, уж извините за тупость Огорчение
Я бы сделал все так, а там сами выберите, что именно Вам подходит и если подходит:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (isset($_POST['ok'])) { // ПРОВЕРЯЕМ, ОТПРАВЛЕНА ЛИ ФОРМА
  4.  
  5.         if (!isset($_POST['surname']) or !$_POST['surname'])
  6.                 $error[] = "Введите свое имя.";
  7.         if (!isset($_POST['firsname']) or !$_POST['firsname'])
  8.                 $error[] = "Введите свою фамилию.";
  9.         if (!isset($_POST['middlename']) or !$_POST['middlename'])
  10.                 $error[] = "Введите свое отчество.";
  11.         if (!isset($_POST['email']) or !$_POST['email'])
  12.                 $error[] = "Введите email адрес.";
  13.         if (!isset($_POST['age']) or !$_POST['age'])
  14.                 $error[] = "Укажите свой возраст.";
  15.        
  16.         if ($error) { // ПРОВЕРЯЕМ, ЕСТЬ ЛИ ОШИБКИ
  17.                 // ЕСЛИ ЕСТЬ ОШИБКИ ВЫВОДИМ ИХ:
  18.                 echo '<p style="color:red">';
  19.                 foreach ($error as $value) {
  20.                                 echo $value."<br />";
  21.                 }
  22.                 echo '</p>';
  23.                
  24.                 echo '
  25.                 <form action="" method="post">
  26.                         <p>Фамилия: <input name="surname" type="text" value="'.$_POST['surname'].'" /></p>
  27.                         <p>Имя: <input name="firsname" type="text" value="'.$_POST['firsname'].'" /></p>
  28.                         <p>Отчество: <input name="middlename" type="text" value="'.$_POST['middlename'].'" /></p>
  29.                         <p>E-mail: <input name="email" type="text" value="'.$_POST['email'].'" /></p>
  30.                         <p>Возраст: <input name="age" type="text" value="'.$_POST['age'].'" /></p>
  31.                         <input name="ok" type="hidden" />
  32.                         <input name="submit" type="submit" />
  33.                 </form>
  34.                 ';
  35.  
  36.         } else {
  37.          // ЕСЛИ ОШИБОК НЕТ:
  38.  
  39.                 // ВАРИАНТ ПЕРВЫЙ (ПОДГРУЖАЕМ СКПРИПТ ОБРАБОТЧИК)      
  40.                 include("script.php");
  41.                
  42.                 // ВАРИАНТ ВТОРОЙ (ЗАНОСИМ ВСЕ В СЕССИЮ И ДЕЛАЕМ РЕДИРЕКТ)     
  43.                
  44.                 $_SESSION['form_surname'] = $_POST['surname'];
  45.                 $_SESSION['form_firsname'] = $_POST['firsname'];
  46.                 $_SESSION['form_middlename'] = $_POST['middlename'];
  47.                 $_SESSION['form_email'] = $_POST['email'];
  48.                 $_SESSION['form_age'] = $_POST['age'];
  49.                
  50.                 header('Location: script.php');
  51.                 exit;
  52.  
  53.         }
  54. } else { // ЕСЛИ В СКРИПТ НИЧЕГО НЕ ОТПРАВЛЯЛОСЬ ВЫВОДИМ ФОРМУ
  55.  
  56.         echo '
  57.                 <form action="" method="post">
  58.                         <p>Фамилия: <input name="surname" type="text" value="'.$_POST['surname'].'" /></p>
  59.                         <p>Имя: <input name="firstname" type="text" value="'.$_POST['firsname'].'" /></p>
  60.                         <p>Отчество: <input name="middlename" type="text" value="'.$_POST['middlename'].'" /></p>
  61.                         <p>E-mail: <input name="email" type="text" value="'.$_POST['email'].'" /></p>
  62.                         <p>Возраст: <input name="age" type="text" value="'.$_POST['age'].'" /></p>
  63.                         <input name="ok" type="hidden" />
  64.                         <input name="submit" type="submit" />
  65.                 </form>
  66.         ';
  67.  
  68. }
  69.  
  70. ?>


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
stranger140569
Отправлено: 16 Февраля, 2011 - 09:49:51
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2010  
Откуда: Россия


Помог: 0 раз(а)




grefon, большое спасибо!!! Именно то, что нужно!

(Отредактировано автором: 16 Февраля, 2011 - 10:06:16)



-----
Умение ценить опыт старших прямо пропорционально количеству изобретенных велосипедов.
 
 Top
JustUserR
Отправлено: 16 Февраля, 2011 - 13:50:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




stranger140569 пишет:
Я хочу передать их в обработчик. Как я должен написать?
В случае осуществления использования множества различных PHP-приложений применяемых для выполнения последовательных операций по обеспечению получения и отправки информационных полей для пользователя - реализация обмена данными и передачи основного потока управления между PHP-приложениями основывается на внутреннем HTTP-перенапрввлении и механизме сохранения информационных полей в программной сессии


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
stranger140569
Отправлено: 16 Февраля, 2011 - 20:41:32
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2010  
Откуда: Россия


Помог: 0 раз(а)




JustUserR огрмоное спасибо за то что помагаете мне! Улыбка

P. S. Случайно наткнулся на твой тред по Perl. У меня есть мысли по поводу изучения Perl, но уместно ли их писать в твоем треде? Если да, напиши в личку или в этой теме.

stranger140569

(Отредактировано автором: 16 Февраля, 2011 - 20:56:37)



-----
Умение ценить опыт старших прямо пропорционально количеству изобретенных велосипедов.
 
 Top
JustUserR
Отправлено: 18 Февраля, 2011 - 11:33:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




stranger140569 пишет:
JustUserR огрмоное спасибо за то что помагаете мне!
P. S. Случайно наткнулся на твой тред по Perl. У меня есть мысли по поводу изучения Perl, но уместно ли их писать в твоем треде? Если да, напиши в личку или в этой теме.
Пожалуйста! Осуществление использования языка Perl для разработки web-приложений в действительности включает множество аспектов обеспечивающих его преимущество перед создания аналогичных приложений на языке PHP - среди которых в частности осуществляться возможность мануального контроля передачи информационных полей в уровне CGI-интерфейса
Вы можете задать любые интересующие вопросы относящиеся непосредственно к языку Perl и системе исполнения CGI-приложений в соответствующей разделе форума


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB