Страница 1 из 1

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

Добавлено: Ср окт 08, 2014 7:55 pm
nick7zmail
Извиняюсь, если было, но в гугле в справке по пхп не нашел...точнее нашел нечто подобное, но не то =).

Вообщем вопрос - можно ли сделать вход на сайт (ну и понятное дело - вытащить инфу) , где нужно вводить логин и пароль? То есть не как в мд выдается логин и пароль во всплывающем окне, а именно в http форме.

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

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

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

Добавлено: Пн окт 27, 2014 8:59 pm
nick7zmail
Долго бился над этим примером...даже залогинится не могу, не то что данные какие то запросить - при запуске скрипта с использованием curl вылетает страница в ромбиках с вопросами. Не скрин не код пока не могу прислать, завтра выложу. Может библиотеки самой не хватает? У кого нибудь есть рабочие примеры??

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

Добавлено: Вт окт 28, 2014 12:50 am
LutsenkoDenis
есть :)

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

Добавлено: Ср окт 29, 2014 10:38 am
nick7zmail
LutsenkoDenis писал(а):есть :)
Уважаемый LutsenkoDenis, я так полагаю примеры у Вас в системе? В таком случае можно ссылочку на коннект?

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

Добавлено: Чт окт 30, 2014 2:00 am
LutsenkoDenis
Краткая инструкция:
Я положил созданный в п.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);