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 :: post запрос на сервер

 PHP.SU

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


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

> Без описания
forq
Отправлено: 11 Июня, 2011 - 20:32:29
Post Id


Новичок


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


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




Приветствую. Стоит у меня задачка отправить пост запрос на сторонний сервер и получить от него ответ исходя из отправленных данных.

Код мой выглядит так:
PHP:
скопировать код в буфер обмена
  1.  
  2. function send_Data($url){
  3.  
  4.         $vars = false;
  5.         foreach($_POST as $col => $val){
  6.  
  7.                 $vars .= "&$col=$val";
  8.  
  9.         }
  10.  
  11.         $vars = substr($vars, 1);
  12.  
  13.         $ch = curl_init();
  14.         curl_setopt($ch, CURLOPT_URL, $url);
  15.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  16.  
  17.         $user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
  18.         curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  19.  
  20.         $cookie_file = $_SERVER['DOCUMENT_ROOT'].'/test/cookies.txt';
  21.         curl_setopt($ch, CURLOPT_COOKIEFILE,  $cookie_file);
  22.         curl_setopt($ch, CURLOPT_COOKIEJAR,   $cookie_file);
  23.  
  24.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  25.         curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  26.  
  27.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  28.         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  29.  
  30.         curl_setopt($ch, CURLOPT_REFERER, "$url");
  31.  
  32.         curl_setopt ($ch, CURLOPT_POST, 1);
  33.         curl_setopt ($ch, CURLOPT_POSTFIELDS, "$vars");
  34.  
  35.         print $str = curl_exec ($ch);
  36.  
  37. }
  38.  


Браузером я тут, вроде как, прикидываюсь. Реферер передаю. Кукисы в указанный файл записываются. Однако сервер все равно перенаправляет меня на страницу своей формы, не обрабатывая посылаемых ему данных. Подскажите, в чем может быть проблема?

(Отредактировано автором: 12 Июня, 2011 - 12:37:47)

 
 Top
komprenda
Отправлено: 11 Июня, 2011 - 22:32:52
Post Id


Гость


Покинул форум
Сообщений всего: 105
Дата рег-ции: Май 2011  


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




forq пишет:
Приветствую. Стоит у меня задачка отправить пост запрос на сторонний сервер и получить от него ответ исходя из отправленных данных.

Код мой выглядит так:
PHP:
скопировать код в буфер обмена
  1.  
  2. function send_Data($url){
  3.  
  4.         $vars = false;
  5.         foreach($_POST as $col => $val){
  6.  
  7.                 $vars .= "&$col=$val";
  8.  
  9.         }
  10.  
  11.         $vars = substr($vars, 1);
  12.  
  13.         $ch = curl_init();
  14.         curl_setopt($ch, CURLOPT_URL, $url);
  15.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  16.  
  17.         $user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
  18.         curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  19.  
  20.         $cookie_file = $_SERVER['DOCUMENT_ROOT'].'/test/cookies.txt';
  21.         curl_setopt($ch, CURLOPT_COOKIEFILE,  $cookie_file);
  22.         curl_setopt($ch, CURLOPT_COOKIEJAR,   $cookie_file);
  23.  
  24.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  25.         curl_setopt($ch, CURLOPT_TIMEOUT, 3);
  26.  
  27.         curl_setopt($ch, CURLOPT_REFERER, "$url");
  28.  
  29.         curl_setopt ($ch, CURLOPT_POST, 1);
  30.         curl_setopt ($ch, CURLOPT_POSTFIELDS, "$vars");
  31.  
  32.         print $str = curl_exec ($ch);
  33.  
  34. }
  35.  


Браузером я тут, вроде как, прикидываюсь. Реферер передаю. Кукисы в указанный файл записываются. Однако сервер все равно перенаправляет меня на страницу своей формы, не обрабатывая посылаемых ему данных. Подскажите, в чем может быть проблема?


в php есть стандаотная ф-ия чтобы упаковывать массивы в строки для использования в запросах
что не так? смотри поля может скрытые какие есть
 
 Top
forq
Отправлено: 12 Июня, 2011 - 10:28:30
Post Id


Новичок


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


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




Поле скрытое есть, да. Но я, перед тем как делать post запрос, считываю страницу с формой с того сайта и рисую ее у себя на странице. Соответственно у меня появляется форма один в один как на том сайте и уже из нее я отправляю данные.
 
 Top
