Меню сайта |
|
 |
Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
 |
Форма входа |
|
 |
|
 |  |  |
| Главная » 2010 » Февраль » 10 » Курс "PHP с нуля". Часть 5
02:56 Курс "PHP с нуля". Часть 5 |
PHP и интернет
Очень часто встречаются ситуации, когда нужно подключится к удаленному
серверу, забрать какие-то данные или же отправить их. В этой статье мы
научимся это делать. Рассмотрим простейший пример, нам надо скачать
файл с другого сервера и вывести его содержимое на экран. Для этого мы
будем использовать функцию file_get_contents(). Для примера выведем
поисковую форму Яндекса.
<?php
$yandex = file_get_contents("http://ya.ru"); # В переменную yandex
скачиваем главную страницу Яндекса
echo $yandex; # Выводим ее на экран
?>
Данный скрипт очень просто, но часто может быть полезен для разных
целей. Полученные данные можно парсить: вырезать из них определенные
куски. Для примера нам нужно получить количество проиндексированных
страниц в Яндексе. Для этого мы будем использовать такой код:
<?php
$file=file_get_contents("http://www.yandex.ru/yandsearch?Link=http://wmaster.net&numdoc=10&rd=0");
# Отправляем запрос Яндексу
if(preg_match("!не менее <b>(.*?) </b>!si",$file,$ok)) # Парсим
{
$link=$ok[1]; # В переменной link находиться количество обратных ссылок
}
echo 'У сайта wmaster.net <b>'.$link.' </b> обратных ссылок!';
?>
Этот код сложный, но я думаю, вы разберетесь. Рассмотрим пример
посложнее. Допустим нам надо подключится к WhoIs серверу и узнать
информацию по определенному домену. Для того чтоб подключится к
серверу whois.ripn.net (информация по доменам в русских зонах) мы
будем использовать функцию fsockopen(). Эта функция имеет 2
обязательных параметра: сервер и порт. Пример:
<?php
if($fp = @fsockopen("whois.ripn.net", 43))
{
fputs($fp, "yandex.ru\r\n");
while(!feof($fp))
{
echo fgets($fp,128);
}
fclose($fp);
}
?>
Данный листинг выведет на экран информацию по домену yandex.ru.
Рассмотрим код подробнее:
$fp = @fsockopen("whois.ripn.net", 43) - подключаемся к whois серверу.
Символ @ перед функцией означает, что если возникнут ошибки, они не
будут выведены на экран.
fputs($fp, "yandex.ru\r\n"); - посылаем на сервер запрос. В запросе
содержится имя домена и символ перевода каретки (\r\n). Если этот
символ не посылать, сервер будет считать, что команда не окончена.
while(!feof($fp)) - пока ответ не закончился
echo fgets($fp,128); - считываем ответ по 128 байт и выводим на экран.
fclose($fp); - закрываем соединение.
Как видите ничего сложного. С помощью fsockopen() можно скачивать
страницы, и этот метод лучше чем с file_get_contents(). Пример:
<?php
if($fp = @fsockopen("ya.ru", 80))
{
fputs($fp, "GET / HTTP/1.1");
while(!feof($fp))
{
echo fgets($fp,128);
}
fclose($fp);
}
?>
Данный листинг проделает то же что и первый. Кода немного больше, зато
этот код более оптимизирован под работу с сетью.
Попробуем теперь сформировать POST запрос. Пример:
<?php
$data = "username=wmaster.net&password=qwerty"; # Что будем POSTить
$headers = "POST /login.php HTTP/1.1";
$headers .= "Host: wmaster.net";
$headers .= "Referer: wmaster.net/";
$headers .= "User-Agent: Powered by WMaster.NET";
$headers .= "Content-Type: application/x-www-form-urlencoded";
$headers .= "Content-Length: ".strlen($data)."";
$headers .= $data;
if($fp = @fsockopen("wmaster.net", 80))
{
fputs($fp, $headers);
fclose($fp);
}
?>
Данный код делает POST запрос на сервер. В строчке $headers .=
"User-Agent: Powered by WMaster.NET"; можно вписать название любого
браузера и сделать вид что вы не скрипт
Вот собственно и все что я хотел рассказать. Надеюсь, вы узнали
что-нибудь новое для себя.
|
Просмотров: 325 |
Добавил: cocoucoz
| Рейтинг: 0.0/0 |
| |
 |  |  |
|
Поиск |
|
 |
Календарь |
|
 |
Архив записей |
|
 |
|