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

Обратите внимание, что некоторые из методов, показанные здесь, могут быть использованы для методов "черной" оптимизации а также для парсинга сайтов и кражи информации. Целью данной статьи является только ознакомление, пожалуйста, не используйте любой из фрагментов ниже в незаконных целях.

1 - Обновление своего фейсбук статуса

Хотите автоматически обновлять facebook статус, но не хотите заходить на facebook.com, вводить каждый раз логин и пароль, и, делать это со страниц своего сайта? Просто сохраните следующий код на вашем сервере, определить переменные, и вуаля!

<?PHP
/*******************************
*	Facebook Status Updater
*	Christian Flickinger
*	http://nexdot.net/blog
*	April 20, 2007
*******************************/

$status = 'Новый статус';
$first_name = 'YOUR_FIRST_NAME';
$login_email = 'YOUR_LOGIN_EMAIL';
$login_pass = 'YOUR_PASSWORD';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?m&amp;next=http%3A%2F%2Fm.facebook.com%2Fhome.php');
curl_setopt($ch, CURLOPT_POSTFIELDS,'email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&login=Login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
$page = curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 1);
preg_match('/name="post_form_id" value="(.*)" \/>'.ucfirst($first_name).'/', $page, $form_id);
curl_setopt($ch, CURLOPT_POSTFIELDS,'post_form_id='.$form_id[1].'&status='.urlencode($status).'&update=Update');
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/home.php');
curl_exec($ch);
?>

Дальше интереснее

 Продолжая тему работы сайтов на нескольких поддоменах. К примеру если у Вашего сайта информация распределена так, что часть лежит на одном субдоменее другая на другом. К примеру доска объявлений, каждый город находится на своем поддомене третьего уровня. Это все очень удобное разделение. Но есть один минус. В таких сайтах нельзя применять ajax запрос на другой домен. Если домен влияет лишь на название, и определение категории, а вся логика одна на все поддомены, то все в порядке. Но если Вы к примеру объединили две разные доски, на разных городах, то общение между ними ajax'ом может стать проблемой.

Как получить кросс субдоменные cookies. Вы используете куки на вашем сайте, но когда посетитель приходит на www.sitename.ru и  sitename.ru то cookies будут разные для обоих! Это потому, что, в сущности, www это просто поддомен. Обычно это делается так

setcookie('CookieName', 'Values', time() + 3600, '/');

 

Но для кроссдоменных кук нужно дописать в самом конце вызова .mydomain.ru, точка впереди

setcookie('CookieName', 'Some Values', time() + 3600, '/', '.mydomain.ru');

Тогда куки будут доступны на всех поддоменах Вашего домена, в том числе и www

 

 При работе автоматических парсеров, возникает естественная необходимость подобрать к тексту его ключевые слова. Это необходимо для поисковой оптимизации статьи.

К примеру мы спарсили объявление с доски, в нем продается Apple Iphone 4s, подержанный. Небольшой текст описания с характеристиками и цена.

Из этого текста необходимо выделить ключевые слова. Заполнять их при автоматическом парсинге будет накладно. Поэтому нужно использовать скрипты для выборки ключевых слов.

Для начала, нужно составить список всех слов употребляемых в тексте, с сортировкой по частоте их употребления. Откинув короткие слова (меньше 5-ти знаков) и различные вспомогательные части речи, типа местоимений и наречий.

Представляю Вашему вниманию класс для пакетной обработки файлов jimage. Класс позволяет делать тумбики изображений, создавать коллаж из десятка картинок, и применять различные gd эффекты к изображениям. А также комбинировать все эти действия.

Класс написан мной для конкретного проекта, и с тех пор успешно применяется во других. Исходный код на гитхабе.

Покажу, как использовать на примере создания тумбиков или если говорить научным языком маленьких копий изображений.

<?php 
define('ROOT',dirname(__FILE__)); // для работы скрипта должна быть объявлена
// эта константа содержащая корень сайта
include "class.jimage.php";
$ji = new jimage();
$ji->thumb(ROOT.'/img/1.png',ROOT.'/img/mini_1.png',100); 

элементарно и просто. У метода есть ряд настроек, первой идет путь до изображения. Второй путь до итогового тумбика, 3 и 4 это размеры по ширине и высоте соответственно, 5 - ый параметр это флаг, который может иметь несколько значений 

USE_HOWSET или '' - и ширина и высота должны быть заданы, размер итогового тумбика задается строго, изображение обычно искажается
USE_WIDTH или 'w' - задается только ширина итогового тумбика, высота считается пропорционально по заданному изображению
USE_HEIGHT или 'h' - тоже только по высоте
USE_AUTO или 'a' - по умолчанию, задаем и высоту и ширину, если входящее изображение вертикальное то размеры тумбика расчитываются так, чтобы все изображение влезло в заданные пределы.

Поясню все варианты на примерах, возьмем за основу изображение красавицы Хайден Панеттьери

Подкатегории

Все о разработке на фреймворке Yii