Категория «PHP»

Радости и проблемы PHP 5.3

PHP 5.3 радует всеми своими последними изменениями. Правда, руки ещё не дошли до всяких замыканий и нэймспэйсов. Зато внушительный прирост производительности уже успел оценить. Вот только ветка 5.3 пока сырая и необходимо обновляться при всех новых апдейтах.

Вот, например, сегодня часа три промучался с решением проблемы, при которой во время ajax-запроса сервер не хочет отдавать значение $_SERVER['HTTP_X_REQUESTED_WITH']. При чём это было абсолютно рандомно, только для некоторых запросов, и никакие попытки дебага не помогали. Я, конечно, допускаю возможность того, что я сам где-то ошибся, но обновление с 5.3.2 до 5.3.3 сразу же решило проблему…

07.09.2010. Раздел: PHP. Ключевые слова: , .

Модуль авторизация через ВКонтакте для Kohana

После открытия API ВКонтакте сразу появилось несколько статей по созданию быстрой авторизации на своём сайте пользователей vk.com, в т.ч. и на PHP. Решил заняться написанием модуля авторизации для Kohana.

Документация по API очень хилая, пришлось изучать js-скрипты durov.at и переносить некоторый функционал на PHP (отправка POST-запроса с получением полной информации о пользователе, вместо ajax-овой реализации на durov.at). Самым сложным местом оказалось генерирование уникальной подписи запроса (как они объясняют, “подпись запроса по стандартной схеме”), т.к. этот процесс нормально не описан.

Модуль Vk умеет логиниться и получать информацию о пользователе и, соответственно, разлогиниваться. Информация хранится в cookie и в сессии. При желании, можно складывать всё в БД, запрашивать дополнительную информацию о пользователе и т.д..

Подробное описание на странице модуля в github. Не забываем создать свое приложение ВКонтакте для тестирования и записать полученные API ID, ключ приложения и защищенный ключ в config/vk.php, а также создать файл xd_receiver.htm по примеру в описании.

Скачать модуль авторизация через ВКонтакте для Kohana на PHP

17.05.2010. Раздел: PHP. Ключевые слова: , .

Коллекция php-скриптов

Сегодня до двух ночи сортировал свою коллекцию никому ненужных скриптов. Есть у меня хобби — скачивать всякие php-скрипты, чтобы подтырить идей-посмеяться над индусами-позавидовать умениям (нужное подчеркнуть). Так вот насобиралась огромная куча этого хлама (особенно много с phpclasses) и я сортировал его по функционалу. В итоге получилось 30 папок (ajax, db, http, mail и др.) на 120 метров (правда, более 80 метров занимают фреймворки всякие… толстый Zend такой толстый).

А вот на домашнем локальном компе есть ещё большая сборка скриптов, которые я качал, когда ещё только начинал изучать php. Помню тогда были популярны всякие каталоги, типа woweb.ru, где можно было откопать отобранный шлак. До сих пор сохранились раритеты, писанные ещё на php3… Хотя среди них есть те, на которых я учился — надо будет написать пост про это :)

08.01.2009. Раздел: PHP. Ключевые слова: , .

Фильтрация данных в PHP

Решил повозиться с php-шными функциями фильтрации данных, которые появились только с версии 5.2.0. Мои впечатления все время двигаются по кривой от «ого и уау» до «ыыы мдзя». Все-таки разработчики пишут язык не для людей. Или я просто не этот самый людь? Может кто-нибудь мне обяснит, какой filter или может быть flag необходимо поставить для поля, чтобы использовать filter_input_array для проверки заполнено ли поле вообще. Это не предусмотрено? Но тогда получается, что толку от этих фильтров мало… Или уже поздно и я много выпил?

17.05.2008. Раздел: PHP. Ключевые слова: , .

Обработка ЧПУ не через .htaccess

Сидел вчера весь день дома, т.к. простудился. Сидел и работал над маленькими проектиками. И вдруг решил написать класс для ЧПУ, который бы мог заменить несколько строчек в .htaccess, где можно было лишь оставить одно правило RewriteRule . /index.php [L]. Конечно, полностью универсального варианта для любых ссылок не придумаешь, но для моего вариант вполне подходит.

class _getLinks {
	function _parser(){
		$furl = parse_url($_SERVER[’REQUEST_URI’]);
		$url = explode(’/’, $furl[’path’]);
		$url = array_filter($url, "strlen");
		$url = array_filter($url, "urlencode");
		$url = array_reverse($url);
		return $url;
	}

	function _getCategory() {
		$res = $this->_parser();
		return $res[1];
	}

	function _getTitle() {
		$var = $this->_parser();
		$res = preg_split("/[.\\s]/",$var[0]);
		return $res[0];
	}
}

Можно использовать ссылки вида: http://server.com/category/subcategory/title.html и получать, соответственно, url категории и url новости, которые уже можно прогонять по базе…

P.S. Подумал немного… Абсолютно бесполезная и ненужная фигня получилася :(

18.02.2007. Раздел: PHP. Ключевые слова: .