Archive for Серпень 2009
Географія користувачів по ip-адресі
Posted by Цінитель in Все для сайту on 26.08.2009
Існує кілька способів виявити, з якої країни користувач. Основних два:
1) Щоразу звертатись до онлайн-баз даних, де міститься інфа про географію ір-адрес. НЕДОЛІКИ: можлива певна затримка в часі.
2) Мати на сайті власну БД адрес(в MySQL або в навіть в бінарному форматі). НЕДОЛІКИ: цю базу доведеться періодично оновлювати “в ручну”
Обидва вищенаведених способи мають як платні, так і безкоштовні рішення. Провів невелике дослідження існуючих рішень. Отже:
1)ip-to-country.webhosting.info – онлайн-сервіс, працює не стабільно
2)whois.ripe.net – теж саме
3)PHP-IP2Location-2.20 – треба качати базу ір-адресів собі на сайт, але ця база в них не безкоштовна
4)http://www.maxmind.com/app/php – теж треба качати базу, але вона безкоштовна. До того ж цей сервіс часто рекомендують.
Встановив. Працює. Підключається достатньо просто. Рекомендую :)
До речі цей же maxmind.com пропонує базу і по містам, а не тільки по країнам. Точність обіцяють досить високу.
Боротьба з кешем в AJAX
Щоб вимкнути кеш при аякс-запитах в php-файлі, який ПЕРЕДАЄ дані вставити наступні рядки:
header( 'Expires: Mon, 26 Jul 1970 05:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' );
Якщо ж побороти кеш не вдається жодними засобами, то може допомогти наступний примітивний трюк
$no_cache=time()+rand();
Після цього змінна $no_cache додається в якості параметру до рhр-файлу, що викликається
WordPress 2.5.x – рецепти
Час неухильно рухається вперед, а з ним потихеньку міняються версії WordPress. До релізу 3.0 вже не так і далеко, а тим часом я вирішив викласти трохи технічної інформації по роботі з гілкою 2.5.x. В свій час я трохи “погрався” з нею. Якщо досвід – це те, що отримуюєш замість результату, то пропоную глянути на отриманий досвід :)
Безпека
Перед встановленням WP, принаймні гілки 2.5.x, варто виправити у файлі wp-config-sample.php наступні рядки, ввівши свою унікальну фразу(принаймні, розробники надзвичайно наполегливо просять зробити це.):
define('SECRET_KEY', 'put your unique phrase here'); // Change this to a unique phrase.
define('SECRET_SALT', 'put your unique phrase here'); // Change this to a unique phrase.
Введений ключ та солт будуть використовуватись системою в майбутньому.
Завантаження малюнків
Чесно кажучи, якщо пост повністю “технічний”, то гуглити в пошуках хоча б якоїсь картинки до нього мені часто просто лінь. Проте “справжнім” блогери без картинок ніяк. В намаганні стати “справжнім” я зіштовхнувся з певними труднощами при процесі завантаження графічних ресурсів.
Якщо заповнювати контент онлайн, то картинки завантажуються через вбудований редактор: “Додати медіафайл”. Далі (в цій версій WordPress) з’являється вспливаюче вікно(завдяки бібліотеці jQuery 1.2.3) і кнопка “Виберіть файл для завантаження” (для завантаження файлів з локального ПК); також можна вказати лінк з інтернету.
В мене, попри всі старання, кнопка “Виберіть файл для завантаження” не працювала, і я не міг додавати в блог зображення. Як виявилось, існувало два шляхи завантаження файлів: традиційний(через хтмл-форму) і через флеш(спосіб по замовчуванню). Якщо вимкнути в браузері підтримку технології флеш, то почне використовуватись перший шлях. Я так і зробив, і завантаження малюнків запрацювало. Але чому ж не працював варіант через флеш? Як виявилось, це було через те, що в ОС був встановлений флеш-плеєр версії 10. На той момент ця версія не була не то глючна, не то погано підтримувалась сучасними браузерами… Одним словом, зробивши відкат до версії плеєра номер 9, вдалось “запустити” варіант завантаження файлів через флеш.
Постинг
Вдало завантажену картинку прийнято підкріплювати хоча б якимось текстом :) В оформлені “технічного” синтаксису дуже допоможуть спеціальні плагіни WP по підсвітці коду. Зокрема, непогано себе зарекомендував SyntaxHighlighter Plus.
Не зайвим буде і перевірка орфографії. Писати пост у Ворді – зовсім не тривіальна задача. Особисто я пишу одразу в редакторі WP. Тому орфографія перевіряється засобами Firefox з встановленим словником української мови.
Коментування – як вимкнути
Інколи коментарі для дописів абсолютно не потрібні. В WordPress в налаштуваннях можна вимкнути коментарі, але тільки для всіх наступних постів. Щоб вимкнути коментарі для вже готових постів потрібно ставити відповідну галочку в кожному з них, почергово редагуючи. До того ж при вимкнутих коментарях всеодно буде присутній напис на зразок “Коментарі вимкнуті”.
Є інший спосіб – можна відредагувати напряму файл index.php обраної теми і вимкнути фрагмент коду відповідальний за коментарі.
Коректні кодировки в Joomla 1.0.x

