<?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; Скрипты PHP</title>
	<atom:link href="http://dimoning.ru/category/moi-razrabotki/skriptyi-php/feed" rel="self" type="application/rss+xml" />
	<link>http://dimoning.ru</link>
	<description>программирование сайтов и скриптов</description>
	<lastBuildDate>Tue, 07 Feb 2012 15:45:25 +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>Как вытащить количество подписчиков в переменную из 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/buhal-teriya.html</link>
		<comments>http://dimoning.ru/buhal-teriya.html#comments</comments>
		<pubDate>Sat, 30 May 2009 12:53:45 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Скрипты PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1128</guid>
		<description><![CDATA[Постовой: отличный сайт про частотные преобразователи; если вы ищите производство пенобетонных блоков, то вам как раз туда
Решил я подтянуть свои доходы с сапы (и другие пассивные виды заработка), надоел фриланс. Сразу возникла не очень очевидная проблема &#8211; как самым удобным способом подсчитывать доходы?
Признаюсь, я их вообще никогда не подсчитывал. И это явно было не лучшим [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Постовой: отличный сайт про <a href="http://www.invert.ru/equipment/freq/">частотные преобразователи</a>; если вы ищите <a href="http://www.penoblok.ru/">производство пенобетонных блоков</a>, то вам как раз туда</p></blockquote>
<p>Решил я подтянуть свои доходы с сапы (и другие пассивные виды заработка), надоел фриланс. Сразу возникла не очень очевидная проблема &#8211; как самым удобным способом подсчитывать доходы?</p>
<p>Признаюсь, я их вообще никогда не подсчитывал. И это явно было не лучшим решением (например, недавно я выяснил, что если планировать покупку еды и придумывать что кушать ДО похода в магазин, то можно есть куда вкуснее и разнообразнее на 150 рублей в день, чем раньше я ел на 500).</p>
<p>Вариантов было несколько, а вернее всего пять. Первый: не подсчитывать как раньше. Плохой вариант, мне не понравилось. Второй: в конце месяца ползать по всем аккаунтам и пытаться подсчитать доходы и расходы. Плохой вариант, т.к. не везде статистика такая, какая нужна, да и просто не удобно. Третий вариант: записывать все на бумажке. Подозреваю, что эти бумажки бы быстро растерялись где-нибудь. Четвертый вариант: использовать Excel. Единственное &#8211; я не его фанат и не могу сделать там такие подсчеты и автоматику, которую бы смог сделать&#8230; Правильно в пятом варианте &#8211; создать свою систему подсчета доходов и расходов.</p>
<p>Вы, небось, сразу обратили внимание как я ее назвал. Бухал-терия. Это не потому, что я не знаю как пишется это слово, это потому, что моя &laquo;система&raquo; на серьезность не претендует, распространяется бесплатно и&#8230; в общем, по порядку.</p>
<p>Кстати, небольшое отступление. Я уже пытался найти подобную штуку в свободном пользовании, но то, что я находил, оказывалось слишком сложным. Личном мне не нужно больших наворотов &#8211; сколько когда и за что я получил, плюс возможность вывести по датам и просуммировать одинаковые источники дохода. Что я и реализовал в своей системе.</p>
<p>В общем, к сути. Представляю всем бесплатную для скачивания мини-домашнюю бухгалтерию (обозванную мной бухал-терией). Это, как не сложно догадаться &#8211; PHP скрипт. Почему именно PHP? Потому, что таким образом мы не рискуем потерять все записи, если у нас сломается компьютер.</p>
<p>Заливаем ее, например, на какой-нибудь свой сайт, создаем в корне каталога файл .htaccess, прописываем туда:</p>
<p>order allow deny<br />
deny from all<br />
allow from IP</p>
<p>где IP &#8211; Ваш IP-адрес, и все, она доступна только Вам и при этом защищена от случайного уничтожения! Само собой, хостинг тоже может упасть, но он как правило падает реже. Еще его могут взломать и &laquo;все украсть&raquo;, правда с той разницей, что домашний компьютер тоже могут взломать.</p>
<p>Опишу ее возможности и сделаю пару скриншотов. Выглядит она следующим образом (скриншоты вырезаны со страницы).</p>
<p><a href="http://dimoning.ru/wp-content/uploads/2009/05/buh1.jpg"><img class="aligncenter size-medium wp-image-1131" title="buh1" src="http://dimoning.ru/wp-content/uploads/2009/05/buh1-300x148.jpg" alt="buh1" width="300" height="148" /></a></p>
<p>(кликабельно!)</p>
<p>Как видим, перед нами записи доходов (конечно, это только для наглядного примера и таких доходов и сайтов никогда не существовало &#8211; прим. DimoninGа) и фильтр для отображения этих записей. Записи построены в виде таблицы, где указано: дата получения денег, сумма, доход/расход, откуда получены деньги (оно же &#8211; куда деньги ушли, если это расход), комментарий. Плюс внизу дописано &laquo;итого&raquo;, то есть сумма всех доходов и расходов.</p>
<p>Итак, первое, что мы можем сделать, это добавить запись. Жмем &laquo;добавить запись&raquo; сверху. На этой странице указываем, опять же, дату, сумму (если сумма отрицательная, то это будет считаться &laquo;расходом&raquo;), источник, комментарий. Жмем &laquo;Добавить&raquo; и новая запись появляется на главной странице. Кнопки &laquo;редактировать&raquo; и &laquo;удалить&raquo; в комментариях не нуждаются, правда?</p>
<p>Сначала я было этим и ограничился. Но перед тем, как выкладывать свое детище в паблик (сюда), решил все-таки дописать фильтры.</p>
<p>Фильтры &#8211; очень удобная штука, если у Вас &laquo;бухгалтерия&raquo; ведется за долгое время (как правило больше месяца).</p>
<p>Как видно фильтры позволяют: просмотреть доходы за любой промежуток времени и &laquo;собрать&raquo; одинаковые источники дохода. Кроме того, я сделал две ссылки, чтобы было удобнее. Когда жмешь на &laquo;текущий месяц&raquo;, то даты автоматически заполняются так, чтобы при клике на &laquo;Показать&raquo; выводились доходы за текущий месяц. &laquo;За все время&raquo; &#8211; понятно, подставляет даты так, чтобы выводилась статистика за все время.</p>
<p>Вот как выглядит отфильтрованная статистика (те же данные, что и выше на скриншоте) за &laquo;текущий месяц&raquo; (жмем &laquo;текущий месяц&raquo; и &laquo;показать&raquo;):</p>
<p><a href="http://dimoning.ru/wp-content/uploads/2009/05/buh2.jpg"><img class="aligncenter size-medium wp-image-1132" title="buh2" src="http://dimoning.ru/wp-content/uploads/2009/05/buh2-300x137.jpg" alt="buh2" width="300" height="137" /></a></p>
<p>(кликабельно!)</p>
<p>Как видим &#8211; скрипт обрезал таблицу до дат текущего месяца.</p>
<p>Теперь показываю, что делает &laquo;собрать одинаковые источники дохода и расхода&raquo;. Это такая клевая штука, которая позволяет узнать, например, сколько в сумме было получено денег с сапы с 12ого по 29число. То есть сколько было получено денег в сумме с каждого источника дохода за определенные даты. Вот как выглядит &laquo;собрать&raquo; для текущего месяца:</p>
<p><a href="http://dimoning.ru/wp-content/uploads/2009/05/buh3.jpg"><img class="aligncenter size-medium wp-image-1133" title="buh3" src="http://dimoning.ru/wp-content/uploads/2009/05/buh3-300x120.jpg" alt="buh3" width="300" height="120" /></a></p>
<p>(кликабельно!)</p>
<p>А вот как оно же выглядит для всего времени (смотрите на графу &laquo;sape&raquo;):</p>
<p><a href="http://dimoning.ru/wp-content/uploads/2009/05/buh4.jpg"><img class="aligncenter size-medium wp-image-1134" title="buh4" src="http://dimoning.ru/wp-content/uploads/2009/05/buh4-300x119.jpg" alt="buh4" width="300" height="119" /></a></p>
<p>В общем, подводя итог, бухал-терия деньги считает, складывать доходы умеет, по датам показывает. Я ее использую так: когда я получаю откуда-нибудь что-нибудь на кошелек, то записываю в бухал-терию. Кроме того, она позволяет вести и более скурпулезные подсчеты, например, сколько каждый сайт в сапе приносит в день и т.п. Но на мой взгляд, такая подробная статистика по сути не нужна, только если &laquo;чтобы было&raquo;.</p>
<p>Скачать сей скрипт можно <a href="http://dimoning.ru/wp-content/uploads/2009/05/buh.rar">по этой ссылке</a>. Еще напоследок должен предупредить: я не работал над безопасностью скрипта, поэтому в паблик его выкладывать нельзя (я имею ввиду, нельзя вести бухал-терию в каталоге, доступном для всех, например). Скрипт бесплатный, но при этом я снимаю с себя любую ответственность за возможный ущерб, связанный с этим скриптом.</p>
<p>А, да, как установить-то? В файле /config.php нужно добавить данные для доступа к своей базе данных (там 4 строчки, не пропустите) и запустить скрипт. Он предложит установку, жмете &laquo;установить&raquo; и готово.</p>
<p><strong>Поддержка. </strong>Я на добровольной основе оказываю поддержку скрипта. Если не заработало или заработало через Жо &#8211; пишите тут в комментариях или мне в ICQ 361 266 067. Ну и если нашли баги, само собой. Я же тоже с его помощью бабло считаю :)</p>
<p><strong>Есть что доработать?</strong> Если есть идеи, как сделать скрипт круче и полезнее &#8211; я всегда только за. Пишите здесь, как скрипт можно доработать. Но, пожалуйста, не пишите, если не уверены, что такая доработка будет действительно полезной. Например, фильтр по датам &#8211; полезно, а раскрасить все в цвет хаки &#8211; не полезно.</p>
<p>UPD: Аттеншн! Обнаружилось, что скрипт правильно работает пока что только на поддомене. В каталог его класть пока не надо.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/buhal-teriya.html/feed</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Капча обычно-картиночная</title>
		<link>http://dimoning.ru/kapcha-obyichno-kartinochnaya.html</link>
		<comments>http://dimoning.ru/kapcha-obyichno-kartinochnaya.html#comments</comments>
		<pubDate>Tue, 14 Apr 2009 15:04:44 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Скрипты PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1025</guid>
		<description><![CDATA[Многие программисты (включая меня) боятся &#171;картиночных&#187; капч. Ну это тех, где нужно вводить символы с картинки. Боятся не в смысле, что при виде залезают под кровать и начинают плакать, а в том смысле, что устанавливать такие капчи как правило &#8211; неприятное занятие.
Оно неприятно только до тех пор, пока программист не решает &#171;разобраться уже наконец&#187; и [...]]]></description>
			<content:encoded><![CDATA[<p>Многие программисты (включая меня) боятся &laquo;картиночных&raquo; капч. Ну это тех, где нужно вводить символы с картинки. Боятся не в смысле, что при виде залезают под кровать и начинают плакать, а в том смысле, что устанавливать такие капчи как правило &#8211; неприятное занятие.</p>
<p>Оно неприятно только до тех пор, пока программист не решает &laquo;разобраться уже наконец&raquo; и &laquo;мужик я или не мужик?!&raquo; и лезет в гугл за информацией, чтобы составить себе один единственный модуль с капчей, понять его как свои 5 PCI портов и полюбить светлой любовью на веки вечные.</p>
<p>Короче. Я к тому, что мне нужно было сегодня установить картиночную капчу, а стандартного модуля под рукой у меня не было. Гугл, как всегда, на высоте.</p>
<p>Что нужно делать, чтобы в несколько этапов поставить капчу на страницу?</p>
<p>1. Включаем сессии в index.php с помощью start_session(); (можно и непосредственно перед формой, но в самом начале при инициализации движка как-то приятнее)</p>
<p>2. Добавляем файл <a href="http://dimoning.ru/wp-content/uploads/2009/04/captcha.txt" target="_blank">captcha.php</a> (генерирует капчу) и <a href="http://dimoning.ru/wp-content/uploads/2009/04/anonymous.gdf" target="_blank">вот этот файл</a> (шрифт) в корень сайта.</p>
<p>3. В форму, где нужно показать капчу добавляем поля:</p>
<p>&lt;input type=text name=&#8217;random_string&#8217;&gt; &#8211; это поле, куда надо будет вводить капчу<br />
&lt;img src=&#8217;/captcha.php&#8217; border=1&gt; &#8211; это изображение кода (картинка)</p>
<p>4. В файле, где у нас происходит обработка запроса из формы, добавляем вот такой код:</p>
<p>session_start();<br />
$captcha_check = 0;<br />
if ($_POST['random_string'] == $_SESSION['random_string']) {<br />
$captcha_check = 1;<br />
unset($_SESSION['random_string']);<br />
}</p>
<p>Теперь, если капча введена верно, мы получим в переменной $captcha_check значение 1, в противном случае ноль (или пустоту). Ну а дальше &#8211; делаем уже то, что хотим.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/kapcha-obyichno-kartinochnaya.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Китайская защита сайта от вирусов</title>
		<link>http://dimoning.ru/kitayskaya-zaschita-sayta-ot-virusov.html</link>
		<comments>http://dimoning.ru/kitayskaya-zaschita-sayta-ot-virusov.html#comments</comments>
		<pubDate>Sat, 28 Mar 2009 18:30:13 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Общее]]></category>
		<category><![CDATA[Общие советы]]></category>
		<category><![CDATA[Скрипты PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=985</guid>
		<description><![CDATA[Не секрет, что иногда сайты заражают вирусом.
Чем-чем? Вирусом. Он находится в iframe, и таким образом не виден посетителю. Но при этом посетитель успешно этот фрейм открывает и вирус хватает.
Как-как? Обычно внизу файла index.php располагается код, что-то вроде &#60;iframe&#8230;&#62;. При этом владелец сайта однозначно может сказать, что &#171;ээ, дарагой, такова ранэшэ нэбэло, ээ!&#187;
Как избавиться? Удалить этот [...]]]></description>
			<content:encoded><![CDATA[<p>Не секрет, что иногда сайты заражают вирусом.</p>
<p><strong>Чем-чем?</strong> Вирусом. Он находится в iframe, и таким образом не виден посетителю. Но при этом посетитель успешно этот фрейм открывает и вирус хватает.</p>
<p><strong>Как-как?</strong> Обычно внизу файла index.php располагается код, что-то вроде &lt;iframe&#8230;&gt;. При этом владелец сайта однозначно может сказать, что &laquo;ээ, дарагой, такова ранэшэ нэбэло, ээ!&raquo;</p>
<p><strong>Как избавиться? </strong>Удалить этот код, сменить пароли на FTP (т.к. часто именно их и воруют).</p>
<p><strong>В чем подвох?</strong> Подвох в том, что владелец сайта может &laquo;до последнего&raquo; не видеть вирус. Особенно, если вирус какой-нибудь новый. И даже Касперский не поможет.</p>
<p>В чем заключается моя &laquo;защита&raquo; и почему она &laquo;китайская&raquo;? Дело в том, что это скорее не защита, а оповестительная система, отключающая сайта, если вирус там поселился.</p>
<p><strong>Как работает?</strong> Очень просто. Из учебника php следует, что закрывающий тег в конце файла можно опустить. То есть код:</p>
<p>&lt;?php</p>
<p>echo &laquo;hello&raquo;;</p>
<p>тоже считается валидным и нормально работает.</p>
<p>Так вот, берем какой-нибудь WP, стираем в index.php нафиг закрывающий тег PHP (а именно вот этот: ?&gt;). Все!</p>
<p><strong>Чего ж будет-то?</strong> Если злоевек зальет Вам на сайт свой злоефрейм, то возникнет ошибка при исполнении этого файла php и сайт не откроется. Чем это важно? Важно тем, что владелец сайта, посещая свой сайт, сразу поймет, что на сайте поселился вирус, а посетители сайта не заразятся вирусом, т.к. сайт отключился.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/kitayskaya-zaschita-sayta-ot-virusov.html/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Ротатор мыслей</title>
		<link>http://dimoning.ru/rotator-myisley.html</link>
		<comments>http://dimoning.ru/rotator-myisley.html#comments</comments>
		<pubDate>Thu, 08 Jan 2009 11:42:18 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Общие советы]]></category>
		<category><![CDATA[Скрипты PHP]]></category>
		<category><![CDATA[на WordPress]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=812</guid>
		<description><![CDATA[Нет, я не о чтении мыслей прямо из мозга. Хотя было бы интересно.
Сегодня (перед написанием этого поста) я сделал в блоге ротатор своих (умных, конечно!) мыслей. У меня уже давно накопилось много собственных высказываний (ну и самомнение, да?), которыми я был бы не прочь поделиться с окружающими. Сейчас сел и написал ротатор, который и хочу [...]]]></description>
			<content:encoded><![CDATA[<p>Нет, я не о чтении мыслей прямо из мозга. Хотя было бы интересно.</p>
<p>Сегодня (перед написанием этого поста) я сделал в блоге ротатор своих (умных, конечно!) мыслей. У меня уже давно накопилось много собственных высказываний (ну и самомнение, да?), которыми я был бы не прочь поделиться с окружающими. Сейчас сел и написал ротатор, который и хочу предложить Вам. Это не плагин, но на халяву.</p>
<p><span id="more-812"></span>Ротатор состоит из двух частей &#8211; кода ротации сообщений (в данном случае &#8211; моих мыслей [...звучит жутко]) и файла с фразами для ротации. Пусть на одну мысль будет отведена одна строка, то есть разделителем мыслей служит символ переноса строки (как мы знаем это \n).</p>
<p>Прямо в код шаблона WordPress (или другого движка)*, где мы хотим выводить мысли мы пишем следующее:</p>
<pre><code class="php">&lt;?php
$file = fopen ("mind.txt", "r");
if ($file){
    $minds = "";
    while (!feof ($file)) {$minds .= fread ($file, 256);}
    $mind = explode ("\n", $minds);
    $say = $mind[rand (0, count ($mind) - 1)];
    echo iconv ('UTF-8', 'CP1251', $say)."&lt;br&gt;";
    fclose ($file);
}
?&gt;</code></pre>
<p>В корень сайта кладем файл с мыслями (mind.txt).</p>
<p>Просто, но работает. Сначала мы открываем файл (см. код) для чтения, потом в $minds читаем все содержимое файла (в цикле). Дальше делим полученную длинную строку на массив с помощью explode (разделитель &#8211; перенос строки). Потом выбираем одну фразу случайным образом и записываем ее в $say. Дальше преобразовываем кодировку к UTF8** и выводим фразу. Закрываем файл.</p>
<p>Чтобы было понятнее &#8211; я прописал этот код в шаблоне в файле header.php там, где хотел видеть случайные фразы. Если хотите оформить с помощью CSS, сделайте что-то вроде:</p>
<pre><code class="php">echo "&lt;span class=someclass&gt;".iconv
      ('UTF-8', 'CP1251', $say)."&lt;/span&gt;&lt;br&gt;";</code></pre>
<p>&#8230;и оформляйте уже класс someclass.</p>
<p>Вот <a href="http://dimoning.ru/wp-content/uploads/2009/01/mind.rar">архив с исходниками</a>.</p>
<p>* не все движки поддерживают код прямо в шаблонах, в этих случаях придется приспосабливать данный код самостоятельно</p>
<p>** это потому, что у меня блог в UTF8, у Вас он может быть и в другой кодеровке. Если он у Вас в CP1251, функция iconv не нужна</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/rotator-myisley.html/feed</wfw:commentRss>
		<slash:comments>17</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>Скрипт автоматической проверки обратных ссылок.</title>
		<link>http://dimoning.ru/auto-check-backlinks.html</link>
		<comments>http://dimoning.ru/auto-check-backlinks.html#comments</comments>
		<pubDate>Tue, 05 Aug 2008 12:36:06 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Скрипты PHP]]></category>
		<category><![CDATA[на PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=238</guid>
		<description><![CDATA[При поддержке: регистратор доменов &#8211; дешевая и удобная регистрация доменов.
_________________________________
Для чего может понадобиться такой скрипт? Например, Вы обменялись статьями со многими веб-мастерами &#8211; их статьи висят у Вас, Ваши &#8211; у них. Конечно, рассчитывать на то, что все они порядочные люди &#8211; опрометчиво. И приходится периодически проверять, а висит ли там моя статья с моими [...]]]></description>
			<content:encoded><![CDATA[<p>При поддержке: <a href="http://estdomain.com.ua/">регистратор доменов</a> &#8211; дешевая и удобная регистрация доменов.<br />
_________________________________</p>
<p>Для чего может понадобиться такой скрипт? Например, Вы обменялись статьями со многими веб-мастерами &#8211; их статьи висят у Вас, Ваши &#8211; у них. Конечно, рассчитывать на то, что все они порядочные люди &#8211; опрометчиво. И приходится периодически проверять, а висит ли там моя статья с моими ссылочками? Или, например, Вы оплатили рекламу в <a href="http://blogun.ru/?r=7014" target="_blank">Блогуне</a>, блоггер разместил пост, но через две недели убрал. Хотя бы забаним <span style="text-decoration: line-through;">мудака</span> обманщика!</p>
<p>Аналогично, скрипт может использоваться для проверки трекбеков, хотя создавался не совсем для этого.</p>
<p><span id="more-238"></span></p>
<p>Как всегда &#8211; в конце статьи я дам ссылку на архив со скриптом, а по ходу объяснения работы скрипта, расскажу как им пользоваться для простых пользователей, не знающих программирования. Если честно, то я буквально после этой статьи быстро сделаю сервис авто-проверки ссылок, так что, в принципе, не-программистам не обязательно забивать себе голову ерундой ;) Кроме того, сервис будет проверять также наличие nofollow и noindex, что есть круче, чем этот скрипт.</p>
<p>Внимание, вспышка справа!</p>
<pre><code class="php">
header ("Content-Type: text/html; charset=utf-8");

$sites[] = "www.millioner.org/";
$sites[] = "yandex.ru";
$sites[] = "dimoning.ru/hello.txt";
$sites[] = "www.simplecoding.org";
$sites[] = "nettakogosaita.fuck";

$check_url = "dimoning.ru";

function to_utf($str){
	if (mb_detect_encoding($str, "UTF-8, ISO-8859-1, GBK")
                               != "UTF-8"){
		return  iconv("gbk", "utf-8", $str);
	}
	else{
		return $str;
	}
}

for ($i = 0; $i &lt; count ($sites); $i++){
	$sites[$i] = str_replace ("http://", "", $sites[$i]);
	$sites[$i] = "http://".$sites[$i];
}

$check_url = str_replace ("http://", "", $check_url);
$check_url = str_replace ("/", "\/", $check_url);

$ch = curl_init();
for ($i = 0; $i &lt; count ($sites); $i++){
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_CURLOPT_TIMEOUT, 10);
	curl_setopt($ch, CURLOPT_URL, $sites[$i]);
	$page = curl_exec($ch);

	echo "&lt;b&gt;".$sites[$i].":&lt;/b&gt;&lt;br&gt;";
	preg_match("/&lt;a.*?href=.*?".$check_url.".*?&gt;(.*?)&lt;\/a&gt;/",
                     $page, $m);
	$m[1] = to_utf ($m[1]);

	if (!empty ($m[1]) &amp;&amp; !empty ($page))
            echo "Ссылка: есть, с анкором: ".$m[1]."&lt;br&gt;&lt;br&gt;";

	if (empty ($m[1]) &amp;&amp; !empty ($page))
            echo "Пусто!&lt;br&gt;&lt;br&gt;";

	if (empty ($page))
            echo "// Сайт не открылся.&lt;br&gt;&lt;br&gt;";

}

curl_close($ch);
</code></pre>
<p>Совсем небольшой скрипт, способный сэкономить несколько часов Вашего времени!</p>
<p>Для начала отмечу, что это вариант скрипта, для которого нужно неограниченное время выполнения. Для VDS и выделенных серверов это можно легко поставить, на обычном хостинге &#8211; можно попробовать написать провайдеру или написать первой строкой в скрипте set_time_limit(0);.</p>
<p>Будьте осторожны с set_time_limit &#8211; во-первых, часто такая инструкция просто не срабатывает, а во-вторых, сам Веб-сервер может иметь лимит времени отдачи документа. Другими словами, даже если сам скрипт будет работать неограниченно долго, Веб-сервер может порвать сессию и результаты работы скрипта Вы так и не увидите.</p>
<p>Есть еще вариант обхода этого ограничения &#8211; записывать в файл, какой сайт проверялся последним и при повторном запуске начинать с него. Правда здесь это не реализовано, т.к. я недавно купил выделенный сервер у <a href="http://firstvds.ru/ru/home/index.html?from=9071" target="_blank">FirstVDS</a> и настроил его так, как мне нужно ;) Всего за 150 рублей я получил гораздо больше возможностей, чем на обычном хостинге за 250! Я серьезно говорю, никто меня рекламировать фествдс не просил.</p>
<p>Теперь к скрипту. Объясняю :)</p>
<p>Сначала мы указываем кодировку страницы UTF-8, ну это понятно что. Дальше в массив $sites записываются адреса сайтов для проверки. Здесь я проверяю несколько сайтов и страниц, где ссылки на меня есть и где ссылок на меня нет. На Яндексе ссылки на <a href="http://dimoning.ru" target="_blank">мой блог</a> заведомо нет :lol:</p>
<p>В переменную $check_url записывается адрес, который нужно проверить. <strong>Внимание!</strong> Записывать туда адрес без http://, без внутренней страницы. Грубо говоря в формате ??????.?? (домен и зона). Если писать туда другие адреса &#8211; не гарантируется правильность работы скрипта. Такая реализация, потому что наличие ссылки с доменом в любом случае означает, что ссылка на Ваш сайт установлена.</p>
<p>Функция to_utf используется для преобразования строки из любой кодировки в UTF-8. Дело в том, что сам скрипт в кодировке UTF-8, но если проверяемый сайт в другой кодировке, то анкор ссылки будет выводиться неверно. Функцию я скопировал с <a href="http://php.net" target="_blank">php.net</a>.</p>
<p>Первым циклом for мы гарантируем, что в адресах проверяемых сайтов будет присутствовать http://. Это нужно для подключения к ним.</p>
<p>Две строки перед вторым for &#8211; там мы обрабатываем проверяемый домен так, чтобы он не содержал http:// и заменяем все / так, чтобы они не были спец-символами.</p>
<p>Ну и самое вкусное! Инициализируем curl (библиотека для работы с удаленными сайтами) с помощью curl_init.</p>
<p>В цикле перебираем все проверяемые URL. Установленная опция CURLOPT_RETURNTRANSFER означает, чтобы результат чтения удаленного сайта не выводился на страницу, а записывался в переменную. Опция CURLOPT_CURLOPT_TIMEOUT означает, сколько времени в секундах ждать открытия сайта (здесь &#8211; 10). Если он открыться не успеет, то мы получим пустой результат. Это важно, иначе скрипт может выполняться очень долго.</p>
<p>CURLOPT_URL означает, какой URL мы сейчас будем проверять. С помощью $page = curl_exec($ch); мы и получаем код проверяемого сайта.</p>
<p>Следующим шагом мы с помощью регулярного выражения проверяем, если ли в коде нужная нам ссылка. Отличие этого метода от <a href="http://www.simplecoding.org/zashhita-ot-spama-php-skript-dlya-proverki-trekbekov.html" target="_blank">предложенного Владимиром</a> в том, что Владимир проверяет просто наличие URL на странице, а я &#8211; именно ссылки (адреса, заключенного в &lt;a&gt;). Понятно, что отличие &#8211; очень существенное и скрипт Владимира обмануть гораздо легче, к сожалению (мой вроде бы обмануть нельзя, но зарекаться не буду).</p>
<p>С помощью адского регулярного выражения (preg_match) мы и проверяем наличие ссылки. Если Вы совсем не знакомы с регулярными выражениями в PHP, рекомендую сначала <a href="http://www.softtime.ru/bookphp/gl7_1.php" target="_blank">почитать о регулярных выражениях на SoftTime.ru</a>. Коротко, то группа символов .*? означает &laquo;сколько угодно чего угодно&raquo;. Ну и все слеши / нужно экранировать обратным слешем \, чтобы они не являлись спец-символами.</p>
<p>Результат работы попадает в массив $m; Для эксперимента его интересно вывести с помощью функции print_r ();</p>
<p>В ячейку 1 массива $m попадает как раз анкор ссылки (текст ссылки). Мы его преобразовываем к UTF-8 и выводим в браузер. А потом закрываем curl.</p>
<p>Как этим пользоваться обычным пользователям? Достаточно менять в заголовке содержимое массива $sites. Грубо говоря, просто копируйте $sites[] = &laquo;yandex.ru&raquo;; на новую строку и вместо yandex.ru подставляйте свой URL для проверки. Про $check_url я уже говорил. Загружаете скрипт на сервер &#8211; запускаете и готово.</p>
<p>Вот пример результата работы скрипта:</p>
<pre><code>
<strong>http://www.millioner.org/:</strong>
Ссылка: есть, с анкором: Блог простого программиста

<strong>http://yandex.ru:</strong>
Пусто!

<strong>http://dimoning.ru/hello.txt:</strong>
Ссылка: есть, с анкором: DimoninG.ru

<strong>http://www.simplecoding.org:</strong>
Ссылка: есть, с анкором: статью об одной из уязвимостей Sape

<strong>http://nettakogosaita.fuck:</strong>
// Сайт не открылся.
</code></pre>
<p>Скачать скрипт можно здесь: <a href="/scripts/auto-check-backlinks.rar">Скрипт автоматической проверки наличия обратных ссылок от DimoninG&#8217;а (dimoning.ru).</a>.</p>
<p>Ждите сервис через пару часов ;)</p>
<p>____________________________________<br />
<a href="http://chipp.ru">Социальное пастбище для блогера</a> &#8211; социальная сеть для блоггеров, сосредоточие вселенского зла и записей из множества блогов. Можно подписаться на нее и ничего не читать &#8211; информации будет достаточно ;) И еще радует, что автор заботится о своей сети, в отличие от других аналогичных сетей.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/auto-check-backlinks.html/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

