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
Форумы портала PHP.SU :: Версия для печати :: Импорт с Библио Глобус. Авторизация через curl
Форумы портала PHP.SU » » Работа с сетью » Импорт с Библио Глобус. Авторизация через curl

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

1. Shefarik - 24 Января, 2016 - 15:47:51 - перейти к сообщению
Здравствуйте.
Мне нужно получить страницу с информацией с турами с сервиса Библио Глобус. У них изменился способ авторизации и с ним у меня пока проблема. У них есть API по выгрузке но по авторизации не очень много написано http://export.bgoperator.ru/load-xml-prices.html. Как и написано инстурукции я получил значения куков A, L и Z. Если авторизироваться на сервисе через браузер и зайти например на $url = 'http://export.bgoperator.ru/yandex?action=resorts' там будет то что в прикрепленном скрине. Мне нужно получить это все в php. Дальше с помощью curl я хочу вытащить данные например по турам.

PHP:
скопировать код в буфер обмена
  1.  
  2.         $header  = array(
  3.           'Accept-Encoding: gzip',
  4.         );
  5.  
  6.         $cookie = "A=" . $a . ";L=" . $l . ";Z=" . $z;
  7.  
  8.         $curl = curl_init();
  9.         curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  10.         curl_setopt($curl, CURLOPT_URL, $url);
  11.         //Настойка опций cookie
  12.         curl_setopt($curl, CURLOPT_COOKIE, $cookie);
  13.         curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
  14.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  15.         curl_setopt($curl, CURLOPT_TIMEOUT, 5);
  16.         curl_setopt($curl, CURLOPT_HEADER, 1);
  17.         $result = curl_exec($curl);
  18.         curl_close($curl);
  19.  


В $a, $l и $z значения кук, $url = 'http://export.bgoperator.ru/yandex?action=resorts'

Но в $result я получаю страницу что по $url но для неавторизированого пользователя , тоесть выдает код с «Регистрация для агентств»,«Регистрация для частных лиц»

Как мне улучшить код что б проходила авторизация и я мог получить нужную информацию?
2. Shefarik - 26 Января, 2016 - 00:26:26 - перейти к сообщению
Обновил код до:
PHP:
скопировать код в буфер обмена
  1.  
  2.         $header  = array(
  3.           'Accept-Encoding: gzip',
  4.         );
  5.  
  6.         $cookie = "A=" . $a . ";L=" . $l . ";Z=" . $z;
  7.         $path = drupal_get_path('module', 'bgtours_importer');
  8.  
  9.         $curl = curl_init();
  10.         curl_setopt($curl, CURLOPT_URL, $login_url);
  11.         curl_setopt($curl, CURLOPT_HEADER, 1);
  12.         curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  13.         curl_setopt($curl, CURLOPT_POST, 1);
  14.         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  15.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  16.         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  17.         curl_setopt($curl, CURLOPT_COOKIEJAR, $path . '/cookie.txt');
  18.         curl_setopt($curl, CURLOPT_COOKIEFILE,  $path . '/cookie.txt');
  19.         curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
  20.         // curl_setopt($curl, CURLOPT_HEADERFUNCTION, "getCookie");
  21.         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  22.         curl_setopt($curl, CURLOPT_POSTFIELDS, //тут переменные которые будут переданы методом POST
  23.           array (
  24.             'login' => 'login_changed_for_forum',
  25.             'pwd' => 'pass_changed_for_forum',
  26.           ));
  27.         // curl_setopt($curl, CURLOPT_COOKIE, $cookie);
  28.         $result = curl_exec($curl);
  29.         drupal_set_message('<pre><b>Debug 1:</b> ' . check_plain(print_r($result, 1)) . '</pre>');
  30.         if(!$result) {
  31.           $error = curl_error($curl).'('.curl_errno($curl).')';
  32.           drupal_set_message('<pre><b>Debug curl_error:</b> ' . check_plain(print_r($error, 1)) . '</pre>');
  33.         }
  34.         else{
  35.           curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  36.           curl_setopt($curl, CURLOPT_URL, $url);
  37.           //Настойка опций cookie
  38.           curl_setopt($curl, CURLOPT_COOKIE, $cookie);
  39.           curl_setopt($curl, CURLOPT_USERAGENT, "Opera/10.00 (Windows NT 5.1; U; ru) Presto/2.2.0");
  40.           curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  41.           curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  42.           curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  43.           curl_setopt($curl, CURLOPT_HEADER, 1);
  44.           curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  45.           curl_setopt($curl, CURLOPT_COOKIEJAR, $path . '/cookie.txt');
  46.           curl_setopt($curl, CURLOPT_COOKIEFILE,  $path . '/cookie.txt');
  47.           $result = curl_exec($curl);
  48.         }
  49.         curl_close($curl);
  50.         drupal_set_message('<pre><b>Debug 2:</b> ' . check_plain(print_r($result, 1)) . '</pre>');  
  51.  


пока всеравно в конце в $result страница для не авторизированого пользователя. Почему же не проходит авторизация?

 

Powered by ExBB FM 1.0 RC1