Мой сайт
Главная
Вход
Регистрация
Вторник, 17.06.2025, 16:23Приветствую Вас Гость | RSS
Меню сайта

Статистика

Онлайн всего: 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
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Календарь
«  Февраль 2010  »
Пн Вт Ср Чт Пт Сб Вс
1234567
891011121314
15161718192021
22232425262728

Архив записей


Copyright MyCorp © 2025Конструктор сайтовuCoz