Вход на сайт с помощью php

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Вход на сайт с помощью php

Сообщение nick7zmail » Ср окт 08, 2014 7:55 pm

Извиняюсь, если было, но в гугле в справке по пхп не нашел...точнее нашел нечто подобное, но не то =).

Вообщем вопрос - можно ли сделать вход на сайт (ну и понятное дело - вытащить инфу) , где нужно вводить логин и пароль? То есть не как в мд выдается логин и пароль во всплывающем окне, а именно в http форме.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Вход на сайт с помощью php

Сообщение sergejey » Чт окт 09, 2014 10:28 am

Да, можно.
На английском ответ здесь: http://stackoverflow.com/questions/3008 ... h-php-curl

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Вход на сайт с помощью php

Сообщение nick7zmail » Пн окт 27, 2014 8:59 pm

Долго бился над этим примером...даже залогинится не могу, не то что данные какие то запросить - при запуске скрипта с использованием curl вылетает страница в ромбиках с вопросами. Не скрин не код пока не могу прислать, завтра выложу. Может библиотеки самой не хватает? У кого нибудь есть рабочие примеры??
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Вход на сайт с помощью php

Сообщение LutsenkoDenis » Вт окт 28, 2014 12:50 am

есть :)
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Вход на сайт с помощью php

Сообщение nick7zmail » Ср окт 29, 2014 10:38 am

LutsenkoDenis писал(а):есть :)
Уважаемый LutsenkoDenis, я так полагаю примеры у Вас в системе? В таком случае можно ссылочку на коннект?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
LutsenkoDenis
Сообщения: 521
Зарегистрирован: Вс апр 07, 2013 9:30 pm
Откуда: Moscow
Благодарил (а): 2 раза
Поблагодарили: 58 раз
Контактная информация:

Re: Вход на сайт с помощью php

Сообщение LutsenkoDenis » Чт окт 30, 2014 2:00 am

Краткая инструкция:
Я положил созданный в п.1 файл в папку /lib, т.к. в этом случае класс подгрузится в систему автоматически.
Если не положить файл в папку /lib, то перед использованием необходимо его подключить: requere_once('путь к файлу');

1. Создать файл http_request.class.php следующего содержания:
СпойлерПоказать

Код: Выделить всё

<?php

/**
 * http_request short summary.
 *
 * http_request description.
 *
 * @version 1.0
 * @author LDV
 */
class http_request
{
   /**
    * Path to cookie file
    * @var string
    */
   var $cookie;
   
   /**
    * Web page url
    * @var string
    */
   var $url;
   
   /**
    * Data to post request
    * @var string
    */
   var $postData;
   
   var $proxy;
   
   var $proxyStatus; 
   
   var $useSSL = false;
   
   var $userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11";
      
   
   
   /**
    * Set cookie file for store logn session
    * @param string $cookieFile 
    * @return boolean
    */
   function SetCookieFile()
   {
      
      $fp = fopen($this->cookie, "w");
      fclose($fp);
      
      if (!file_exists($this->cookie))
      {
         DebMes("Can't create cookie file");
         return false;
      }
      
      return true;
   }
   
   /**
    * Get page content
    * @return mixed
    */
   function GetPageContent()
   {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);   // возвращает веб-страницу
      
      if($this->proxyStatus == 'on' && $this->proxy !== '')
      {
         curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);       // 
         curl_setopt($ch, CURLOPT_PROXY, $this->proxy);       // 
      }
      
      if ($this->cookie !== '' && is_file($this->cookie))
      {
         curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie);
      }
      
      if ($this->useSSL)
      {
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
      }
      
      curl_setopt($ch, CURLOPT_URL, $this->url);
      
      ob_start();
      return curl_exec($ch);
      ob_end_clean();
      curl_close();
   }
   
   /**
    * WebsiteLogin
    * @param string Page Url 
    * @param string Cookie file
    * @param string Data for post request 
    * @param string proxy  
    * @param string $proxyStatus on/off
    * @return 
    */
   function GetAuthPageContent()
   {
      $login = curl_init();
      curl_setopt($login, CURLOPT_COOKIEJAR, $this->cookie);
      curl_setopt($login, CURLOPT_COOKIEFILE, $this->cookie);
      curl_setopt($login, CURLOPT_USERAGENT, $this->userAgent);  
      curl_setopt($login, CURLOPT_TIMEOUT, 40);        // таймаут ответа
      curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);   // возвращает веб-страницу
      
      if($this->proxyStatus == 'on')
      {
         curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE);       // 
         curl_setopt($login, CURLOPT_PROXY, $proxy);       // 
      }
      
      curl_setopt($login, CURLOPT_URL, $this->url);
      curl_setopt($login, CURLOPT_HEADER, TRUE);           // не возвращает заголовки
      curl_setopt($login, CURLOPT_USERAGENT, $this->userAgent);  // useragent
      curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);   // переходит по редиректам
      curl_setopt($login, CURLOPT_POST, TRUE);   // 
      curl_setopt($login, CURLOPT_POSTFIELDS, $this->postData);   // 
      
      if ($this->useSSL)
      {
         curl_setopt($login, CURLOPT_SSL_VERIFYPEER, FALSE);
         curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE);
      }
      
      ob_start();
      return curl_exec($login);
      ob_end_clean();
      curl_close($login);
      unset($login);
   }
   
   function Test()
   {
      return "test!";
   }
}
2. В том месте, где нужно получить страницу защищенную паролем использовать следующий код:
СпойлерПоказать

Код: Выделить всё

// обращаемся к классу
$wr = new http_request();
// сайт использует SSL (true/false)
$wr->useSSL = true;
// печенька(cookie) в которую сохраняются параметры сессии. 
$wr->cookie = "cookie2.txt";
//урл сайта на который нужно войти
$wr->url = "https://mySite.org/";
// данные, необходимые для входа на сайт. Передаются post-запросом.
$wr->postData = 'login=demo&pass=123456';

// создание печеньки
$wr->SetCookieFile();
//осуществляем вход на сайт 
$wr->GetAuthPageContent();
// получаем контент сайта. Если необходимо получить данные с любой страницы, а не только с главной, то нужно заново указать его
$pageContent = $wr->GetPageContent();

// выводим полученный контент. дальнейшую обработку полученной страницы не привожу,т.к. это индивидуально для каждой страницы. 
print_r($pageContent);
За это сообщение автора LutsenkoDenis поблагодарил:
ErmolenkoM (Пт окт 31, 2014 2:17 pm)
Рейтинг: 1.16%
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Ответить