Блог ilyas-ahmatov

Регистрация

Календарь

  Февраль 2012  

Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29

Теги

php  кодинг  разное  скрипт 

На странице

RSS - подписка

php_programmer

Меня долго не было… т.к я был занят(

Но с этого дня я буду сново активно писать в блоге)

8 примеров использования cURL вместе с PHP

cURL и его расширение для PHP libcURL являются очень полезными инструментами при решении таких задач, как имитация веб браузера, отправка форм или регистрация на веб сервисе. В данном уроке мы рассмотрим несколько интересных применений cURL совместно с PHP.

1. Проверяем доступность определённого веб сайта


Как узнать, доступен ли определённый веб сайт? cURL поможет ответить на данный вопрос. Данный скрипт можно использовать совместно с планировщиком для мониторинга сайта.

Замените URL в строке 3 на тот, который вам нужен.  Скопируйте код на свою страницу, и станет известно, доступен ли указанный сайт.

<                      ?php         
if (isDomainAvailible('http://www.ruseller.com'))
{
echo "Работает и готов отвечать на запросы!";
}
else
{
echo "Ой, сайт не доступен.";
}
//Возвращает true, если домен доступен
function isDomainAvailible($domain) {
//Проверка на правильность
if(!filter_var($domain, FILTER_VALIDATE_URL
{
return false;
}
//Инициализация curl
$curlInit = curl_init($domain);
curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curlInit,CURLOPT_HEADER,true);
curl_setopt($curlInit,CURLOPT_NOBODY,true);
curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);
//Получаем ответ
$response = curl_exec($curlInit);
curl_close($curlInit);
if ($response) return true;
return false;
}
? >

2. Замена cURL для функции file_get_contents()

Функция file_get_contents() очень полезная, но на многих хостингах она отключена. С помощью cURL можно написать функцию, которая будет работать в точности как file_get_contents().

