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

Форум PHP

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

 

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

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

тема: Приходится использовать 2 обработчика формы
 
 автор: Transform   (20.03.2009 в 09:30)   письмо автору
 
 

Добрый день. Народ, помогите пожалуйста, кто знает, как можно данные из формы преренаправить сначала на "промежуточный" обработчик, минуя основной (это происходит из-за того, что основной обработчик закодирован Зендом, а нужно добавить дополнительное поле, которое будет отсылаться при помощи "промежуточного" обработчика), а потом, чтобы остальные данные из промежуточного отсылались бы в основной обработчик, как будто на пути между формой и основным обработчиком ничего и небыло..

Или: как сотворить команду в промежуточном обработчике, которая бы стала аналогичным действием, как если бы мы заполнив все поля, нажали бы на кнопку "отправить"?

  Ответить  
 
 автор: Zend72   (20.03.2009 в 11:18)   письмо автору
 
   для: Transform   (20.03.2009 в 09:30)
 

Отсылаете всю форму в промежуточный обработчик, он делает все что вам нужно и, далее, по средствам сURL отсылает модифицированные данные в основной обработчик.

  Ответить  
 
 автор: Transform   (20.03.2009 в 12:58)   письмо автору
 
   для: Zend72   (20.03.2009 в 11:18)
 

А не могли бы немного подробней, к примеру:



if "почта ушла удачно", то
{
"делаем команды для отправки на основной обработчик"
}

Спасибо.

  Ответить  
 
 автор: Zend72   (20.03.2009 в 13:24)   письмо автору
 
   для: Transform   (20.03.2009 в 12:58)
 

if "почта ушла удачно", то
{
// Инициируем
$curl = curl_init("Адрес обработчика");
// Устанавливаем необходимые опции
curl_setopt($curl, CURLOPT_POST, 1);
$data = 'zag=test&zag2=test2&zag3=test3';
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// Выполняем запрос
curl_exec($curl);
// Завершаем сеанс
curl_close($curl);
}

Опции CURL по русски

  Ответить  
 
 автор: Zend72   (20.03.2009 в 13:24)   письмо автору
 
   для: Transform   (20.03.2009 в 12:58)
 

<?php
if "почта ушла удачно"
{
// Инициируем
$curl curl_init("Адрес обработчика"); 
// Устанавливаем необходимые опции
curl_setopt($curlCURLOPT_POST1); 
$data 'zag=test&zag2=test2&zag3=test3'
curl_setopt($curlCURLOPT_POSTFIELDS$data); 
// Выполняем запрос
curl_exec($curl); 
// Завершаем сеанс
curl_close($curl);
}
?>


Опции CURL по русски

  Ответить  
 
 автор: Zend72   (20.03.2009 в 13:24)   письмо автору
 
   для: Transform   (20.03.2009 в 12:58)
 

Упс. Руки от холода дражат :-))))) Нажал на мышке мегакнопку, которая делает два клика. Вот второй пост и появился %-))
if "почта ушла удачно", то
{
// Инициируем
$curl = curl_init("Адрес обработчика");
// Устанавливаем необходимые опции
curl_setopt($curl, CURLOPT_POST, 1);
$data = 'zag=test&zag2=test2&zag3=test3';
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
// Выполняем запрос
curl_exec($curl);
// Завершаем сеанс
curl_close($curl);
}

Опции CURL по русски

  Ответить  
 
 автор: Transform   (20.03.2009 в 16:16)   письмо автору
 
   для: Zend72   (20.03.2009 в 13:24)
 

Спасибо, .. Вот только "..test&zag2.." Немного не догнал..

  Ответить  
 
 автор: Zend72   (20.03.2009 в 16:59)   письмо автору
 
   для: Transform   (20.03.2009 в 16:16)
 

Это имена переменных и их значения которые будут переданы методом POST.

Например:

<form method="POST" action="obrabotchk.php">
<input type="text" name="text" value="Bla Bla Bla">
<input type="hidden" name="id" value="123">
</form>

Обработчику будет передано: text="Bla Bla Bla"&id="123"

  Ответить  
 
 автор: Transform   (20.03.2009 в 18:19)   письмо автору
 
   для: Zend72   (20.03.2009 в 16:59)
 

Спасибо большое! Очень познавательно.. Пойду немного отосплюсь и буду пробовать.. П.С.
..а мегакнопка тоже помогла.. В два раза быстрее понял.. :)

  Ответить  
 
 автор: Transform   (21.03.2009 в 10:11)   письмо автору
 
   для: Transform   (20.03.2009 в 18:19)
 

Интересно, скрипт критичен к версии php?

(на моём серевере 4.6)

Я так понимаю, что по аналогии, мне нужно написать, если форма примерно такого содержания (фрагмент):

<INPUT class=input name="fam" maxlength=20>
<INPUT class=input name="name" maxlength=60>
<INPUT class=input name="otch" maxlength=20>


$data = 'fam=$fam&name=$name&otch=$otch';

Но почему-то основной обработчик не понимает значений переменных..

Могут ли быть ещё какие-нибудь нюансы? Спасибо.

  Ответить  
 
 автор: Zend72   (22.03.2009 в 13:08)   письмо автору
 
   для: Transform   (21.03.2009 в 10:11)
 

Это форма которую нужно отправить

<INPUT class=input name="fam" maxlength=20>
<INPUT class=input name="name" maxlength=60>
<INPUT class=input name="otch" maxlength=20>


Это обработчик который получает данные из формы методом POST, как-то их обрабатывает и решает что делать дальше. Так как данные переданы методом POST, то искать их следует в суперглобальном массиве $_POST[]. В данном случае переменную fam найдется здесь $_POST['fam']. Соответственно скрипт должен выглядеть приблизителльно так:
<?php 
//..
// Как то обрабатываем полученные данные...
//..

// Все. Наобрабатываилсь. Теперь нужно переслать данные
// основному обработчику. Это можно сделать с помошью библиотеки cURL
// которая имитирует работу браузера. 
if ("почта ушла удачно")  

// Инициируем сеанс
$curl curl_init("Адрес обработчика");  
// Устанавливаем необходимые опции 
// при ненулевом значении PHP выполняет
// обычный метод HTTP POST. Тип POST будет
// иметь нормальный вид application/x-www- from-urlencoded
// Как видите в качестве значения установлена единица
curl_setopt($curlCURLOPT_POST1); 
// Данные которые будут переданы методом POST 
$data 'fam='.$_POST['fam'].'&name='.$_POST['name'].'&otch='.$_POST['otch']; 
//Послать строку данных методом HTTP POST. 
curl_setopt($curlCURLOPT_POSTFIELDS$data);  
// Выполняем запрос 
curl_exec($curl);  
// Завершаем сеанс 
curl_close($curl); 

?>

  Ответить  
 
 автор: Transform   (23.03.2009 в 06:59)   письмо автору
 
   для: Zend72   (22.03.2009 в 13:08)
 

Zend72, УРА! Вам и Вашей мегакнопке МЕГАСПАСИБО :)
Всё отлично сработало.
---------------
Желаю всем успехов и удач по решению PHP задач!

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

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