Вот например я адовый класс кеширования сделал http://www.ilich.me/cachedquery/.
Назначение - уменьшение количества запросов к БД и обеспечение функционирования в случае отказа БД.
В архиве файл example.php из которого становится, как ChachedQuery использовать. Есть несколько known bugs, но для версии 0.1 вполне рабочая штука.
Буду рад услышать отзывы и пожелания.
Показаны сообщения с ярлыком php. Показать все сообщения
Показаны сообщения с ярлыком php. Показать все сообщения
понедельник, 28 марта 2011 г.
среда, 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>';
}
Буду рад, если этот класс пригодится кому-нибудь)
Вот он: 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'].
Я подозреваю, что проблемы какие-то ещё всплывут, но пока не понятно, какие, и как.
Разумеется, это даже не лазейка, а целые ворота для инъекций. Поэтому урлу следует как следует обработать, но это выходит за рамки данного поста.
Сделать обработку 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'].
Я подозреваю, что проблемы какие-то ещё всплывут, но пока не понятно, какие, и как.
Разумеется, это даже не лазейка, а целые ворота для инъекций. Поэтому урлу следует как следует обработать, но это выходит за рамки данного поста.
Подписаться на:
Комментарии (Atom)