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]   

> Без описания
DreadNAXt
Отправлено: 18 Июня, 2007 - 14:14:17
Post Id


Новичок


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


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




Суть такая. С помощью скрипта я делаю следующее:
Открывается страница, оттуда я получаю некоторые значения.
Потом эти значения методом post отправляю этой же странице.
Но эти значения меняются для каждой новой сессии. И как я понимаю, моя проблема в том, что получение значений и их отправка - это две разные сессии и поэтому при отправке значения уже другие. Есть ли возможность как-то это обойти?
 
 Top
evgenijj
Отправлено: 18 Июня, 2007 - 16:32:53
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




Попробуй еще раз. Какая задача стоит, что ты делал, и что не получается.
 
 Top
DreadNAXt
Отправлено: 18 Июня, 2007 - 16:59:26
Post Id


Новичок


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


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




Ок. Пробую Улыбка
Итак.
Задача.
Открыть страницу (.php), выдернуть оттуда несколько значений, отправить эти значения методом POST этой же странице.

Я делал.
Открываю страницу, заношу её в переменную. С помощью функций обработки строк получаю нужные мне значения.
Дальше у меня есть класс для отправки запросов. Передаю этому классу полученные параметры и он отправляет POST запрос с этими параметрами.

Не получается (это моё предположение)
Похоже что когда я так делаю, то получение значений - это одно подключение к удалённому серверу
Отправка запроса - второе подключение к удалённому серверу
А для каждого подключения те значения, которые я получаю, меняются. Поэтому когда я отправляю запрос, эти значения уже не верны.
Можно ли как-нибудь с этим справиться?
 
 Top
valenok Модератор
Отправлено: 18 Июня, 2007 - 18:52:11
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




можно
http://php.net/Curl
http://php.net/Curlsetopt #CURLOPT_COOKIE

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function login($page,$login,$pass){
  4.         global $ch;
  5.          
  6.         curl_setopt($ch, CURLOPT_URL, $page);
  7.         curl_setopt($ch, CURLOPT_POST, 1);
  8.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  9.         curl_setopt($ch, CURLOPT_POSTFIELDS, 1);
  10.         curl_setopt($ch, CURLOPT_POSTFIELDS,"login=".$login."&pass=".$pass);
  11.         curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
  12.         curl_setopt($ch, CURLOPT_HEADER, 1);
  13.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  14.         $qwe = curl_exec($ch);
  15.         // $qwe = substr($qwe,strpos($qwe,"Set-Cookie"),250);
  16.         if(strpos($qwe,"Location: home.php")===False) die('Login incorrect');
  17.         // Убеждаемся что произошло перенаправление после авторизации
  18.         return $qwe;
  19. }
  20.  
  21.  
  22. function getsess($headers){
  23.         $start = strpos($headers, 'PHPSESSID');
  24.         $end = strpos($headers," ",$start);
  25.         $ssid = substr($headers,$start,($end-$start));
  26.         return substr($ssid,0,-1);
  27. }
  28.  
  29. function restart_curl(){
  30.         global $ch,$ssid;
  31.         curl_close($ch);
  32.         $ch = curl_init();
  33.         curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
  34.         curl_setopt($ch, CURLOPT_COOKIE, $ssid);
  35.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  36. }
  37.  
  38.  
  39. function send($post_vals,$page){
  40.         global $ch;
  41.        
  42.  
  43.         curl_setopt($ch, CURLOPT_POST, 1);
  44.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  45.         curl_setopt($ch, CURLOPT_POSTFIELDS, 1);
  46.         curl_setopt($ch, CURLOPT_POSTFIELDS,$post_vals);
  47.         curl_setopt($ch, CURLOPT_URL, $page);
  48.         return curl_exec($ch);
  49. }
  50.  
  51.  
  52. function read_page($page){
  53.         global $ch;
  54.         curl_setopt($ch, CURLOPT_URL, $page);
  55.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  56.         curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
  57.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  58.         return curl_exec($ch);
  59. }
  60.  


Если на сервере нужно авторизовываться:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $ch = curl_init();
  4. $headers = login();
  5. $ssid = getsess($headers);
  6. restart_curl();
  7. $page_content = read_page($page);
  8. send("var1=abc&var2=cdf&var3=efg",'somepage.php');
  9.  


Если не нужно то:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $ch = curl_init();
  4. $page_content = read_page($page);
  5. $headers = login($page_content);
  6. $ssid = getsess($headers);
  7. restart_curl();
  8. send("var1=abc&var2=cdf&var3=efg","somepage.php");
  9.  



-----
Truly yours, Sasha.
 
My status
 Top
DreadNAXt
Отправлено: 18 Июня, 2007 - 23:24:30
Post Id


Новичок


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


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




Большое спасибо!
 
 Top
kamikadze
Отправлено: 26 Июня, 2007 - 23:24:02
Post Id



Склонен к самоубийству


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


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




DreadNAXt пишет:
Дальше у меня есть класс для отправки запросов. Передаю этому классу полученные параметры и он отправляет POST запрос с этими параметрами.

Давно искал, выложи плиз клас!
 
 Top
valenok Модератор
Отправлено: 27 Июня, 2007 - 13:06:24
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




kamikadze

send("var1=abc&var2=cdf&var3=efg","somepage.php");


-----
Truly yours, Sasha.
 
My status
 Top
kamikadze
Отправлено: 01 Июля, 2007 - 20:52:39
Post Id



Склонен к самоубийству


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


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




Спасиб а то я завтыкал\n\n(Добавление)
Есть вопрос, как быть с установкой cURL в локальных серверах? Не мог бы помочь?
 
 Top
kamikadze
Отправлено: 02 Июля, 2007 - 22:18:31
Post Id



Склонен к самоубийству


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


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




ХЕлп
 
 Top
valenok Модератор
Отправлено: 03 Июля, 2007 - 09:10:50
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




в смысле как установить curl на апачи?
Вроде бы в денвер он встроен, а так придётся пройти следующие этапы:

Установка

Для использования CURL необходимо также собрать PHP с опцией --with-curl[=DIR], где DIR - имя директории, содержащей поддиректории lib и include. Директория "include" должна содержать поддиректорию "curl" с файлами easy.h и curl.h. Директория "lib" должна содержать файл libcurl.a. Начиная с PHP 4.3.0 с помощью опции --with-curlwrappers можно сконфигурировать PHP для использования CURL при работе с удаленными файлами.

Замечание для пользователей Win32: Для работы с этим модулем в Windows необходимо скопировать файлы libeay32.dll и ssleay32.dll из директории DLL Win32 дистрибутива PHP в директорию SYSTEM (Нпример C:WINNTSYSTEM32 или C:WINDOWSSYSTEM)


-----
Truly yours, Sasha.
 
My status
 Top
kamikadze
Отправлено: 03 Июля, 2007 - 16:25:19
Post Id



Склонен к самоубийству


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


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




Ну посмотрим на счёт Деневера
 
 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