<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DimoninG.ru &#187; WordPress</title>
	<atom:link href="http://dimoning.ru/category/forengines/wp/feed" rel="self" type="application/rss+xml" />
	<link>http://dimoning.ru</link>
	<description>программирование сайтов и скриптов</description>
	<lastBuildDate>Fri, 13 Jan 2012 22:38:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Вырезаем из виджета &#171;meta&#187; ссылки на wordpress.org</title>
		<link>http://dimoning.ru/meta-widget-editing.html</link>
		<comments>http://dimoning.ru/meta-widget-editing.html#comments</comments>
		<pubDate>Fri, 14 Jan 2011 05:21:26 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[Пишем под движки]]></category>
		<category><![CDATA[Разработка сайтов и скриптов]]></category>
		<category><![CDATA[Улучшаем свой блог]]></category>
		<category><![CDATA[на WordPress]]></category>
		<category><![CDATA[meta]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1530</guid>
		<description><![CDATA[Постовой: Нужны окна ПВХ г. Подольск? Их легко купить в компании &#171;Окна Лидер&#187;, дешево, качественно и быстро.
Давненько раздражал меня виджет Meta. Все, кто пользуется платформой WordPress должны были заметить, что при добавлении этого виджета в сайдбар он добавляет не только ссылки &#171;администрирование&#187; и  &#187;выйти&#187;, но еще и предательские прямые (т.е. без nofollow-noindex) ссылки на сайт [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em><a href="http://dimoning.ru/reklama" target="_blank">Постовой</a>: Нужны <a href="http://www.okna-lider.com/podolsk">окна ПВХ г. Подольск</a>? Их легко купить в компании &laquo;Окна Лидер&raquo;, дешево, качественно и быстро.</em></p></blockquote>
<p>Давненько раздражал меня виджет Meta. Все, кто пользуется платформой WordPress должны были заметить, что при добавлении этого виджета в сайдбар он добавляет не только ссылки &laquo;администрирование&raquo; и  &raquo;выйти&raquo;, но еще и предательские прямые (т.е. без nofollow-noindex) ссылки на сайт разработчиков платформы. Из-за чего слабые духом и вовсе отказывались от виджетов, делали весь дизайн как статический файл. А ведь виджеты &#8211; это действительно удобно.</p>
<p>Сейчас, дети мои, я расскажу, как вырезать ненужное нам барахло из виджетов для WordPress 3.0.4 (впрочем, я почти уверен, что способ подходит и для более старых версий и будет подходить для более новых).</p>
<p>Идем в файл /wp-include/default-widgets.php и ищем в нем строчку 280 (у меня), которая начинается на &laquo;class WP_Widget_Meta extends WP_Widget&raquo;.</p>
<p>И приводим HTML-блок в следующий вид (или любой нужный Вам вид):</p>
<div id="_mcePaste">&lt;ul&gt;</div>
<div id="_mcePaste">&lt;?php wp_register(); ?&gt;</div>
<div id="_mcePaste">&lt;li&gt;&lt;?php wp_loginout(); ?&gt;&lt;/li&gt;</div>
<div id="_mcePaste">&lt;?php wp_meta(); ?&gt;</div>
<div id="_mcePaste">&lt;/ul&gt;</div>
<p>Таким образом мы удалили все ненужные нам ссылки из виджета meta. Возможно, для разных версий будут какие-то отличия, поэтому можете писать в комментариях вопросы с указанием версии WP.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/meta-widget-editing.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Как вытащить количество подписчиков в переменную из FeedBurner (PHP).</title>
		<link>http://dimoning.ru/kak-vyitaschit-kolichestvo-podpischikov-v-peremennuyu-iz-feedburner-php.html</link>
		<comments>http://dimoning.ru/kak-vyitaschit-kolichestvo-podpischikov-v-peremennuyu-iz-feedburner-php.html#comments</comments>
		<pubDate>Wed, 10 Mar 2010 21:50:38 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Скрипты PHP]]></category>
		<category><![CDATA[на PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1463</guid>
		<description><![CDATA[Увидел я на одном блоге интересную штуку &#8211; не стандартный счетчик фидбернера, а подпись текстом: подписчиков столько-то. Заинтересовался. И понеслась.
Оказалось, что у FeedBurner&#8217;а есть свой API! Для нашего случая нужно знать следующее. Получить данные (в формате XML) можно по GET запросу http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=[здесь название подписки].
Например, для этого блога запрос будет такой:
http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=dimoning
На выходе получаем не сложное:
&#60;rsp stat=&#187;ok&#187;&#62;
&#60;feed [...]]]></description>
			<content:encoded><![CDATA[<p>Увидел я на одном блоге интересную штуку &#8211; не стандартный счетчик фидбернера, а подпись текстом: подписчиков столько-то. Заинтересовался. И понеслась.</p>
<p>Оказалось, что у FeedBurner&#8217;а есть свой API! Для нашего случая нужно знать следующее. Получить данные (в формате XML) можно по GET запросу http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=[здесь название подписки].</p>
<p>Например, для этого блога запрос будет такой:</p>
<blockquote><p>http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=dimoning</p></blockquote>
<p>На выходе получаем не сложное:</p>
<blockquote><p>&lt;rsp stat=&raquo;ok&raquo;&gt;<br />
&lt;feed id=&raquo;nktg1bcjqmq95fgqgj1q38o0l8&#8243; uri=&raquo;dimoning&raquo;&gt;<br />
&lt;entry date=&raquo;2010-03-09&#8243; circulation=&raquo;348&#8243; hits=&raquo;710&#8243; reach=&raquo;4&#8243;/&gt;<br />
&lt;/feed&gt;<br />
&lt;/rsp&gt;</p></blockquote>
<p>Распарсить это можно, как Вам удобнее. Я сделал простую регулярку:</p>
<blockquote><p>|circulation=\&raquo;([0-9]*)\&raquo;|si</p></blockquote>
<p>Итого, полностью код для получения количества подписчиков выглядит так:</p>
<blockquote><p>$blog = &laquo;snets&raquo;;<br />
$f = file_get_contents (&laquo;http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=snets&raquo;);</p>
<p>preg_match (&laquo;|circulation=\&raquo;([0-9]*)\&raquo;|si&raquo;, $f, $m);<br />
echo $m[1];</p></blockquote>
<p>Само собой, на основе этого можно сделать и свою собственную иконку (с помощью, например, GD2). Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/kak-vyitaschit-kolichestvo-podpischikov-v-peremennuyu-iz-feedburner-php.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ссылки на последние посты одного блога в сайдбаре другого.</title>
		<link>http://dimoning.ru/ssyilki-na-poslednie-postyi-odnogo-bloga-v-saydbare-drugogo.html</link>
		<comments>http://dimoning.ru/ssyilki-na-poslednie-postyi-odnogo-bloga-v-saydbare-drugogo.html#comments</comments>
		<pubDate>Thu, 23 Oct 2008 14:21:20 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Общие советы]]></category>
		<category><![CDATA[Скрипты PHP]]></category>
		<category><![CDATA[на WordPress]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=653</guid>
		<description><![CDATA[Как все уже поняли, недавно я завел еще один блог и начал серьезно им заниматься (правда, крайне медленно). Сегодня мне пришла идея интересного пиара моего второго блога в это (основном).
Идея не новая, но все же интересная: давать ссылки на последние посты нового блога в другом, более раскрученном. Ну и понятное дело, вручную их писать &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Как все уже поняли, недавно я завел еще один блог и начал серьезно им заниматься (правда, крайне медленно). Сегодня мне пришла идея интересного пиара моего второго блога в это (основном).</p>
<p>Идея не новая, но все же интересная: давать ссылки на последние посты нового блога в другом, более раскрученном. Ну и понятное дело, вручную их писать &#8211; самоубийство. Поэтому я написал небольшой скрипт (а что Вы ждали?), который хорошо работает под WordPress (он написан на PHP, поэтому будет работать везде, где есть PHP).</p>
<p>Кстати, если хотите, чтобы я из него сделал плагин &#8211; пишите, по просьбам заверну в плагин.</p>
<p><span id="more-653"></span></p>
<p>Основан скрипт на простой идее &#8211; нужно подключиться к базе данных другого блога и вытащить оттуда заголовки последних постов, оформив их ссылками. Сразу отмечу, что не на всех хостингах можно такое проделать, иногда внешние подключения к базе данных не разрешены.</p>
<p>Я привел скрипт в порядочный вид и вынес ключевые данные в переменные перед скриптом. Засовывать скрипт нужно прямо в сайдбар. Да-да, прямо туда :) Код:</p>
<pre><code class="php">
// Расшифровка:
// $snbc - some new blog connect - дескриптор подключения к БД
// $snbquery - some new blog query (для запроса)
// $snbresult - some new blog result (результат запроса)
$db_host  = "хост";
$db_login = "пользователь";
$db_pass  = "пароль";
$db_name = "имя базы";

$site_url = "http://адрес-другого-блога.ru/";
$error_message = "облом";
$prefix = "wp_";

$snbc = @mysql_connect ($db_host, $db_login, $db_pass);
@mysql_select_db ($db_name, $snbc);
$snbquery = @mysql_query ("SELECT * FROM ".$prefix."posts WHERE
            post_status='publish' AND
            post_type='post' ORDER BY ID LIMIT 5;", $snbc);
if (@mysql_num_rows($snbquery) &lt;= 0) {
	echo $error_message;
}
else {
	while ($snbresult = @mysql_fetch_array ($snbquery)){
		echo "* &lt;a href=\"$site_url".$snbresult['post_name'].
                         ".htm\"&gt;".
                         $snbresult['post_title']."&lt;/a&gt;&lt;br&gt;";
	}
}
@mysql_close ($snbc);
</code></pre>
<p>Заметьте, единственное сообщение об ошибке &#8211; это сообщение, что сайт недоступен. Нельзя нам сейчас постить ошибки прямо в блог (потенциально полезная информация для взломщика). А учитывая, что удаленные подключения к БД другого блога возможны, тем более.</p>
<p>Я даже на всякий случай везде наставил &laquo;собак&raquo;, которые подавляют вывод ошибок.</p>
<p>Логика скрипта: для подключения мы используем другой дескриптор базы данных (ресурс $snbc), и работаем с ним (чтобы не сделать случайно запрос в &laquo;первую&raquo; базу данных или еще чего похуже). Соединение мы закрываем при завершении скрипта, оно нам не нужно.</p>
<p>Скрипт подключается, читает последние посты (записи, имеющие статус post; сортировка по ID) из таблицы с постами, выбирает из них те, которые опубликованы (состояние publish), ограничивается 5ю записями.</p>
<p>Ссылки составляются похитрее &#8211; у меня они сделаны в виде ЧПУ, поэтому мне нужно читать поле post_name, содержащее ссылку. Если у Вас содержится в адресе ID, то нужно его (ID) и читать. И подставлять в адрес Вашего вида.</p>
<p>И не забудьте указать перфикс таблиц второго блога и прочие конфигурационные параметры! Что непонятно &#8211; спрашивайте.</p>
<p>Постовой:<br />
<a href="http://www.gruztaxi-trl.ru">перевозка грузов в СПб</a><br />
<a href="http://www.autoinstal.ru/">шумоизоляция автомобиля в Петербурге</a><br />
<a href="http://www.novogodniy.com/">бутылка подарочного шампанского</a><br />
<a href="http://makita.vseinstrumenti.ru/">электроинструмент макита</a> &#8211; надежный и дешевый инструмент<br />
<a href="http://www.internex.ru">создание сайтов дешево</a><br />
<a href="http://max1m.ru">Максим</a>.ру &#8211; это не блог певицы, это намного круче&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/ssyilki-na-poslednie-postyi-odnogo-bloga-v-saydbare-drugogo.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Как сделать свою капчу (плагин) для WordPress?</title>
		<link>http://dimoning.ru/delaem-captchu-wordpress.html</link>
		<comments>http://dimoning.ru/delaem-captchu-wordpress.html#comments</comments>
		<pubDate>Sun, 10 Aug 2008 18:55:00 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[на WordPress]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=346</guid>
		<description><![CDATA[Спонсор поста: дизайн интерьера, форум о дизайне интерьера
__________________________________
В этой статьей я достаточно подробно расскажу, как я сделал свою капчу и как вообще делается капча в виде плагина для WordPress. Вы легко сможете сделать капчу на свой вкус, распространять ее, хвастаться перед друзьями &#8211; ведь Вы сделали не просто интересную капчу, а еще и в виде [...]]]></description>
			<content:encoded><![CDATA[<p>Спонсор поста: <a href="http://www.homeideas.ru">дизайн интерьера</a>, <a href="http://www.homeideas.ru">форум о дизайне интерьера</a><br />
__________________________________</p>
<p>В этой статьей я достаточно подробно расскажу, как я сделал <a href="http://dimoning.ru/dimoningru-captcha.html" target="_blank">свою капчу</a> и как вообще делается капча в виде плагина для WordPress. Вы легко сможете сделать капчу на свой вкус, распространять ее, хвастаться перед друзьями &#8211; ведь Вы сделали не просто интересную капчу, а еще и в виде плагина ;) Звучит-то страшно. Но не все так сложно на самом деле.</p>
<p>Чтобы понимать о чем речь, я рекомендую Вам <a href="http://dimoning.ru/scripts/dimoning.ru-captcha.rar" target="_blank">скачать мою капчу</a>, я буду объяснять на ее примере.</p>
<p>Сначала нам нужно сделать заготовку плагина. Обычно плагин для WordPress может состоять из скольки угодно файлов и вообще иметь любую структуру. Ядро движка определяет &#8211; какой файл плагина является заголовочным (главным) по специальному PHP-комментарию в самом начале файла. Вот как он выглядит:</p>
<p><span id="more-346"></span></p>
<pre><code class="php">&lt;?php
/*
Plugin Name: DCaptcha
Plugin URI: http://dimoning.ru
Description: Smart captcha for wordpress comments.
Author: DimoninG
Version: 0.1b
Author URI: http://dimoning.ru
*/
.................. дальше код плагина ...................
</code></pre>
<p>Записи вроде &laquo;Plugin Name:&raquo; и аналогичные как раз и служат для того, чтобы ядро WordPress смогло определить &#8211; плагин это или нет. Все эти поля отлично переводятся по словарю, да и вообще не составляют никакой тайны: название, адрес плагина, описание, автор, версия, адрес сайта автора.</p>
<p>Здесь я немного поясню для тех, кто никогда плагины для WordPress не писал. В WordPress все сделано очень просто. Для каждого действия в ядре предусмотрена какая-то функция. Например, есть функция для вывода заголовка &#8211; get_title (или как-то так, сейчас не о ней). Если Вы в своем плагине просто создадите собственную функцию с таким же именем, то WordPress автоматически вызовет Вашу функцию после вызова встроенной в ядро. И передаст ей все те же параметры, что передал &laquo;родной&raquo; get_title!</p>
<p>Альтернатива &#8211; это вручную указать, какую собственную функцию вызывать после вызова одной из стандартных функций WordPress&#8217;а (здесь будет сделано именно так).</p>
<p>Другими словами &#8211; мы можем совершать некоторые действия после вызова любых функций и совершения любых операций самим движком WordPress.</p>
<p>В данном случае нам придется работать с постингом комментариев и выводом формы комментирования. Это для того, чтобы в форме добавить собственно капчу, а при комментировании проверить &#8211; прошел ли пользователь капчу или нет.</p>
<p><strong>Добавляем капчу в форму постинга комментариев.</strong></p>
<p>Во всем плагине это самый сложный момент. Все необходимые действия выполняет наша функция dcaptcha_draw ($id); Вот и она (она же есть в самом плагине, см. ссылку выше):</p>
<pre><code class="php">
function dcaptcha_draw ($id){
global $user_ID;

if ($user_ID){
return $id;
}

// здесь было CSS-оформление капчи,
// я его пропустил
&lt;script language="javascript"&gt;
function dcaptcha_change(){

if (document.getElementById('dcaptcha_captcha1').className ==
"dcaptcha_yellow"){
document.getElementById('dcaptcha_captcha1').className = "dcaptcha_red";
document.getElementById('dcaptcha_sess').value = 0;
}
else{
document.getElementById('dcaptcha_captcha1').className = "dcaptcha_yellow";
document.getElementById('dcaptcha_sess').value = 1;
}
}

&lt;/script&gt;

&lt;div id="dcaptcha"&gt;&lt;p&gt;
&lt;div class="dcaptcha_red" id="dcaptcha_captcha1" onclick="dcaptcha_change();"&gt;
&lt;b&gt;Да человек я, человек! =)&lt;/b&gt;&lt;/div&gt;
&lt;label for="dcaptcha_captcha1"&gt;&lt;small&gt;&lt;b&gt;Если Вы человек - кликните
на красный прямоугольник!&lt;/b&gt;&lt;/small&gt;&lt;/label&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;input type="hidden" name="dcaptcha_sess" id="dcaptcha_sess" value="0"&gt;

&lt;script&gt;
var commentField = document.getElementById("url");
var submitp = commentField.parentNode;
var answerDiv = document.getElementById("dcaptcha");
submitp.appendChild(answerDiv, commentField);
&lt;/script&gt;
&lt;?php
}
</code></pre>
<p>Я пропустил CSS-оформление капчи, т.к. к функциональной части плагина оно не имеет никакого отношения. Описываю остальное.</p>
<p>В глобальной переменной $user_ID содержится ID пользователя, под которым сейчас залогинен комментатор. То есть &#8211; если Вы зарегистрированы и вошли в аккаунт, Вам присвоен некий user_ID и именно в этой переменной он &laquo;проходит&raquo; весь движок. Соответственно, если Вы залогинены &#8211; капчу мы не показываем.</p>
<p>Дальше. Я не буду разбирать сам JavaScript-код. Дело в том, что его написать можно каким угодно &#8211; он тоже в некотором роде имеет отношение к оформлению (идее капчи). Здесь с помощью JavaScript-а осуществляется &laquo;окраска&raquo; прямоугольника в белый или красный цвет, в зависимости от того, кликнул ли комментатор на капчу или нет.</p>
<p>Обращаю Ваше внимание! Если кликнул &#8211; значит человек. Если кликнул &#8211; мы записываем в скрытое поле dcaptcha_sess значение 1 (по умолчанию 0). Именно по значению этого поля мы и будем определять &#8211; человек это или робот.</p>
<p>Кроме того, здесь присутствует еще один javascript-код. Я был удивлен, но только с помощью JavaScript можно установить капчу в форме комментирования именно там, где хочется &#8211; то есть (у меня) прямо над блоком ввода комментария. По умолчанию все, что выводит плагин с помощью функции вывода формы комментирования записывается уже после этой формы. Поэтому приходится прибегать к уловкам и встраивать в дерево иерархии объектов на странице нашу форму с капчей, иначе она будет не там, где нам хотелось бы.</p>
<p>Вот код установки капчи в нужное место (он выше тоже приведен):</p>
<pre><code class="javascript">&lt;script&gt;
var commentField = document.getElementById("url");
var submitp = commentField.parentNode;
var answerDiv = document.getElementById("dcaptcha");
submitp.appendChild(answerDiv, commentField);
</code></pre>
<p>Тут не происходит ничего страшного &#8211; сначала мы получаем идентификатор поля с ID равным url и записываем его в переменную commentField. В поле с ID равным url комментатор как раз записывает адрес своего блога. Потом мы получаем идентификатор нашей формы с капчей (она у меня заключена в большой div, который имеет ID равный dcaptcha). И последней операцией мы говорим браузеру, чтобы он сделал наш div дочерним по отношению к полю ввода url. То есть &#8211; поставил наш div после поля ввода url.</p>
<p><strong>Промежуточный итог.</strong></p>
<p>Мы сделали плагин, который добавляет к форме комментирования капчу. Капча работает так &#8211; если на нее кликнули, JavaScript-скрипт записывает в поле dcaptcha_sess единицу, что и означает, что это человек.</p>
<p><strong>Постинг коммента.</strong></p>
<p>Теперь нам нужно сделать пару заключительных штрихов. Когда комментарий постится в блог, нужно проверять, какое значение у переменной dcaptcha_sess (она проходит через POST-запрос, а значит в массиве $_POST, как и все остальные поля комментария). Если dcaptcha_sess равна 1, значит писал человек (кликнул на капчу как и просили), можно постить. Если нет &#8211; это спам.</p>
<p>Для этого сделана очень простая функция:</p>
<pre><code class="php">
function comment_post ($id){
	global $user_ID;

	if ($user_ID){
		return $id;
	}

	if ($_POST['dcaptcha_sess'] != '1'){
		wp_set_comment_status($id, 'delete');
		echo "wrong captcha. no spam, please.";
		exit;
	}
}
</code></pre>
<p>Как ни странное &#8211; сам WordPress сначала записывает комментарий в базу, а уже потом вызывает нашу функцию-дополнение к собственной. Поэтому в качестве параметра мы получаем ID комментария, который комментатор добавил только что.</p>
<p>Как и в функции dcaptcha_draw сначала мы проверяем &#8211; а не был ли залогинен пользователь? Если был &#8211; постим комментарий сразу. Дальше мы проверяем $_POST['dcaptcha_sess']. Если она <strong>не</strong> равна единице, а значит это добавлено ботом (или человек забыл нажать на капчу), то мы &#8211; сначала удаляем комментарий, используя стандартную функцию wp_set_comment_status (в качестве параметров передаем ей ID комментария для удаления и ключевое слово, означающее, что комментарий надо удалить). Потом мы пишем, что неверно введена капча и завершаем вообще все скрипты.</p>
<p>Таким образом, если капча введена неверно (на нее не кликнули) &#8211; WordPress закрывается и остается только сообщение о кривой капче. А если все хорошо &#8211; эта ветка скрипта (удаление комментария и завершение работы) вообще не выполняется и с уже добавленным в базу комментарием ничего не происходит.</p>
<p><strong>И финальный шаг.</strong></p>
<p>Нужно указать WordPress&#8217;у, что мы хотим вызывать наши функции-обработчики наравне с его собственными функциями. Для этого мы воспользуемся функцией add_action, где первым параметром идет имя функции WordPress&#8217;а, а вторым &#8211; нашей, которую и нужно вызвать одновременно с его функцией. Вот так:</p>
<pre><code class="php">
add_action('comment_post', "comment_post");
add_action('comment_form', "dcaptcha_draw");
</code></pre>
<p>Готово. Поздравляю, мы сделали капчу.</p>
<p><strong>О &laquo;классическом&raquo; механизме работы капчи.<br />
О взломе моей капчи.<br />
И о взломе капчи с zarabotai.lv.</strong></p>
<p>Я обещал это рассказать. Без грустного не обошлось. Чтобы все было понятно, сначала я объясню &laquo;классический&raquo; механизм работы капчи, где нужно вводить цифры с картинки.</p>
<p><strong>Классическая капча работает так:</strong> случайным образом генерируется картинка; значение, отображенное на ней записывается в переменную сессии для данного пользователя. После этого оно сравнивается со значением, введенным самим пользователем в поле и если они не совпали &#8211; это спам.</p>
<p>В чем суть? Суть в том, что спам-бот не может прочитать сессию &#8211; для него единственный выход &#8211; это разобрать, что написано на картине. А чем сложнее картинка, тем сложнее спам-боту разобрать, что на ней написано.</p>
<p><strong>О взломе моей капчи и о взломе капчи с zarabotai.lv.</strong></p>
<p>Здесь же, для взлома нужно всего-навсего передать значение 1 для поля dcaptcha_sess в POST-запросе, это легче, чем писать скрипт разбора картинки. Другое дело, что в спам-базах обычно десятки тысяч сайтов, для каждого руками подобрать способ взлома &#8211; можно сойти с ума. Поэтому спаммеры обычно выбирают блоги, сайты и форумы со &laquo;стандартными&raquo; капчами (иначе для каждого блога и сайта нужно собственноручно создать скрипт, который мог бы спамить &#8211; дорого и малоэффективно)</p>
<p>В этом и секрет счастья &#8211; так сказать, эффект нестандартности капчи. Таких больше нет ;) Если моя капча появится на 10.000 блогах &#8211; скорее всего она обратит на себя внимание спаммеров и ее взломают.</p>
<p>На этом же самом и основана капча с zarabotai.lv &#8211; какое-то поле изменяет свое знание. Ну или похожая проверка.</p>
<p>Здесь оговорюсь &#8211; не всегда и капча-картинка спасет. Например, стандартную капчу от форума phpBB довольно давно сломали и уже насыпались терабайты спама на все форумы, где установлена стандартная капча. И она как раз вариант капчи с картинкой!</p>
<p>Ммм&#8230; Я как-то так подошел к тому, что в любую капчу можно сломать. ;) И если мою сломают, я за 5 минут чуть-чуть где-нибудь изменю ее (например, изменю название dcaptcha_sess на другое или по-другому сделаю проверку), выпущу плагин с новой версией &#8211; и все, спама опять не будет ;)</p>
<p>Конечно, вышесказанным я немножко отпугнул &laquo;простого пользователя&raquo;. Но, пожалуйста, не бойтесь. В компьютерах, которые изобрел человек, как известно царь и бог &#8211; человек. То есть &#8211; взломать могут что угодно, когда угодно. Есть даже такое выражение &laquo;В каждой программе есть хотя бы одна ошибка&raquo;. Сломать могут любую капчу, главное &#8211; &laquo;плотно&raquo; ей заняться.</p>
<p>Да и не Россию мы тут спасаем от третьей мировой, чего это я :lol: Я призываю все же сделать свой блог комфортнее и удобнее &#8211; поставить капчу &laquo;в один клик&raquo; и забыть про ужас о вводе цифр ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/delaem-captchu-wordpress.html/feed</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
	</channel>
</rss>

