Авторизация без curl
23 февраля, 2013 · Posted in Без рубрики · Comment
Есть тип веб-сервера, куда поставить curl проблематично.
Но хочется иметь доступ к сайтам с авторизацией.
Посему, пример кода, как это сделать в этих условиях:
// логин и пароль
$postdata = http_build_query(
array(
'login' => $ini['login'],
'passwd' => $ini['password']
)
);
// формируем заголовок
$opts = array(
'http'=>array(
'method'=>"POST",
'header'=>"Content-type: application/x-www-form-urlencoded\r\n User-Agent : Opera/9.80 (X11; Linux i686; U; ru) Presto/2.7.62 Version/11.00 \r\n".
"Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 \r\n".
"Accept-Charset:utf-8, utf-16, *;q=0.1 \r\n".
"Accept-Encoding:identity, *;q=0",
'content' => $postdata
)
);
// сам запрос на авторизацию
$context = stream_context_create($opts);
$result = file_get_contents('http://нужный сайт/login.aspx', false, $context);
$coo = Array();
foreach( $http_response_header as $head){
if(stristr($head, 'Set-Cookie:' )) $coo[] = (str_ireplace('Set-Cookie:', '', $head ));
}
$coo = implode('; ',$coo);
Тут мы получили от сайта куки и собрали их для следующего использования
Используя полученные куки, далее уже получаем страницу, на которой нам нужны данные:
$opts = array(
'http'=>array(
'method'=>"POST",
'header'=>"Content-type: application/x-www-form-urlencoded\r\n User-Agent : Opera/9.80 (X11; Linux i686; U; ru) Presto/2.7.62 Version/11.00 \r\n".
"Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 \r\n".
"Accept-Charset:utf-8, utf-16, *;q=0.1 \r\n".
"Accept-Encoding:identity, *;q=0 \r\n".
"Cookie: ".$coo,
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents('http://нужный сайт/profile.aspx?page='.$f_page, false, $context);
<pre>
———————
Ну и обновился плагин для медиатанков для FS.UA: http://code.google.com/p/fsua/
- Добавлена работа с избранным
- Переделан поиск
- Переделан парсинг
- Постер в материале
- мелкие правки

