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

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…

Этот сайт в основном посвящен тому, что мне интересно вне работы. Ведется в порядке хобби.
Со всеми вытекающими из этого последствиями.

Метки: php

Быстрое разворачивание базы данных mqsql на хостинге

Рубрика: MaxSite -> Wordpress

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

В общем, засада. Не знаю, кто как - а я нашел отличное решение.

Знакомитесь: Sypex Dumper 2.

Скрипт устанавливается в отдельную папку на сервере, и работает автономно. При запуске вводите имя и пароль на сервер mysql - он не хранит их нигде (что хорошо с позиции безопасности)? получаете доступ к собственно скрипту.

Собственно, он "заточен" под создание и восстановление бекапов в виде .sql файлов. Причем, по заверениям разработчиков, с большими по размерами файлами он справляется не менее легко, чем с маленькими. Не знаю, не проверял - но вот небольшие (120 Кб) .sql файлы, сгенерированные phpMyAdmin, он "съедает" на ура. Что, в общем от него и требовалось ))

Так что если кому надо - весьма рекомендую.

NB - на сайте есть платные версии, и есть бесплатная. Мне более чем хватило возможностей бесплатной, хотя в платной, наверное, тоже есть своя "фишка", и не одна.

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

Рубрика: Wordpress

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

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

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

php_value memory_limit 64M

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

Рубрика: 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

Рубрика: 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');

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

MySQL Quick Admin Менеджер для работы с БД mysql

Рубрика: Alib.spb.ru

Всем, кому приходилось сталкиваться с разработкой на php/mysq, наверняка известен такой продукт, как phpMyAdmin. Отличный менеджер, который поддерживает кучу полезных функций... Но: большой (читай - не всегда шустрый) и функционально перегруженный. Я, например, порой не использую и 50% от того, что он умеет. И, кстати, сталкивался с парой хостингов, где его либо не дают ставить (используйте наш менеджер - который совсем "никакой"), либо работает он криво (вернее, криво настроен сам mysql - в основном такое встречается при работе с кодировками). Вывод: phpMyAdmin нужен, но далеко не всегда, и не всем.

С другой стороны, а зачем используется менеджер БД на хостинге? Да в первую очередь для того, чтобы "залить" дамп БД, и все. А это уже совсем другая задача (по отношению к задаче разработки БД), которая требует и других (меньших) ресурсов, и вообще проще. Просто проще.

Для таких случаев, наверное, и разрабатывался MySqlQuickAdmin - маленький, быстрый, не сильно навороченный менеджер БД, прекрасная альтернатива phpMyAdmin. В рамках обозначенных выше задач, разумеется. Впрочем, несмотря на свою "малость" полезных фич у него тоже хватает. Например:

  • Простая установка;
  • Русский "из коробки";
  • Возможности (не такие шикарные, как в pma, но вполне приемлемые) для разработчика БД (создание, удаление, переименование таблиц, ключей, полей, ...);
  • Поддержка нескольких баз;
  • Импорт/экспорт .sql файлов с сервер/на сервер;
  • Выполнение SQL команд и просмотр их результатов;

В общем, вполне себе достаточно для того, чтобы нормально работать.

Случайная фотография

Дизайн от: Templates Next | Адаптация d51x