Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…
Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Все изложенное на сайте - мое частное оценочное мнение и не может быть истолковано иначе.
Со всеми вытекающими из этого последствиями.

php

Подписаться на эту метку по RSS

Wordpress: не отображается админка

Просмотров: 8725Комментарии: 8
Wordpress

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

Как оказалось, это WordPress'у мало памяти. Стоило поднять лимит до 64 (!!!!) Мб - так все заработало.

PS для увеличения лимита в .htaccess надо прописать следующее:

php_value memory_limit 64M

Как ограничить количество записей в WordPress

Просмотров: 13921Комментарии: 3
Wordpress

Пост для памяти.

Ограничить вывод записей на любой странице блога Wordpress можно прописав в шаблоне перед циклом While следующий запрос: query_posts('posts_per_page=10');

Таким образом, вывод, например, 5 постов в теме будет выглядеть так:

<?php if (have_posts()) : ?>
<?php query_posts('posts_per_page=5'); ?>
<?php while (have_posts()) : the_post(); ?>
<!--вывод темы: все, что угодно...-->
<?php endwhile; ?>

PS. функция query_posts вообще много чего возвращает. Чуть подробнее - здесь (на русском).

UPD. Как выяснилось, задача решается сильно проще. Ограничить в Wordpress вывод количества постов на страницу не просто, а... очень просто: достаточно пойти в "настройки" - "чтение" и в поле "постов на страницу" выставить нужное значение.

И не надо никаких игр с query_post, если, конечно, не требуется что-то экзотическое...

Неудобство addslashes в php

Просмотров: 3953Комментарии: 0
Alib.spb.ru

Для корректной работы с базами данных в php предусмотрена чудесная функция: addslashes. Делает она одну-единственную, но очень полезную вещь: экранирует кавычки слешами так, чтобы БД при работе со строками, где встречаюьтся кавычки, отрабатывала корректно.

Пример: допустим, в php-скрипт в переменной $_POST['val'] пришло значение Hello, "World"!!!

После обработки addslashes в этой переменной будет содержаться Hello, \"World\"!!! ,что гарантирует, что запрос к БД вида INSERT INTO table_name SET value="Hello, \"World\"!!!" будет выполнен корректно.

Пока вроде все красиво :) Проблема же состоит в том, что при разработке интерфейсов, в которых требуется частое редактирование данных, слеши накапливаются: при следующем "прогоне" через addslashes строа Hello, \"World\"!!! превратится в Hello, \\"World\\"!!! и так далее.

Решений может быть несколько.Можно, например, в скрипте "отлавливать" наличие экранированных слешей, "разэкрантировать" их обратно. Но недавно меня осенило. Можно заменять кавычки соответствующими символами html, которые и в базу пойдут без проблем, и отображаются как надо. Итогом размышлений стала следующая php-функция:

function safesql_str_code($b='')
{
if ($b=='') {return;}
$b = str_replace('"', "&#034",$b);
$b = str_replace("'", "&#039",$b);
$b = str_replace("`", "&#096",$b);
$b = str_replace("'", "&#145",$b);
$b = str_replace("'", "&#146",$b);
$b = str_replace(""", "&#147",$b);
$b = str_replace(""", "&#148",$b);
return $b;
}

"Прогнав" через эту функцию тот же Hello, "World"!!! , мы получим следующую строку: Hello, &#034World&#034!!! , которая спокойно включается в запрос к БД, и не вызывает ошибок.

PS. Для того, чтобы поправить то, что есть в mysql, я использовал функцию mysql REPLACE

UPDATE table_name SET val_field = REPLACE( val_field ,'\\\\"','&#034');
UPDATE
table_name SET val_field = REPLACE( val_field ,'\\\"','&#034');
UPDATE
table_name SET val_field = REPLACE( val_field ,'\\"','&#034');
UPDATE
table_name SET val_field = REPLACE( val_field ,'\"','&#034');

Этих запросов должно быть выполнено столько раз, сколько максимально есть слешей в тексте.

Кое-что про HTML вирусы и лень.

Просмотров: 4323Комментарии: 0
Alib.spb.ru

