Извиняюсь, если было, но в гугле в справке по пхп не нашел...точнее нашел нечто подобное, но не то =).
Вообщем вопрос - можно ли сделать вход на сайт (ну и понятное дело - вытащить инфу) , где нужно вводить логин и пароль? То есть не как в мд выдается логин и пароль во всплывающем окне, а именно в http форме.
Вход на сайт с помощью php
Модератор: immortal
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Вход на сайт с помощью php
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Вход на сайт с помощью php
Да, можно.
На английском ответ здесь: http://stackoverflow.com/questions/3008 ... h-php-curl
На английском ответ здесь: http://stackoverflow.com/questions/3008 ... h-php-curl
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Вход на сайт с помощью php
Долго бился над этим примером...даже залогинится не могу, не то что данные какие то запросить - при запуске скрипта с использованием curl вылетает страница в ромбиках с вопросами. Не скрин не код пока не могу прислать, завтра выложу. Может библиотеки самой не хватает? У кого нибудь есть рабочие примеры??
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Вход на сайт с помощью php
есть 

________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Вход на сайт с помощью php
Уважаемый LutsenkoDenis, я так полагаю примеры у Вас в системе? В таком случае можно ссылочку на коннект?LutsenkoDenis писал(а):есть
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Вход на сайт с помощью php
Краткая инструкция:
Я положил созданный в п.1 файл в папку /lib, т.к. в этом случае класс подгрузится в систему автоматически.
Если не положить файл в папку /lib, то перед использованием необходимо его подключить: requere_once('путь к файлу');
1. Создать файл http_request.class.php следующего содержания:
2. В том месте, где нужно получить страницу защищенную паролем использовать следующий код:
Я положил созданный в п.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!";
}
}
СпойлерПоказать
Код: Выделить всё
// обращаемся к классу
$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
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch