Для начала разберем действия нашего скрипта для «общения» с сервисом:1) получаем подлежащую сокращению ссылку из файла или диалоговой формы;2) соединяемся с сервисом и отправляем запрос;3) получаем ответ сервиса с сокращенной ссылкой и выводим результат.Приступим к написанию, для этого нам понадобится любой текстовый редактор. Создаем новый текстовый файл с расширением php и набираем в нем теги начала и конца сценария. Затем, нам необходимо задать время для ориентировочного выполнения скрипта – все зависит от количества предоставляемых скрипту данных из файла со ссылками. Предположим, что выполнение скрипта должно длиться порядка 120 секунд, записываем:
set_time_limit(120); // данная функция задает работу скрипта в 120 секунд, в то время как по умолчанию время на выполнение скрипта php отводится 30 секунд
Далее считываем данные из файла ссылок или формы:
$url=str_replace(«rn»,»»,file(«urls.txt»)); // где «urls.txt» – есть файл со ссылками для сокращения, а $url является массивом строк
$url=str_replace(«rn»,»»,$_POST[‘urls’]); // здесь данные из формы передаются массиву $url
<html><head><meta http-equiv=Content-Type content=»text/html; charset=windows-1251″><title>Сокращаем работу</title></head><body>
<form action=job.php method=post>Введите ссылки через ENTER:<br><textarea name= urls rows=15 cols=50></textarea><br><input type=submit value=Запуск>
</body></html>
$ur=count($url); // переменная присваивает количество элементов массива $url
Далее выводим полезную информацию:
echo «Скрипт сокращает ссылки через сервис <b>tinyurl.com</b>.<br>»;
echo «Время запуска: «.date(‘h:i:s’).»<br>Ссылок: «.$ur.»<br>»; // здесь, точка используется для соединения нескольких подстрок (переменных) в одну большую строку
Запускаем цикл отправки данных на сервер:
for($a=0;$a<$ur;$a++) { // цикл из $ur подборов с шагом 1 ($a++)
Формируем GET запрос к сервису Tinyurl:
$param=»?source=indexpage&url=».$url[$a].»&submit=Make%20TinyURL%21″;
$head=»GET http://tinyurl.com/create.php».$param.» HTTP/1.0rnrn»; // переменная будет передавать на сервер данные для обработки
Далее, нам нужно открыть соединение, чтобы направить запрос:
$sock=fsockopen(«tinyurl.com»,80,$errno,$errstr,12); // отправка запроса $head на сервер tinyurl.com через 80 порт, таймаут соединения 12 секунд
Подключение будем проверять на ошибку с помощью выражения:
if(!$sock){echo «Ошибка: «.$errno.» — «.$errstr.»<br>»;} // если $sock передает FALSE, значит, произошла ошибка подключения и нужно вывести отчет об ошибке
else{
fputs($sock,$head); // отправка GET запроса
$ans=false; // строка со ссылкой ответа сервера Tinyurl
Будем считывать ответ построчно до получения строки со ссылкой:
while($ans===false){ // повторяем, пока не будет найдена часть ссылки
$pre=fgets($sock); // получаем строку файла
$ans=strpos($pre,»</b><br><small>[<a href=»http://tinyurl.com/»);} // находим подстроку со ссылкой
$pans=mb_substr($pre,$ans,51); // вытаскиваем подстроку со ссылкой, длиной 51 символ
$ost=substr($pans,25); // выбираем ссылку длиной 25 символов
echo «<br>».htmlspecialchars($ost,ENT_QUOTES);}} // выводим ссылку на экран
echo «<br><br>Готово.»;
?>
Наш скрипт готов, теперь сохраняем файл (job.php). Данный скрипт очень полезен в seo и продвижении сайтов, осталось его правильно настроить и пользоваться.Что же дальше? Здесь есть два варианта: 1) у вас есть платный хостинг – загружаем туда наши файлы (job.php и urls.txt или job.php и urls.htm) и запускаем в браузере скрипт; 2) у вас нет платного хостинга – сделаем виртуальный хостинг на своей машине. Как это сделать? – спросите вы, легко – будем использовать бесплатную программу Denwer для создания выделенного сервера ничем не уступающего платному хостингу. Для начала скачиваем программу с официального сайта разработчика (введете в вашем любимом поисковике строку «Denwer» и непременно найдете сайт разработчика), затем установим скачанный EXE файл себе на компьютер. Установка очень простая, тем более она подробно описана на сайте программы. Плюс данной программы – она не оставляет следов своей работы в реестре и на диске, для удаления нужно всего лишь завершить работу виртуального сервера и удалить папку WebServers. Копируем файлы скрипта по следующему адресу: WebServers/home/test1.ru/www/ — в этой папке уже находится один файл index.htm, который нам не помешает. Если вы используете вариант с текстовым файлом urls.txt, то не забудьте в него скопировать ссылки для сокращения, каждую с новой строки. Затем, запускаем виртуальный сервер – кликаем по ярлыку «Start Denwer» на рабочем столе, открываем любимый браузер и пишем в адресную строку следующее:1. http://test1.ru/job.php — если копировали job.php и urls.txt;2. http://test1.ru/urls.htm — если копировали job.php и urls.htm.
Во втором случае нужно скопировать все сокращаемые ссылки через Enter в окно формы и нажать кнопку «Запуск». После окончания работы скрипта на экране появится список уже сокращенных ссылок. Спасибо за внимание, ниже приведем полный код файлов job.php и urls.htm:
«job.php»
<?php
set_time_limit(66);
$url=str_replace(«rn»,»»,file(«urls.txt»));
$ur=count($url);
echo «Скрипт сокращает ссылки через сервис <b>tinyurl.com</b>.<br>»;
echo «Время запуска: «.date(‘h:i:s’).»<br>Ссылок: «.$ur.»<br>»;
for($a=0;$a<$ur;$a++)
{
$param=»?source=indexpage&url=».$url[$a].»&submit=Make%20TinyURL%21″;
$head=»GET http://tinyurl.com/create.php».$param.» HTTP/1.0rnrn»;
$sock=fsockopen(«tinyurl.com»,80,$errno,$errstr,12);
if(!$sock){echo «Ошибка: «.$errno.» — «.$errstr.»<br>»;}
else{
fputs($sock,$head);
$ans=false;
while($ans===false){
$pre=fgets($sock);
$ans=strpos($pre,»</b><br><small>[<a href=»http://tinyurl.com/»);
}
$pans=mb_substr($pre,$ans,51);
$ost=substr($pans,25);
echo «<br>».htmlspecialchars($ost,ENT_QUOTES);
}
}
echo «<br><br>Готово.»;
?>
«urls.htm»
<html><head><meta http-equiv=Content-Type content=»text/html; charset=windows-1251″><title>Сокращаем работу</title></head><body>
<form action=job.php method=post>Введите ссылки через ENTER:<br><textarea name= urls rows=15 cols=50></textarea><br><input type=submit value=Запуск>
</body></html>