Авторизация без 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/
- Добавлена работа с избранным
- Переделан поиск
- Переделан парсинг
- Постер в материале
- мелкие правки