Показаны сообщения с ярлыком php. Показать все сообщения
Показаны сообщения с ярлыком php. Показать все сообщения

понедельник, 28 марта 2011 г.

ChachedQuery - простое кеширование уровня запросов к БД

Вот например я адовый класс кеширования сделал http://www.ilich.me/cachedquery/.

Назначение - уменьшение количества запросов к БД и обеспечение функционирования в случае отказа БД.

В архиве файл example.php из которого становится, как ChachedQuery использовать. Есть несколько known bugs, но для версии 0.1 вполне рабочая штука.

Буду рад услышать отзывы и пожелания.

среда, 16 марта 2011 г.

Вывод последних сообщений с форума PhpBB

Снёс Джумлу с последнего сайта. Теперь больше никакой Джумлы, всё. В Joomla всё плохо, кроме обилия компонентов. Одного из них мне сильно стало нехватать - это вывод последних сообщений с форума PhpBB. И вот я решил написать маленький класс, реализующий доступ к данным PhpBB.

Вот он: http://www.ilich.me/phpbbworkshop/

Использовать очень просто.
include "phpbbworkshop.php"; // инклюдим
$phpBBWorkshop = new PhpBBWorkshop(); //инстанцируем
$phpBBWorkshop->connect(); // коннектимся
$posts = $phpBBWorkshop->getLastPosts("5, 10, 1",10); //получаем последних сообщений из форумов с айдишниками 5, 10 и 1
$phpBBWorkshop->disconnect(); //дисконектимся

А выводить сообщения можно например так:

foreach($posts as $post){
echo '<a href="' . $post['url'] . '">' . $post['title'] . '</a>';
}

Буду рад, если этот класс пригодится кому-нибудь)

среда, 28 июля 2010 г.

Обработка знака вопроса в .htaccess

Задача:
Сделать обработку url, введенного пользователем, одним файлом.

Например, юзер вводит http://host.com/links - обработка идёт http://host.com/dispatcher.php?url=links. Эта задача решается элементарно:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatcher.php?url=$1 [NC]

Но всё становится во много раз сложнее, если юзер лезет по адресу http://host.com/books/?id=12345. Казалось бы, нужно обрабатывать http://host.com/dispatcher.php?url=books/?id=12345, но вы сами понимаете, это неправильно, т.к. в урле не может быть двух знаков вопроса.

В качестве воркэраунд можно убрать знак вопроса и знак равентса из урлы: http://host.com/dispatcher.php?url=books/id12345 но это не фэн-шуй. К тому же, мои исследования показали, что знак вопроса не обрабатывается в .htaccess вообще.

Как же выйти из положения? Вариант не использовать знак вопроса не годится - мне нужны имеенно такие урлы. Вариант писать отдельный обработчик тоже не годится из соображений универсальности скрипта.

Решение на удивление простое. В dispatcher.php мы берём урлу не $url=$HTTP_GET_VARS["url"], а $url=$_SERVER['REQUEST_URI'].

Я подозреваю, что проблемы какие-то ещё всплывут, но пока не понятно, какие, и как.

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