vsll
Отправлено: 12 Июня, 2011 - 10:55:57
Post Id


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


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


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




CURLOPT_FOLLOWLOCATION, 0
если, для перенапраления какая-нибудь функция на js, то бесполезно
 
 Top
forq
Отправлено: 12 Июня, 2011 - 11:30:41
Post Id


Новичок


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


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




Не помогло. И да, забыл добавить, данные передаются на https.
 
 Top
OrmaJever Модератор
Отправлено: 12 Июня, 2011 - 12:24:22
Post Id



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


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


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




forq пишет:
И да, забыл добавить, данные передаются на https.

с этого начинать надо было
PHP:
скопировать код в буфер обмена
  1. curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, 0);
  2. curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, 0);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
forq
Отправлено: 12 Июня, 2011 - 12:37:06
Post Id


Новичок


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


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




Да, это уже добавлено, забыл тут обновить код. Результат тот же.

(Отредактировано автором: 12 Июня, 2011 - 12:37:19)

 
 Top
OrmaJever Модератор
Отправлено: 12 Июня, 2011 - 12:45:58
Post Id



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


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


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




тогда советую в функции проверить переменую $vars. Мне кажется там немного не то значение


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
forq
Отправлено: 12 Июня, 2011 - 12:58:33
Post Id


Новичок


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


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




Сделал запрос с отображением переменной, выглядит так:

mainPagePart=mainPagePart&mainPagePart:rn1=1&mainPagePart:rn2=2&mainPagePart:rn3=3&mainPagePart:rn4=4&mainPagePart:passField=5&mainPagePart:verifyCaptcha=6&mainPagePart:next=OK&javax_faces_ViewState=j_id6

Исходя из посылаемых данных формы - все как надо.
 
 Top
forq
Отправлено: 12 Июня, 2011 - 18:48:01
Post Id


Новичок


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


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




Посмотрел отправляемые заголовки в firebug. И тут, кажется, обнаружилась неувязочка.

Вот заголовки запроса, отправляемые при заполнении оригинальной формы:

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


А при отправке информации с моей формы дело обстоит иначе:

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


Т.е. не передаются куки. Хотя в файл cookies.txt куки записываются, да и то почему-то только JSESSIONID и TS481b70.

Подскажете что с этим делать?
 
 Top
OrmaJever Модератор
Отправлено: 12 Июня, 2011 - 19:19:46
Post Id



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


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


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




forq пишет:
Подскажете что с этим делать?

проверить ещё 5 раз тот ли это файл и можно ли туда записывать.
курл передаёт куку PHPSESSID а в файле у вас записана JSESSIONID . Вывод: это не тот файл или не та запись


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
forq
Отправлено: 12 Июня, 2011 - 20:31:12
Post Id


Новичок


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


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




Вот в том то и непонятность! Права на запись стоят. Я сейчас очистил файл, отправил форму и данные в этот файл записались: все те же JSESSIONID и TS481b70. А firebug все так же показывает , что передается PHPSESSID. Ниндзя Получается, что файл тот что нужен, иначе в него не записывались бы данные, однако передаваться эти данные из него не хотят.
 
 Top
OrmaJever Модератор
Отправлено: 12 Июня, 2011 - 21:04:28
Post Id



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


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


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




Кстате я не уверен но суть может крытся под носом Улыбка

Куки приходят в заголовках без них не как. Хотя я думаю этот параметр лишь скрывает заголовки но сам курл к ним доступ иметь должен. Вобщем попробовать стоит


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
forq
Отправлено: 12 Июня, 2011 - 21:36:37
Post Id


Новичок


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


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




Не помогает. Ужас какой-то =(

Посмотрел заголовки через get_headers(), вот что показало:

CODE (text):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [0] => HTTP/1.1 200 OK
  5.     [1] => Date: Sun, 12 Jun 2011 18:08:31 GMT
  6.     [2] => Set-Cookie: JSESSIONID=CF6684E07A43C0B75DCC46B5EB2E579B.papplpsc4; Path=/; Secure
  7.     [3] => X-Powered-By: JSF/1.2
  8.     [4] => Connection: close
  9.     [5] => Content-Type: text/html;charset=UTF-8
  10.     [6] => Set-Cookie: TS481b70=7cd28ae3136810cf6df5c763075e9a75b735ef1859b960fc4df5009e60ac0ec5bdba42d2; Path=/
  11. )
  12.  


Может опция Secure мешает?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB