Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка POST без формы 
:(
    Опции темы
BuShaRt
Дата 27.3.2012, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Есть задача. Поноценно сэмулировать работу HTML формы, без самой формы (из PHP). Т.е. есть массива (имя поля => значение поля), который надо запульнуть на удаленный action, так, как это сдела ла бы форма. В интернет по этому вопросу все сводиться к использования cURL, но он отправляет запрос в фоновом режимем, а мне нужноч, чтоб мой сайт сформировал данные и отправил их обрабатываться на удаленном сайте.

Конкретно речь идет о Paypal Standart. В идеале я должен отправлять данные прямиком с формы, на Paypal обработчик по факту нажатия на кнопку "заказать", что для меня не очень удобно т.к. мне необходимо отработать нажатие кнопки, совершить ряд действий и только потом посылать пользователя на оплату.

PM MAIL   Вверх
4epT
Дата 27.3.2012, 14:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Отправка через jQuery ?

Код

$.post("test.php", { name: "John", time: "2pm" } );

PM MAIL   Вверх
Valinur
Дата 30.3.2012, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 21.9.2007
Где: Москва

Репутация: 4
Всего: 6



Идешь на страницу с формой - смотришь исходный код: передаваемые поля, имя скрипта, метод (post,get). Далее в php

Код

 $form_url = 'http://www.site.com/somec/somea/';

$src = http_build_query(
        array(
            "param1" => $param1,
            "param2" => $param2,
            "param3" => $param3,
            )
        );

$timeout = 10;

$context = stream_context_create(array( 
            'http' => array( 
            'method'  => 'POST', // или GET
            'content' => $src, 
            'timeout' => $timeout, 
        ), 
      )); 
      
/**
 * $resultx будет содержать результат выполнения скрипта
 */ 
$resultx = file_get_contents($form_url, false, $context);


Хотя... в принципе от работы курла ничем отличаться не будет...
--------------------
Не бойтесь совершенства, Вы все равно его не достигнете (с) ...
PM MAIL   Вверх
РОМАN
Дата 5.4.2012, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.4.2012

Репутация: нет
Всего: нет



"В интернет по этому вопросу все сводиться к использования cURL, но он отправляет запрос в фоновом режимем"

Что за фоновый режим? у себя на сабмите формы юзаешь без проблем.

Вот пример (самый общий случай):

$curl = curl_init("полный путь к удаленный action");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //для отладки
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $_POST);
$responce = curl_exec($curl);

$responce - если ждешь ответ
PM MAIL   Вверх
BuShaRt
Дата 19.5.2012, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(4epT @  27.3.2012,  14:44 Найти цитируемый пост)
Отправка через jQuery ?

Близко, но не то. JS располагается в теле ответа сервера, а мне нужно, чтоб браузер понял, что от него требуется еще на этапе чтения заголовка ответа


Это сообщение отредактировал(а) BuShaRt - 19.5.2012, 16:49
PM MAIL   Вверх
Fortop
Дата 19.5.2012, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(BuShaRt @  19.5.2012,  16:47 Найти цитируемый пост)
 а мне нужно, чтоб браузер понял, что от него требуется еще на этапе чтения заголовка ответа

Код

header('Location: скриптотправкиданных.php;');
die();


Цитата(BuShaRt @  27.3.2012,  13:46 Найти цитируемый пост)
но он отправляет запрос в фоновом режимем, а мне нужноч, чтоб мой сайт сформировал данные и отправил их обрабатываться на удаленном сайте.

И, да, курл отправляет данные в том режиме, в котором вы запрограммируете свой скрипт.



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
BuShaRt
Дата 20.5.2012, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Fortop, 
location - почти то, что нужно, но им можно передать только get - запрос, а мне нужно отправить post - запрос


Цитата(Fortop @  19.5.2012,  19:52 Найти цитируемый пост)
И, да, курл отправляет данные в том режиме, в котором вы запрограммируете свой скрипт.

В каком режиме его не настраивай, все равно Curl будет работать с удаленным сервером, как клиент. Моя же цель сделать так, что мой сервер дал клиенту команду передать на другой сервер post-запрос с предопределенным набором параметров. Curl я так понимаю, в данном случае вообще не как к делу не относиться. Вот если бы мне нужно было скриптом пообщаться с удаленной формой и вывести результаты - это да...
PM MAIL   Вверх
Sentox
Дата 20.5.2012, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Сайт стоит локально и с него нужно дать команду отправки?
Тогда стоит посмотреть в сторону Selenium, скорее всего в связке с Вашим сервером. Он создаёт свой сервер и становится "прокси" между браузером и Вашим приложением, так что Вы можете давать любые указания непосредственно из программы сервера.

Есть вот такой ещё вариант
 http://symfony.com/doc/current/book/testing.html
но я пока им не интересовался. То же эмулирует функциональные запуски через браузер (хотя точно не скажу, если поинтересуетесь отпишитесь так ли это smile)

Это сообщение отредактировал(а) Sentox - 20.5.2012, 15:54
PM MAIL   Вверх
bars80080
Дата 20.5.2012, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



да, есть такие дибильные платёжные системы, где требуется клиентская часть там, где она совсем не нужна.

пользователь заполняет форму, жмёт кнопку "заказать", форма отправляется на твой сервер. он обрабатывает необходимый цикл операций, после чего отдаёт пользователю форму с action платёжника и необходимыми данными, и автоматическим js-отсылателем, вроде:

Код

$(document).ready(function() {
    $('#form').submit();
    $('#submit_button').attr('disabled', true);
});


а также кнопкой сабмит, которая бы смогла отправить эту форму вручную и извиняющей надписью, на случай, если скрипт не сработает

кажущащаяся дыра в безопасности ликвидируется проверочными запросами сервер-сервер и подписью данных, которые в любом случае есть
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.