function file_get_contents_curl($url) {    
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

3. Получаем последний статус Twitter

С помощью PHP и cURL очень просто получить статус определённого пользователя. Данную информацию можно выводить в блоге.

function get_status($twitter_id, $hyperlinks = true) {    
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1";);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$src = curl_exec($c);
curl_close($c);
preg_match('/< text >(.*)< \/text >/', $src, $m);
$status = htmlentities($m[1]);
if( $hyperlinks )
$status = ereg_replace("[[:alpha:]]+://[^< >[:space:]]+
[[:alnum:]/]", '< a href=http://go.blog.ru/?";%5C%22%5C%5C0%5C%22" >\\0< /a >',$status);
return($status);
}

Использовать функцию очень просто:

echo get_status('catswhocode');

4. Twitter: проверяем отношения между двумя пользователями

Если вам нужно узнать, читает ли ваши твиты определенный пользователь, то можно задействовать API Twitter. Данный скрипт выводит true, если два пользователя, указанные на строчках 18 и 19, находятся в дружеских отношениях на Twitter. В противном случае возвращается false.

function make_request($url) {    
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
/* Получаем соответствие */
 function get_match($regex,$content) {
preg_match($regex,$content,$matches);
return $matches[1];
}
/* Персоны для проверки */
$person1 = 'phpsnippets'; $person2 = 'catswhocode';
/* Отправляем запрос на twitter */
$url = 'https://api.twitter.com/1/friendships/exist';
$format = 'xml'; /* Проверка */ $persons12 = make_request($url.'.'.$format.'?user_a='.$person1.'&user_b='.$person2);
$result = get_match('/< friends >(.*)< \/friends >/isU',$persons12);
 echo $result;
// Возвращаем "true" или "false"

5. Загружаем и сохраняем изображения со страницы с помощью cURL

Данная функция может быть очень полезна: задаем ей URL страницы и она сохраняет все изображения с нее на вашем сервере.

function getImages($html) {     
$matches = array();
$regex = '~http://somedomain.com/images/(.*?)\.jpg~i';
preg_match_all($regex, $html, $matches);
foreach ($matches[1] as $img) {
saveImg($img);
}
}
function saveImg($name) {
$url = 'http://somedomain.com/images/'.$name.'.jpg';
$data = get_data($url);
file_put_contents('photos/'.$name.'.jpg', $data);
}
$i = 1;
$l = 101;
while ($i < $l) {
$html = get_data('http://somedomain.com/id/'.$i.'/');
getImages($html);
$i += 1;
}

6. Конвертируем валюту с помощью cURl и Google

Пересчет валюты достаточно простое дело, но курсы достаточно часто изменяются, поэтому приходится использовать сервисы, подобные Google, для получения текущих значений курса пересчета. Функция currency() получает 3 параметра: исходная валюта, целевая валюта и сумма.

function currency($from_Currency,$to_Currency,$amount) {    
$amount = urlencode($amount);
$from_Currency = urlencode($from_Currency);
$to_Currency = urlencode($to_Currency);
$url = "http://www.google.com/ig/calculator?hl=en&;q=$amount$from_Currency=?$to_Currency";
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$rawdata = curl_exec($ch);
curl_close($ch);
$data = explode('"', $rawdata);
$data = explode(' ', $data['3']);
$var = $data['0'];
return round($var,2);
}

7. Получаем информацию о размере файла с помощью cURL

Как определить размер определенного файла, расположенного на другом сервере? Поможет следующая функция. Она получает 3 параметра: URL файла, и (если требуется) имя пользователя и пароль.

function remote_filesize($url, $user = "", $pw = ""){     
ob_start();
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
if(!empty($user) && !empty($pw)) {
$headers = array('Authorization: Basic ' . base64_encode("$user:$pw"));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
$ok = curl_exec($ch);
curl_close($ch);
$head = ob_get_contents();
ob_end_clean();
$regex = '/Content-Length:\s([0-9].+?)\s/';
$count = preg_match($regex, $head, $matches);
return isset($matches[1]) ? $matches[1] : "unknown";
}

8. Загрузка через FTP с помощью cURL

PHP имеет библиотеку FTP library, но также можно использовать cURL для загрузки файлов на FTP сервер. Вот рабочий пример:

// Открываем файл 
$file = fopen("/path/to/file", "r");
// URL содержит большую часть нужной информации
$url = "ftp://username:password@mydomain.com:21/path/to/new/file";;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Устанавливаем опции curl_setopt($ch, CURLOPT_UPLOAD, 1);
 curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/path/to/file"));
// Устанавливаем режим ASCII (то есть - файл текстовой)
curl_setopt($ch, CURLOPT_FTPASCII, 1);
$output = curl_exec($ch);
curl_close($ch);

Данный урок подготовлен для Вас командой сайта ruseller.com
Источник урока: http://www.catswhocode.com/blog/amazing-things-to-do-with-php-and-curl
Перевел: Сергей Фастунов

Теги: скрипт|кодинг|разное|php

Вот первый скриншот главной страницы!

По поводу дизайна сайта

Сегодня был создан окончательный вариант дизайна.  Кстати на сайте будут вплотную использоваться модальные окна, да и вообще очень много скриптов будет написано именно на JavaScript и JQuery, а соответственно основной функционал сайта будет написан на PHP, а именно на движке Code Igniter. Вот и все новости на сегодня!

CI (Code Igniter)

Вчера я приступил к работе с php движком Code Igniter! Мне он очень нравится!  Там всё легче! И писать меньше! Я конечно ещё его плохо знаю, но потихоньку изучаю!

Спать

Даа…мне нужно уже идти спать! Хочу поскорее завтра, чтобы закончить страницу регистрации! Кстати насчёт социальной сети) Скорее всего я закончу его только через месяца 2! Надеюсь это будет не так! Хочется надеяться…

Цвет фона

Мой лучший друг считает, что будет круто если я сделаю фон у сайта тёмно-зелёным! Незнаю как Вы, но лично я считаю, что это убожество! Не так ли??

Social Network

Сегодня я приступил к созданию социально сети! Настроение конечно не айс и поэтому многое я сегодня не сделаю! Но расчитываю завтра закончить страницу регистрации, так что ждите!

Читате мой блог… Ильяс.