Оскільки тільки версія 1.5 Joomla почала використовувати Юнікод, то з попередніми версіями(такими як 1.0.12 і т.д) часто виникають проблеми з КОДИРОВКАМИ. Якщо мова йде про реальну двомовність(чи більше мов), то треба використовувати Юнікод
Якщо ж мова йде про поєднання англійської і кирилиці(укр. + рос.), то проблема вирішується в 3 етапи:
1)Переконатись, що БД працює саме з cp1251. БД має бути саме в цій кодировці, а співставлення в cp1251_general_ci. Якщо щось не так, то виправляється ситуація через дамп бази з його подальшим редагуванням для кожної таблиці із заміною всіх інших кодувань на магічні cp1251:
CREATE TABLE `#__some_table`( поле1 таблиці, поле2 таблиці ) -- ТУТ МОЖЕТ БУТИ TYPE=MyISAM АБО AUTO_INCREMENT=1 DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
2)В файлі includes/databases.php Joomla додати код виду (після 102 рядка)
$this->_table_prefix = $table_prefix;
@mysql_query("SET NAMES 'cp1251'", $this->_resource);
@mysql_query( "set session character_set_server=cp1251", $this->_resource );
@mysql_query( "set session character_set_database=cp1251", $this->_resource );
@mysql_query( "set session character_set_connection=cp1251", $this->_resource );
@mysql_query( "set session character_set_results=cp1251", $this->_resource );
@mysql_query( "set session character_set_client=cp1251", $this->_resource );
$this->_ticker = 0;
3) В файлі language/english.php видозмінити рядок на
DEFINE(’_ISO’,’charset=windows-1251′);
(хоча можна правити шаблони адмінки і фронт-енду напряму)
Отримання інформації про колонки в БД
В тенетах натрапив на цікавий скрипт, що виводить службову інформацію по колонкам таблиці з БД MySQL. Великого прикладного значення скрипт немає – навряд чи хтось захоче писати другий PHPMyAdmin – але для експериментів та навчання згодиться.
mysql_connect('localhost:3306', $user, $password)
mysql_select_db("database");
$result = mysql_query("select * from table")
or die("Query failed: " . mysql_error());
/* отримуємо дані про колонку*/
$i = 0;
while ($i < mysql_num_fields($result)) {
echo "Information for column $i:
\n";
$meta = mysql_fetch_field($result, $i);
if (!$meta) {
echo "No information available
\n";
}
echo "
<pre>blob: $meta->blob
max_length: $meta->max_length
multiple_key: $meta->multiple_key
name: $meta->name
not_null: $meta->not_null
numeric: $meta->numeric
primary_key: $meta->primary_key
table: $meta->table
type: $meta->type
unique_key: $meta->unique_key
unsigned: $meta->unsigned
zerofill: $meta->zerofill</pre>
";
$i++;
}
mysql_free_result($result);