<?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>Блог GTAlex - о работе в сети и не только &#187; Программирование</title>
	<atom:link href="http://gtalex.ru/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://gtalex.ru</link>
	<description>SEO, Яндекс, Google, PHP, Apache, nginx, CMS, создание, взлом и защита сайтов...</description>
	<lastBuildDate>Wed, 02 May 2012 05:45:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Жесть с mbstring.func_overload</title>
		<link>http://gtalex.ru/mbstring-func_overload-2</link>
		<comments>http://gtalex.ru/mbstring-func_overload-2#comments</comments>
		<pubDate>Wed, 21 Mar 2012 02:21:08 +0000</pubDate>
		<dc:creator>GTAlex</dc:creator>
				<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://gtalex.ru/?p=1967</guid>
		<description><![CDATA[ Для установки Битрикса одно из требований это
mbstring.func_overload = 2
По быстрому, чтоб не париться&#160;&#8212; воткнул настройку в глобальный php.ini и забыл ...
Давеча перекинул на доработку проектик на CodeIgniter, и словил нехилы глюк&#160;&#8212; авторизация не пашет, хоть убей.
Убил на разбирательства день&#160;&#8212; проблема ушла корнями в механизм работы с сессиями, причём где именно так и не нашел.
В [...]]]></description>
			<content:encoded><![CDATA[<p> Для установки Битрикса одно из требований это<br />
mbstring.func_overload = 2</p>
<p>По быстрому, чтоб не париться&nbsp;&mdash; воткнул настройку в глобальный php.ini и забыл ...<br />
Давеча перекинул на доработку проектик на CodeIgniter, и словил нехилы глюк&nbsp;&mdash; авторизация не пашет, хоть убей.<br />
Убил на разбирательства день&nbsp;&mdash; проблема ушла корнями в механизм работы с сессиями, причём где именно так и не нашел.</p>
<p>В конечном итоге тот же проект перетащил домой, тоже на денвер, где проблема не проявилась&nbsp;&mdash; напряг память и вспомнил про этот mbstring.func_overload</p>
<p>ИТОГ&nbsp;&mdash; делая корректировки для конкретного проекта не ленитесь и делайте их реально для этого проекта, а не как я <img src='http://gtalex.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><center>&copy; <a href="http://blog.gtalex.ru/"> Блог GTAlex </a> - деньги из паутины </center></p>
<p align="center"><a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%96%D0%B5%D1%81%D1%82%D1%8C+%D1%81+mbstring.func_overload+http://tinyurl.com/7usmxb8" title="Post to Twitter"><img class="nothumb" src="http://gtalex.ru/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%96%D0%B5%D1%81%D1%82%D1%8C+%D1%81+mbstring.func_overload+http://tinyurl.com/7usmxb8" title="Post to Twitter">ReTweet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gtalex.ru/mbstring-func_overload-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Видео курсы начинающим Веб программистам</title>
		<link>http://gtalex.ru/video-kursy-nachinayushhim-veb-programmistam</link>
		<comments>http://gtalex.ru/video-kursy-nachinayushhim-veb-programmistam#comments</comments>
		<pubDate>Wed, 21 Mar 2012 01:40:06 +0000</pubDate>
		<dc:creator>GTAlex</dc:creator>
				<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://gtalex.ru/?p=1962</guid>
		<description><![CDATA[ Вчера ваял загрузку/выгрузку цен через xls файлы на одном проектике на фреймворке CodeIgniter, сначала загрузку файла на сервер реализовал стандартными PHP средствами, потом подумал&#160;&#8212; явно ведь в фреймворке это уже реализовано и пошел гуглить.
Одним из сайтиков, заинтересовавших меня был CodeHarmony.ru а конкретно страничка CodeIgniter: класс Upload для загрузки файлов на сервер
где был выложен видео [...]]]></description>
			<content:encoded><![CDATA[<p> Вчера ваял загрузку/выгрузку цен через xls файлы на одном проектике на фреймворке CodeIgniter, сначала загрузку файла на сервер реализовал стандартными PHP средствами, потом подумал&nbsp;&mdash; явно ведь в фреймворке это уже реализовано и пошел гуглить.<br />
Одним из сайтиков, заинтересовавших меня был CodeHarmony.ru а конкретно страничка <a href="http://www.codeharmony.ru/materials/76">CodeIgniter: класс Upload для загрузки файлов на сервер</a><br />
где был выложен видео материал для новичков о использовании класса Upload для загрузки файлов.<br />
Материал &laquo;реально&raquo; для ньюбов&nbsp;&mdash; в видео пошагово объясняется весь процесс, к тому же в архивном файле прилагается набор исходных кодов, ИМХО лучше бы отдельно от видео выложил&nbsp;&mdash; но всё равно&nbsp;&mdash; проделана огромная работа, которую я считаю действительно полезной.<br />
Лучше один раз увидеть, чем 100 раз услышать.</p>
<p>Конечно, основная цель проекта&nbsp;&mdash; мартетинг, и по подаче информации сильно мне напомнил Евгения Попова, так же предлагающему <a href="http://evgeniypopov.com/dvd.html">интересные видео курсы</a> . На сайте представлено ещё несколько довольно интересных курсов, которые можно приобрести (а можно и не приобретать). </p>
<p>Желающим попробовать себя в качестве продажника&nbsp;&mdash; присутствует партнёрка (лично мне слабо верится в какие то продажи&nbsp;&mdash; законы в нашей Стране пока не способствуют продаже интеллектуальной собственности).</p>
<p>ИТОГ&nbsp;&mdash; начинающим веб программистам (и самым новичкам только желающим стать веб программистами) рекомендую ознакомиться с курсами.</p>
<p>P.S. Что меня последнее время раздражает в подобных сайтах, это их навязчивость по сбору так называемой клиентской подписной базы&nbsp;&mdash; замучают навязывать какой нить бесплатный курс в обмен на подписку. </p>
<p><center>&copy; <a href="http://blog.gtalex.ru/"> Блог GTAlex </a> - деньги из паутины </center></p>
<p align="center"><a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE+%D0%BA%D1%83%D1%80%D1%81%D1%8B+%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D0%BC+%D0%92%D0%B5%D0%B1+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0%D0%BC+http://tinyurl.com/6m5hju7" title="Post to Twitter"><img class="nothumb" src="http://gtalex.ru/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE+%D0%BA%D1%83%D1%80%D1%81%D1%8B+%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D0%BC+%D0%92%D0%B5%D0%B1+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0%D0%BC+http://tinyurl.com/6m5hju7" title="Post to Twitter">ReTweet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gtalex.ru/video-kursy-nachinayushhim-veb-programmistam/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Битрикс&#160;&#8212; погода СВОЕГО города</title>
		<link>http://gtalex.ru/bitriks-pogoda-svoego-goroda</link>
		<comments>http://gtalex.ru/bitriks-pogoda-svoego-goroda#comments</comments>
		<pubDate>Thu, 16 Feb 2012 05:26:54 +0000</pubDate>
		<dc:creator>GTAlex</dc:creator>
				<category><![CDATA[Bitrix]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://gtalex.ru/?p=1935</guid>
		<description><![CDATA[ Заказчик по одному проекту, Энергетический портал Сибири, который я реализую на Битриксе поставил задачу &#171;Виджет погоды своего города&#187;.
Готового решения не нашел, поэтому реализовал так:
Тут взял сам погодный информер.
Тут взял Определение местоположения по IP-адресу
Так как никаких соответствий между решениям (в плане соответствия город-город) я не нашел, то пришлось соответствие прокидывать по наименованию.
Базу всех городов из [...]]]></description>
			<content:encoded><![CDATA[<p> Заказчик по одному проекту, <a href="http://energo-sibir.ru/">Энергетический портал Сибири</a>, который я реализую на Битриксе поставил задачу &laquo;Виджет погоды своего города&raquo;.</p>
<p>Готового решения не нашел, поэтому реализовал так:<br />
Тут взял сам <a href="http://marketplace.1c-bitrix.ru/solutions/mitra.weathergadget/">погодный информер</a>.<br />
Тут взял <a href="http://marketplace.1c-bitrix.ru/solutions/altasib.geoip/">Определение местоположения по IP-адресу</a></p>
<p>Так как никаких соответствий между решениям (в плане соответствия город-город) я не нашел, то пришлось соответствие прокидывать по наименованию.<br />
Базу всех городов из погодного информера выгрузил в файлик, пропарсил его и получил небольшую базу КОД&nbsp;&mdash; ГОРОД погодного информера.</p>
<p>Далее получив название города по IP, пробегаюсь по полученной базе, сохраняя Яндекс-индекс города, который в дальнейшем уже передаю в погодный информер.<br />
Индекс сохраняем в сессии.</p>
<p><center>&copy; <a href="http://blog.gtalex.ru/"> Блог GTAlex </a> - деньги из паутины </center></p>
<p align="center"><a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%91%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%81%C2%A0%E2%80%94+%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0+%D0%A1%D0%92%D0%9E%D0%95%D0%93%D0%9E+%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%B0+http://tinyurl.com/7cft5wo" title="Post to Twitter"><img class="nothumb" src="http://gtalex.ru/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%91%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%81%C2%A0%E2%80%94+%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D0%B0+%D0%A1%D0%92%D0%9E%D0%95%D0%93%D0%9E+%D0%B3%D0%BE%D1%80%D0%BE%D0%B4%D0%B0+http://tinyurl.com/7cft5wo" title="Post to Twitter">ReTweet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gtalex.ru/bitriks-pogoda-svoego-goroda/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Перевод WP плагина twitter-tools .pot -&gt; .po .mo</title>
		<link>http://gtalex.ru/perevod-wp-plagina-twitter-tools-pot-po-mo</link>
		<comments>http://gtalex.ru/perevod-wp-plagina-twitter-tools-pot-po-mo#comments</comments>
		<pubDate>Thu, 12 Jan 2012 03:18:49 +0000</pubDate>
		<dc:creator>GTAlex</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://gtalex.ru/?p=1888</guid>
		<description><![CDATA[ Давелось взять &#171;доводить до ума&#187; сайтик на WP движке с установленным плагинчиком Twitter Tools. Плагин в принципе интересный&#160;&#8212; интеграция с твиттером сайтик оживляет, но вот русской локализации у плагина не было&#160;&#8212; отсюда сайт на русском, а все служебные сообщения плагина на инглише&#160;&#8212; смотрится конечно же отвратительно.
Изначально с локализациями вообще туговато было&#160;&#8212; обновил плагин до [...]]]></description>
			<content:encoded><![CDATA[<p> Давелось взять &laquo;доводить до ума&raquo; сайтик на WP движке с установленным плагинчиком Twitter Tools. Плагин в принципе интересный&nbsp;&mdash; интеграция с твиттером сайтик оживляет, но вот русской локализации у плагина не было&nbsp;&mdash; отсюда сайт на русском, а все служебные сообщения плагина на инглише&nbsp;&mdash; смотрится конечно же отвратительно.</p>
<p>Изначально с локализациями вообще туговато было&nbsp;&mdash; обновил плагин до актуального и уже получше.<br />
В изменениях деклалировали<br />
* Added language dir and .pot file</p>
<p>И действительно&nbsp;&mdash; папочка language присутствовала с файликом twitter-tools.pot<br />
На этом всё&nbsp;&mdash; чё дальше не понятно...<br />
А дальше конечно же гугл <img src='http://gtalex.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://domservisa.com/2009/05/21/rusifikaciya-wordpress-pravilnyj-perevod-temy-ili-plagina-dlya-cms/">Русификация Wordpress или зачем нужны файлы .mo и po, часть 1</a></p>
<p>Дублировать информацию не буду&nbsp;&mdash; там всё доступно написано... Если кратко&nbsp;&mdash; движек для перевода юзает .mo файлы, являющимися скомпрессированными .po файлами, которые в свою очередь создаются из .pot.</p>
<p>Но всё же дополню от себя:<br />
Во первых twitter-tools.pot я переименовал в twitter-tools-ru_RU.po<br />
Во вторых&nbsp;&mdash; по изложенному конечно же не пошло&nbsp;&mdash; при русификации &laquo;week&raquo; Poedit постоянно ругался и выдавал ошибку &laquo;...twitter-tools-ru_RU.po:373: missing `msgstr[]&#39; section&raquo;</p>
<p>Связано это было с неверным заданием множественных форм в заголовке файла.<br />
Сильно мудрить и разбираться я не стал&nbsp;&mdash; взял и тупо копирнул заголовки из заведомо рабочего файлика \wp-content\languages\ru_RU.po и всё пошло &laquo;на ура&raquo;.</p>
<p><center>&copy; <a href="http://blog.gtalex.ru/"> Блог GTAlex </a> - деньги из паутины </center></p>
<p align="center"><a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4+WP+%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0+twitter-tools+.pot+-%3E+.po+.mo+http://tinyurl.com/7x7ugfp" title="Post to Twitter"><img class="nothumb" src="http://gtalex.ru/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4+WP+%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0+twitter-tools+.pot+-%3E+.po+.mo+http://tinyurl.com/7x7ugfp" title="Post to Twitter">ReTweet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gtalex.ru/perevod-wp-plagina-twitter-tools-pot-po-mo/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>301 редирект по параметрам URL средствами php, apache, nginx</title>
		<link>http://gtalex.ru/301-redirekt-po-parametram-url-sredstvami-php-apache-nginx</link>
		<comments>http://gtalex.ru/301-redirekt-po-parametram-url-sredstvami-php-apache-nginx#comments</comments>
		<pubDate>Fri, 11 Nov 2011 08:36:52 +0000</pubDate>
		<dc:creator>GTAlex</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Полезности]]></category>
		<category><![CDATA[Программирование]]></category>
		<category><![CDATA[301]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[Редирект]]></category>

		<guid isPermaLink="false">http://gtalex.ru/?p=1828</guid>
		<description><![CDATA[ В многочисленных статьях по 301му редиректу обычно используют самые тривиальные случаи&#160;&#8212; с www на без www, с одной директории на другую и пр.
В моём случае необходимо было метнуть со странички с параметром ?param=value1... на ?param=value2...  (какие именно писать не буду).
Небольшая сложность в таком подходе в том что ни аппач, ни nginx параметры не [...]]]></description>
			<content:encoded><![CDATA[<p> В многочисленных статьях по 301му редиректу обычно используют самые тривиальные случаи&nbsp;&mdash; с www на без www, с одной директории на другую и пр.<br />
В моём случае необходимо было метнуть со странички с параметром ?param=value1... на ?param=value2...  (какие именно писать не буду).<br />
Небольшая сложность в таком подходе в том что ни аппач, ни nginx параметры не считают адресом странички.<br />
С вариантом на php всё как обычно&nbsp;&mdash; просто решил его добавить до полноты картины <img src='http://gtalex.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
С него и начнём как с самого простого, но и самого неэффективного</p>
<p>Выдёргиваем нужный параметр value1 через $_REQUEST меняем что нужно, и редиректим куда нужно</p>
<blockquote>
<p>
	header(&laquo;HTTP/1.1 301 Moved Permanently&raquo;);<br />
	header("Location: http://..........);<br />
	exit();
</p>
</blockquote>
<p>Далее, вариант с аппачем&nbsp;&mdash; регулярное выражение необходимо наложить на <strong>QUERY_STRING</strong><br />
Правим .htaccess</p>
<blockquote>
<p>
RewriteEngine On<br />
RewriteBase /<br />
RewriteCond %{QUERY_STRING} ^param=value1(.+)$<br />
RewriteRule ^(.*)$ $1?param=value2%1 [R=301,L]
</p>
</blockquote>
<p>И последний&nbsp;&mdash; самый эффективный nginx&nbsp;&mdash; тут параметры лежат в переменной <strong>$args</strong></p>
<blockquote>
<p>
if ($args ~* (.*)param=value1(.+)) {<br />
    set $args $1param=value2$2;<br />
    rewrite ^(.*)$ $1 permanent;<br />
}
</p>
</blockquote>
<p><center>&copy; <a href="http://blog.gtalex.ru/"> Блог GTAlex </a> - деньги из паутины </center></p>
<p align="center"><a target="_blank" class="tt" href="http://twitter.com/home/?status=301+%D1%80%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82+%D0%BF%D0%BE+%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0%D0%BC+URL+%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8+php%2C+apache%2C+nginx+http://tinyurl.com/bqsj3bu" title="Post to Twitter"><img class="nothumb" src="http://gtalex.ru/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=301+%D1%80%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82+%D0%BF%D0%BE+%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0%D0%BC+URL+%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8+php%2C+apache%2C+nginx+http://tinyurl.com/bqsj3bu" title="Post to Twitter">ReTweet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gtalex.ru/301-redirekt-po-parametram-url-sredstvami-php-apache-nginx/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Динамическое подключение к SAPE статических сайтов</title>
		<link>http://gtalex.ru/dinamicheskoe-podklyuchenie-k-sape-staticheskix-sajtov</link>
		<comments>http://gtalex.ru/dinamicheskoe-podklyuchenie-k-sape-staticheskix-sajtov#comments</comments>
		<pubDate>Thu, 10 Nov 2011 05:02:02 +0000</pubDate>
		<dc:creator>GTAlex</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Полезности]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://gtalex.ru/?p=1823</guid>
		<description><![CDATA[ Вот такой вот тафтологичный заголовок получился  
Немного хотел поделиться опытом&#160;&#8212; может кому пригодиться (хотя догадаться самому не сложно).
В общем довелось мне подрубить к сапе статический сайтик&#160;&#8212; эдак на 10 тыс html страниц  
Идея проста&#160;&#8212; настраиваем обработчиком статических страниц свой скрипт, где уже динамически встраиваем сапу. (думал сначала тупо скриптом все странички поправить&#160;&#8212; [...]]]></description>
			<content:encoded><![CDATA[<p> Вот такой вот тафтологичный заголовок получился <img src='http://gtalex.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Немного хотел поделиться опытом&nbsp;&mdash; может кому пригодиться (хотя догадаться самому не сложно).<br />
В общем довелось мне подрубить к сапе статический сайтик&nbsp;&mdash; эдак на 10 тыс html страниц <img src='http://gtalex.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Идея проста&nbsp;&mdash; настраиваем обработчиком статических страниц свой скрипт, где уже динамически встраиваем сапу. (думал сначала тупо скриптом все странички поправить&nbsp;&mdash; но такой вариант мне не понравился). Сайт лежит на моём хостинге, так что проблем с редактированием конфигов у меня не возникло.</p>
<p>В моём случае фронтэндом у меня стоит nginx&nbsp;&mdash; вот в нём то и прописываем нужное правило.</p>
<blockquote>
<p>
	location ~ \.(htm|html)$  {<br />
	    charset windows-1251;<br />
	    fastcgi_index  index.php;<br />
	    fastcgi_intercept_errors on;<br />
	    root   /.../site.ru/www/;<br />
    	    index  index.php index.html index.htm;</p>
<p>	    include        fastcgi_params;<br />
	    fastcgi_pass   unix:/tmp/php-fcgi.sock;<br />
	    fastcgi_param  SCRIPT_NAME          /get.php;<br />
	    fastcgi_param  SCRIPT_FILENAME      /.../site.ru/www/get.php;<br />
	}
</p>
</blockquote>
<p>в get.php уже дёргаем нужный статичный html файл<br />
я его определил через $_SERVER["DOCUMENT_URI"]<br />
и меняем как душе угодно, например<br />
$page = str_replace(&#39;</body>&#39;, $sape.&#39;</body>&#39;,$page);<br />
где в $sape нужный блок со ссылками</p>
<p><center>&copy; <a href="http://blog.gtalex.ru/"> Блог GTAlex </a> - деньги из паутины </center></p>
<p align="center"><a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5+%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BA+SAPE+%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85+%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2+http://tinyurl.com/6rf8eec" title="Post to Twitter"><img class="nothumb" src="http://gtalex.ru/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5+%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BA+SAPE+%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85+%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2+http://tinyurl.com/6rf8eec" title="Post to Twitter">ReTweet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gtalex.ru/dinamicheskoe-podklyuchenie-k-sape-staticheskix-sajtov/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bitrix API: конвертация форума с PHPBB</title>
		<link>http://gtalex.ru/bitrix-api-konvertaciya-foruma-s-phpbb</link>
		<comments>http://gtalex.ru/bitrix-api-konvertaciya-foruma-s-phpbb#comments</comments>
		<pubDate>Fri, 13 May 2011 08:26:54 +0000</pubDate>
		<dc:creator>GTAlex</dc:creator>
				<category><![CDATA[Bitrix]]></category>
		<category><![CDATA[Программирование]]></category>

		<guid isPermaLink="false">http://blog.gtalex.ru/?p=1687</guid>
		<description><![CDATA[ Задача для меня, ещё совсем не опытного Bitrix программиста, не тривиальна ... но предположив, что я далеко не первый кодер, реализующий такую задачу я решил плотно погуглить ... и конечно-же нашел отличный материал, на основе которого и конвертировал таки форум.
Итак, статья&#160;&#8212; Переезжаем с phpBB на форум Битрикс
Материал в целом достаточный, причём неплохо прокомментирован, но [...]]]></description>
			<content:encoded><![CDATA[<p> Задача для меня, ещё совсем не опытного Bitrix программиста, не тривиальна ... но предположив, что я далеко не первый кодер, реализующий такую задачу я решил плотно погуглить ... и конечно-же нашел отличный материал, на основе которого и конвертировал таки форум.<br />
Итак, статья&nbsp;&mdash; <a href="http://dev.1c-bitrix.ru/community/webdev/user/11948/blog/1055/">Переезжаем с phpBB на форум Битрикс</a><br />
Материал в целом достаточный, причём неплохо прокомментирован, но всё же хочу акцентировать на некоторых моментах, с которыми пришлось столкнуться: <span id="more-1687"></span></p>
<ul>
<li> Во первых, в файле forum.php в начале на базе форума phpbb идёт проверка на существование таблиц TBL_WITH_FORUM_IDS и TBL_WITH_POSTS_IDS&nbsp;&mdash; логично предположить, что эти таблицы нужно создавать в базе форума phpbb&nbsp;&mdash; но это не так !  Вторая проверка&nbsp;&mdash; лишняя, в базе форума делаем только одну табличку b_gp_old_bb, две других b_gp_old_bb_topics и b_gp_old_bb_posts&nbsp;&mdash; в базе битрикса.<br />
Может кому поднадобится&nbsp;&mdash; вот скриптик добавления:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// PHPBB</span>
&nbsp;
CREATE TABLE `b_gp_old_bb` <span style="color: #009900;">&#40;</span>
`ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span> AUTO_INCREMENT PRIMARY <span style="color: #990000;">KEY</span> <span style="color: #339933;">,</span>
`OLD_ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">,</span>
`NEW_ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span>
<span style="color: #009900;">&#41;</span> ENGINE <span style="color: #339933;">=</span> MYISAM <span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Начальное заполнение соответствий форумов</span>
INSERT INTO `b_gp_old_bb` VALUES <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">28</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
INSERT INTO `b_gp_old_bb` VALUES <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">29</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
INSERT INTO `b_gp_old_bb` VALUES <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">31</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
INSERT INTO `b_gp_old_bb` VALUES <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
INSERT INTO `b_gp_old_bb` VALUES <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">6</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">32</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Bitrix</span>
&nbsp;
CREATE TABLE `b_gp_old_bb_topics` <span style="color: #009900;">&#40;</span>
`ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span> AUTO_INCREMENT PRIMARY <span style="color: #990000;">KEY</span> <span style="color: #339933;">,</span>
`OLD_ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">,</span>
`NEW_ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span>
<span style="color: #009900;">&#41;</span> ENGINE <span style="color: #339933;">=</span> MYISAM <span style="color: #339933;">;</span>
&nbsp;
CREATE TABLE `b_gp_old_bb_posts` <span style="color: #009900;">&#40;</span>
`ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span> AUTO_INCREMENT PRIMARY <span style="color: #990000;">KEY</span> <span style="color: #339933;">,</span>
`OLD_ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span> <span style="color: #339933;">,</span>
`NEW_ID` INT NOT <span style="color: #009900; font-weight: bold;">NULL</span>
<span style="color: #009900;">&#41;</span> ENGINE <span style="color: #339933;">=</span> MYISAM <span style="color: #339933;">;</span></pre></div></div>

</li>
<li> Поле <strong>post_username</strong> в табличке _posts в моей версии phpbb было заполнено какой-то хернёй, поэтому для привязки юзера, пришлось клеить табличу _users по полю poster_id<br />
Второй запрос у меня выглядел так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #000088;">$strSql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT *
			FROM &quot;</span><span style="color: #339933;">.</span>PHPBB_PREFIX<span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;posts as posts
&nbsp;
			RIGHT JOIN &quot;</span><span style="color: #339933;">.</span>PHPBB_PREFIX<span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;posts_text as posts_text
			ON posts_text.post_id = posts.post_id
&nbsp;
			RIGHT JOIN &quot;</span><span style="color: #339933;">.</span>PHPBB_PREFIX<span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;users as posts_users
			ON posts_users.user_id= posts.poster_id
&nbsp;
&nbsp;
			WHERE posts.topic_id=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$arTopics</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;topic_id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; 
			ORDER BY posts.post_id ASC&quot;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
<li> в users.php  define(&#39;TBL_BANLIST&#39;, &#39;null&#39;);&nbsp;&mdash; это было в комментах </li>
<li> ещё прикол&nbsp;&mdash; после того как форумы будут добавлены в админке, нужно будет зайти в свойства компонента (режим сайта режим правки&nbsp;&mdash; модуль форума) и тупо нажать сохранить&nbsp;&mdash; таким образом добавленные форумы пропишутся в видимые. Иначе пусто. </li>
<li> Правим /bitrix/modules/forum/classes/general/topic.php в методе ADD $arFields["VIEWS"] = 0;&nbsp;&mdash; это тоже было </li>
<li>define(&#39;PATH_TO_AVATAR&#39;, $_SERVER['DOCUMENT_ROOT']...&nbsp;&mdash;  сюда нужно копирнуть аватарки старого форума</li>
<li>С define(&#39;LIMIT_FOR_ONE_STEP&#39;, ...  я заморачиваться не стал, поставил set_time_limit(0); и всего делов&nbsp;&mdash; все юзеры перетащились за раз </li>
<li>Так как пришлось скриптик отлаживать и запускать по несколько раз, я дописал удаление всех юзеров созданных ранее (кроме себя)

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$rsUser</span> <span style="color: #339933;">=</span> CUser<span style="color: #339933;">::</span><span style="color: #004000;">GetList</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$by</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ID&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$order</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;DESC&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$arU</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$rsUser</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arU</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ID&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		CUser<span style="color: #339933;">::</span><span style="color: #004000;">Delete</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arU</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ID&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$DB</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ALTER TABLE `b_forum_user` AUTO_INCREMENT = 2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$DB</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ALTER TABLE `b_user` AUTO_INCREMENT = 2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

</li>
<li>В моём phpbb использовалось поле RANK  которого нет в битриксе, для него я сделал ещё одно пользовательское свойство UF_PHPBB_RANK и добавил его заполнение<br />
		&laquo;UF_PHPBB_RANK&raquo;     => $arUser["user_rank"]
</li>
<li> На счёт паролей&nbsp;&mdash; решил проэксперементировать&nbsp;&mdash; скопировал хэш из phpbb в битрикс&nbsp;&mdash; и о чудо&nbsp;&mdash; пасс подошел, НО при добавлении пароля через API  сам хэш считался паролем и ещё раз хэшировался&nbsp;&mdash; мне же нужно было перетащить хэш &laquo;как есть&raquo;, для этого ещё один допил:
<p>в начале скрипта дёргаем пароли старого форума</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$strSql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT user_id, user_password FROM &quot;</span><span style="color: #339933;">.</span>PHPBB_PREFIX<span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;users;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$rsPosts</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strSql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$e</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$asPosts</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_assoc</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$rsPosts</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$gtUsers</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$asPosts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;user_id&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pass'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$asPosts</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;user_password&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>В конце скрипта (когда юзера уже на месте)</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$arParams</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;SELECT&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UF_*&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$rsUser</span> <span style="color: #339933;">=</span> CUser<span style="color: #339933;">::</span><span style="color: #004000;">GetList</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$by</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ID&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$order</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ASC&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arParams</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$arUser</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$rsUser</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000088;">$phpbb_id</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$arUser</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;UF_PHPBB_ID&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$phpbb_id</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$pass</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$gtUsers</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$phpbb_id</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pass'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$DB</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE b_user SET PASSWORD='<span style="color: #006699; font-weight: bold;">$pass</span>' WHERE ID=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$arUser</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;ID&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

</li>
<li>Совсем не понял зачем чистить special chars&nbsp;&mdash; это дело в __ConvertPosts я закоментил</li>
<li>в forums.php трюк с $lastID у меня не прошел&nbsp;&mdash; т.к. не хватило оперативки для переноса всего форума, но каждый раз в ручную его править&nbsp;&mdash; не реально, поэтому в начале скриптика<br />
$lastID = file_get_contents(&#39;last.id&#39;);<br />
define(&#39;LIMIT_FOR_ONE_STEP&#39;, &#39;500&#39;);<br />
и в цикле<br />
$lastID = $arItem["topic_id"];<br />
file_put_contents(&laquo;last.id&raquo;,$lastID);
</li>
<p>вроде всё</p>
<p><center>&copy; <a href="http://blog.gtalex.ru/"> Блог GTAlex </a> - деньги из паутины </center></p>
<p align="center"><a target="_blank" class="tt" href="http://twitter.com/home/?status=Bitrix+API%3A+%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F+%D1%84%D0%BE%D1%80%D1%83%D0%BC%D0%B0+%D1%81+PHPBB+http://tinyurl.com/3nb9jo8" title="Post to Twitter"><img class="nothumb" src="http://gtalex.ru/wp-content/plugins/tweet-this/icons/tt-twitter.png" alt="Post to Twitter" /></a> <a target="_blank" class="tt" href="http://twitter.com/home/?status=Bitrix+API%3A+%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%86%D0%B8%D1%8F+%D1%84%D0%BE%D1%80%D1%83%D0%BC%D0%B0+%D1%81+PHPBB+http://tinyurl.com/3nb9jo8" title="Post to Twitter">ReTweet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gtalex.ru/bitrix-api-konvertaciya-foruma-s-phpbb/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