На одном из сайтов, за которыми я присматриваю, случилась неприятность: он периодически (раз в день) стал заражаться вирусом. Вирус дописывал себя ко всем файлам index.php :(

Первое, что пришло в голову - выставил по ssh всем файлам r--r--r--, то есть дал доступ всем только на чтение. Не помогло - через день вирус был на месте (а он вписывает себя после </html> и после <body>), а в index.php права столи rwxr-xr--.

Я уж, грешным делом, решил, что хостер виноват... или что наши дыру в коде... (самое неприятное для меня - код чужой и не развивается). Потом вспомнил, что сайт пришел "по наследству", почитал в Сети, как распространяется эта зараза, и пришел к выводу, что имею дело с банальным FTP вирусом. Скорее всего, на компьютере предыдущего администратора был прописан FTP доступ, который вирусняк успешно использовал для инфицирования сайта. Я, получив сайт, FTP пароль не поменял - мало ли кому сгодится. За что и поплатился.

С момента смены пароля на FTP все стало хорошо - никаких вирусов.

Мораль сего поста проста до безобразия: меняйте пароли! Как можно чаще! И будет вам счастье...

php5 + fast template, а также про xtemplate

Просмотров: 4089Комментарии: 0
Новости

Данная статья безнадежно устарела. Оставляена для истории.Совершенно неожиданно (и, разумеестся, в самый неподходящий момент) выяснилось, что fast template (стаааренький такой скрипт, который используется для работы с шаблонами) взял и "перестал работать". Перстал работать не сам по себе, разумеется. А потому, что php5 "не переваривает" выражения вида $object->$var - ему, видишь ли, подавай классику, а именно $object->var -соответственно, и "навернулись" несколько моих старых скриптов. Поход на официальную домашнюю страничку меня не утешиил - fast template официально существует только для php4. В итоге у меня ушло немало времени, чтобы переделать все-все-все под xtemplate, которым пользуюсь уже с год, не имея особых проблем ни с реализацией (xtemplate мне вообще кажется более продуманным и удобным с позиции времени, которое тратися на создание приложения с использованием этого класса), ни с php5.

PS. Естественно, перед тем, как писать, ударился в поиск по Сети - нашел несколько классов с тем же названием, с заявленной поддержкой php5 и ... полной несовместимостью с базовым классом. Вот такой вот обло (который, вообще говаория, стимулировал переделку Очень Старых Скриптов в ерном направлении светлого будующего).

PSS. Для тех, кому интересно - ссылки.

  1. Домашняя страничка Fast Template: http://fasttemplate.grafxsoftware.com/
  2. Домашняя страничка Xtemplate: http://www.phpxtemplate.org/

WP-SpamFree – анти-спам плагин для WordPress

Просмотров: 11625Комментарии: 66
Wordpress

"Переехав" на Wordpress, первым делом столкнулся с проблемой спама в комментариях. Количество спам-комментариев в день было пугающим - от 100 в хороший день до 300 в совсем плохой. Выгребать эту помойку - дело неблагодарное, нудное и грустное.

Для решения протестировал ряд плагинов и остановился на WP-SpamFree -плагине, который основан на идее отделения "машины" (спам-бота) от "человека" (пользователя за ПК) с использованием специальных технологий (установка cookie + немного JavaScript). Подобный подход я весьма успешно применял на прошлой версии сайта, так что результат работы плагина меня не удивил: за неделю тестирования - ни одного спам-комментария. Ура! (пока не напишут умных ботов, имитирующих пользователя и живущих "в браузере" - можно жить спокойно).

"Фишка" плагина состоит в том, что внешне для пользователя ничего не изменяется. То есть, никаких картинок, просьб сложить 2 и 11, а от полученного отнять 3, никаких вводов первого дня недели на китайском - НИЧЕГО:) Просто ставишь, активируешь - и наслаждаешься отсутствием спама.При этом "честные" комментарии добавляются совершенно свободно (проверено с разных браузеров и из-под различных ОС - Firefox, IE, Konqueror, Opera).

Остается лишь пожелать удачи в борьбе со спамом:)

Ссылки:

Домашняя страничка плагина: http://www.hybrid6.com/webgeek/plugins/wp-spamfree

Он же на Wordpress.org: http://wordpress.org/extend/plugins/wp-spamfree/

Автор плагина: Scott Allen, aka WebGeek

PS. Текущая версия плагина на момент написания поста - 1.5.8, протестирована на WP 2.3 (по информации на домашней страничке плагина, эта версия работоспособна в WP 2.5)