Всем привет. Вот с помощью этого скрипта
<?php
$da2=file_get_contents("//www.sait.ru");
echo $da2;
echo htmlspecialchars($da2);
?>
По идее на экране появиться сама страница, а ниже ее html код,
Но на сайте есть авторитизация, как сделать чтоб на экране появилась страница, но уже авторитизированного пользователя, незнаю, может надо что – то как -то передать?? Если я в чем то ошибаюсь поправте =))
6 июля 2008 в 20:01
class megoparser {
var $host;// куда коннектимся
var $action;// параметр action формы авторизации
var $login; // имя поля с логином
var $password;// имя поля с паролем
var $hiddentext;// имя поля с скрытым текстом, используется для проверки авторизации
var $loginfield;// значение поля логина для формы (ваш логин)
var $passwordfield; // значение поля пароля для формы (ваш пароль)
var $hiddentextfield; // значение поля c скрытым текстом
function megoparser($host, $action, $login, $password, $hiddentext, $loginfield, $passwordfield, $hiddentextfield) {
$this->host= $host;
$this->action= $action;
$this->login = $login;
$this->password= $password;
$this->hiddentext= $hiddentext;
$this->loginfield= $loginfield;
$this->passwordfield = $passwordfield;
$this->hiddentextfield = $hiddentextfield;
}
function login() {
$this->fp = fsockopen($this->host, 80);
if($this->fp) {
$this->zapr = $this->login."=".$this->loginfield."&".$this->password."=".$this->passwordfield."&".$this->hiddentext."=".$this->hiddentextfield;
fputs($this->fp, "POST ".$this->action." HTTP/1.1\nHost: ".$this->host."\nUser-Agent: Mozilla/4.5 [en] (Win95; I)\nReferer: //".$this->host."/\nContent-Type: application/x-www-form-urlencoded\nContent-length: ".strlen($this->zapr)."\r\n\r\n".$this->zapr);
while(!feof($this->fp)) $this->content .= fgets($this->fp);
fclose($this->fp);
} else {
echo "Ошибка сокета ".$this->host;
exit();
}
}
function session_parce($session_name) {
$this->login();
@preg_match_all("@".$this->session_name."=(.*);@sU", $this->content, $this->sessionid);
$this->sessionid = $this->sessionid[1][0];
if($this->sessionid == "") {
echo "<b>session_parce:</b> не удалось получить идентификатор сессии";
exit();
} else {
return $this->sessionid;
}
}
function loadpage($page, $session_name) {
$this->page = $page;
if($this->session_id== "") {
$this->session_name = $session_name;
$this->sessionid= $this->session_parce($this->session_name);
$this->content= "";
}
$this->fp = fsockopen($this->host, 80);
if($this->fp) {
fputs($this->fp, "GET ".$this->page." HTTP/1.1\nHost: ".$this->host."\nUser-Agent: Mozilla/4.5 [en] (Win95; I)\nReferer: //".$this->host."/\nCookie: ".$this->session_name."=".$this->sessionid."; domain=".$this->host."; path=/;\n\n");
while(!feof($this->fp)) $this->content .= fgets($this->fp);
fclose($this->fp);
} else {
echo "<b>Loadpage:</b> ошибка сокета ".$this->host;
exit();
}
echo $this->content;
}
}
$parser = new megoparser("www.booksgid.com",
6 июля 2008 в 20:01
$parser = new megoparser("www.booksgid.com",
"/",
"login_name",
"login_password",
"login",
"Dead",
"7ftcv6xws",
"submit");
$parser->loadpage("/technology/18177-katalog-shin-i-diskov-jekshin.html", "PHPSESSID");
кусок обрезалсо
5 июля 2008 в 18:03
в приведенном выше скрипте куки хранятся в файле "d:/www/html/testing/сооkiеjar"и считываются оттуда по мере необходимости функциями курла
5 июля 2008 в 16:04
Ну я данные смог передать методом POST, ну чтоб в контакте авторитизироваться не получается, МЕНЯ интересует вопрос как куки передать, ну там Cookie: а дальше чтог? Копировать тот куки который на компе, и вставлять???
5 июля 2008 в 3:02
JavaSсript не нужен, воткод на пхп (тестирован на 5.2.1):
<?php
// а ТЫ заинклюдил php_curl.dll ?!!
function authorize($login, $pass){
$handle=curl_init();
$post=array();
$post['email']=$login;//vkontakte.ru пользует email как логин
$post['pass']=$pass;
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_URL, "//vkontakte.ru/login.php");
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($post));
curl_setopt($handle, CURLOPT_HEADER, true);//чтобы потом получить id
curl_setopt($handle, CURLOPT_COOKIEJAR, "d:/www/html/testing/сооkiеjar");//тут храним куки
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$site_contents=curl_exec($handle);
curl_close($handle);
return $site_contents;
}
function process($url){
$handle=curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_COOKIEJAR, "d:/www/html/testing/сооkiеjar");
curl_setopt($handle, CURLOPT_COOKIEFILE, "d:/www/html/testing/сооkiеjar");
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
$site_contents=curl_exec($handle);
curl_close($handle);
return $site_contents;
}
$login="some@some.some";
$pass="qwerty";
$contents=authorize($login, $pass);//достаточно вызвать один раз в самом начале работы
/*
из заголовков в начале $contents извлекаете айдишник (на него будет переадресация через Location)
*/
$id="id1234567";
$contents=process("//vkontakte.ru/".$id);
echo $contents;
// пысы
// вообще такие вещи элементарно пишутся после получаса чтения
// каментов на пхп.нет
?>
4 июля 2008 в 20:01
тут помимо пхп задействован джаваскрипт так что лучше куки… если не подойдет и тема будет актуальна то в августе мне напиши я тебе напишу скрипт, щас нет времени =(
4 июля 2008 в 13:02
а что, курлы не подошли?
4 июля 2008 в 11:02
Купи передаются по HTTP вместе с запросом. Залогинься браузером, потом выдери из него куки Контакта и вставь в скрипт. Тонкости вставляния в скрипт – на php.net.
4 июля 2008 в 6:01
Давате тогда рассмотрим тот случий, если нужно сайт контакт загрузить, и чтоб я был уже авторитизирован???
3 июля 2008 в 23:01
Курлы решат все твои проблемы=)))
3 июля 2008 в 14:03
посмотри здесь
//ua2.php.net/manual/ru/book.curl.php
3 июля 2008 в 13:04
Учесть надо, что передача может идти POST-ом.
3 июля 2008 в 13:00
какой адрес авторизации на сайте? во тего и впиши $da2=file_get_contents("//www.sait.ru");
только допиши свои данные $da2=file_get_contents("//www.sait.ru/login.php?login=введенное значение логина&pas=введенное значение пароля");
3 июля 2008 в 12:05
А я вообще никак в ПХП Какой-нибудь там getCookie(), setCookie()…
3 июля 2008 в 11:05
Ну если авторитизация с помощью куки, то как будет выглядить код, простоя я ещё слаб в ПХП =), подскажите плиз
3 июля 2008 в 11:04
Скриптом отправить данные для авторизации на сервер. Можно забрать куки и прикладывать их потом при обращении к закрытой странице. Но может работать и без них, зависит от механизма авторизации.