<?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>Уроки PHP, Mootools, JavaScript, ActionScript, HTML, CSS &#187; PHP</title>
	<atom:link href="http://php.infoniac.ru/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://php.infoniac.ru</link>
	<description>Уроки программирования от новичка новичкам</description>
	<lastBuildDate>Thu, 09 Feb 2012 11:09:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP: shell_exec(), system(), passthru()</title>
		<link>http://php.infoniac.ru/php-exec-system-passthru</link>
		<comments>http://php.infoniac.ru/php-exec-system-passthru#comments</comments>
		<pubDate>Sun, 18 Sep 2011 11:51:45 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[терминал]]></category>
		<category><![CDATA[юникс-команды]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=1049</guid>
		<description><![CDATA[Иногда очень не хватает доступа к терминалу своего веб-сервера, ведь используя команды терминала, можно выполнить некоторые задачи значительно быстрее, чем оперуря другими средствами, даже языками скриптования, как PHP. Но в сегодняшнем посте пойдет речь о том, как, используя PHP можно выполнить команды терминала, чтобы облегчить себе жизнь. ]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><div style="text-align:center;width:100%;margin:10px 0px 10px 0px;"><div style="margin:auto;"><script type="text/javascript"><!--
google_ad_client = "pub-8205915997794532";
/* 728x90, создано 08.12.10 */
google_ad_slot = "3730215141";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></div><div style="width:100%;min-width:100%;"><p>Недавно столкнулся с очередной проблемой зипования/архивирования файлов на удаленном сервере. Было поздно, когда я занялся вопросом создания резервной записи файлов сайта. Просто через CyberDuck гонять файлы долго, и не всегда надежно, т.е. нет гарантии, что файлы все перепишуться, что подключение к интернету не подвиснет или ещё что-нибудь не случится. Поэтому решил использовать собственный урок с собственного блога: <a href="http://php.infoniac.ru/php-zip.html">Работа с ZIP средствами PHP</a>.<br />
Как я и говорил, было поздно уже, потому сил после рабочего дня осталось не много, но интерес возбудился, так сказать <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
Вот я и попробовал с помощью немного изменённго собственного примера заархивировать все файлы на серваке и скачать весь сайт ОДНИМ файлом. Получился такой php-скриптик:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$folder</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'../web'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//архивируем всю папку на уровень выше</span>
<span style="color: #000088;">$zip_file</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'archive.zip'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$zip</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ZipArchive<span style="color: #339933;">;</span>
<span style="color: #000088;">$handle</span> <span style="color: #339933;">=</span> <span style="color: #990000;">opendir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$folder</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//открываем нужную папку и создаем ресурс для работы с внутренностями папки</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">open</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$zip_file</span><span style="color: #339933;">,</span> ZipArchive<span style="color: #339933;">::</span><span style="color: #004000;">CREATE</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Не удалось открыть'</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: #009900; font-weight: bold;">false</span> <span style="color: #339933;">!</span> <span style="color: #339933;">===</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addFile</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//считываем все файлы в папке и добавляем их по одному в указанный архив</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$file</span>&quot;</span><span style="color: #339933;">.</span>\n<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #990000;">closedir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//закрываем ресурс открытой папки</span>
<span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//закрываем работу с zip архивом</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Вот как-то так&#8230; Проблема только в том, что такой скрипт будет работать только с файлами в папке, а вложенные папки будут игнорироваться&#8230; Чтобы добавлялись подпапки, нужно добавлять дополнительную проверку каждого файла, но в итоге, архив будет состоять просто из файлов, без папок, т.к. скрипт будет добавлять папки.<br />
Вот, потихоньку подходим к тематике поста. Наткнулся на форуме <strong>stackoverflow</strong> на <a href="http://stackoverflow.com/questions/1048805/compressing-a-directory-of-files-with-php">пост</a> именно по этой теме, и там я и вспомнил, что когда-то, когда я ещё читал книжки, я изучал работу команды <strong>exec()</strong>. Эта функция выполняет команды сторонник программ-оболочек, т.е. при использовании php-обработчика на UNIX-сервере, через эту команду можно выполнять команды терминала!!! А с помощью команд терминала намного проще заархивировать как файлы, так и папки всего ОДНОЙ строчкой:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-czf</span> backup.tar.gz ..<span style="color: #000000; font-weight: bold;">/</span>web</pre></div></div>

<p>Тут стоит немного внести ясности, что я не владею ни <a href="http://www.2domains.ru" title="Домены RU и РФ всего за 99 рублей">доменом</a> <a href="http://www.infoniac.ru" title="Новости без политики: технологии, психология, факты и истории">infoniac.ru</a> ни площадкой, на которой он хостится, поэтому у меня нет доступа к управлению ни того, ни другого. Поэтому я и не могу просто взять, открыть терминал на хостинге и набрать команду. У меня только ФТП доступ, поэтому приходится как-то выкручиваться.<br />
Вот, в общем, и наткнулся на функции типа shell_exec();, которые способны выполнять команды терминала через среду PHP. Таких команд много и методов работы с ними тоже много. У каждой свои особенности выполнения и использования, но результат примерно одинаковый: выполняются команды оболочки веб-сервера (по крайней мере, в UNIX-системах это работает).<br />
Я сделал <a href="/tests/test_shell.php" rel="nofollow" class="broken_link">тестовый файл</a> на сервере, который показывает, как некоторые из этих команд работают, чтобы можно убедиться в работоспособности этих функций. Вот код файла:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;strong&gt;system(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">system</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; &amp;lt;/pre&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&lt;strong&gt;passthru(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;/strong&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">passthru</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/pre&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&lt;strong&gt;echo shell_exec(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;/strong&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">shell_exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/pre&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&lt;strong&gt;echo exec(<span style="color: #000099; font-weight: bold;">\&quot;</span>ls<span style="color: #000099; font-weight: bold;">\&quot;</span>):&lt;/strong&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&amp;lt;pre&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ls'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;lt;/pre&gt;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>
?&gt;</span></pre></div></div>

<p>Что-то вордпресс и плагин WP-Syntax не способны правильно обработать теги &lt;pre> в коде РНР, который я привожу в пример, потому, публикую как есть.</p>
</div><!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/php-exec-system-passthru/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Об изображениях в электронном письме</title>
		<link>http://php.infoniac.ru/pro-izobrazhenia-v-elektronnom-pisme.html</link>
		<comments>http://php.infoniac.ru/pro-izobrazhenia-v-elektronnom-pisme.html#comments</comments>
		<pubDate>Thu, 28 Apr 2011 13:00:01 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[изображения]]></category>
		<category><![CDATA[скрипты]]></category>
		<category><![CDATA[электронная почта]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=990</guid>
		<description><![CDATA[Недавно получил задание: разобраться, как можно надёжнее всего вставить изображение в тело электронного письма так, чтобы у большинства получателей, вне зависимости от используемого почтового клиента, эти изображения отображались. Ковырялся, вроде как просто вставить &#60;img src="путь" alt="" /> более или менее справляется с задачей, но а как быть, когда изображение нигде не размещено и пути к [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Недавно получил задание: разобраться, как можно надёжнее всего вставить изображение в тело электронного письма так, чтобы у большинства получателей, вне зависимости от используемого почтового клиента, эти изображения отображались.<span id="more-990"></span><br />
Ковырялся, вроде как просто вставить <code>&lt;img src="путь" alt="" /></code> более или менее справляется с задачей, но а как быть, когда изображение нигде не размещено и пути к нему не существует. И тут, как по волшебству, меня во-первых осенило! Когда <a href="http://php.infoniac.ru/proglammera-dolgo-nebylo.html">ходил на курсы по кросс-браузерной верстке</a>, препод вскользь упомянул о том, что все (а может не все, а только особое их содержимое, вроде картинок) электронные письма кодируются в <strong>base64</strong>, а потом показал пример, закодировав изображение этим алгоритмом, а потом насильно вставив то, что получилось в атрибут <em>src</em> тега <strong>img</strong>. А во-вторых, наткнулся на тему со скриптом PHP, который создает и отправляет именно такие письма, т.е. с изображениями, которые не являются вложениями и которые нельзя сохранить на диск (т.е. это элементы дизайна, а не вложения, потому и нафиг никому не надо их сохранять на диск). Тут же попробовал отправить изображение в base64, но пришел текст <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
Сейчас, к сожалению, нет времени разбираться (всё бьюсь на кроссбраузерной версткой пока первого и единственного сайта), потому просто сохраню себе ссылку с форума, а они может, ещё кому-нибудь пригодятся:<br />
<a href="http://softtime.ru/forum/read.php?id_forum=1&#038;id_theme=60002" title="Отправка письма в HTML-формате со встроенными изображениями">Отправка письма в HTML-формате со встроенными изображениями</a></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/pro-izobrazhenia-v-elektronnom-pisme.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мои достижения в PHP</title>
		<link>http://php.infoniac.ru/moi-dostizheniya-v-php.html</link>
		<comments>http://php.infoniac.ru/moi-dostizheniya-v-php.html#comments</comments>
		<pubDate>Wed, 20 Apr 2011 13:50:13 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[веб-программирование]]></category>
		<category><![CDATA[достижения]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=975</guid>
		<description><![CDATA[Вот ещё один пост, который я выкладываю, в принципе, на всеобщее рассмотрение и критику, но, больше, для себя. Частенько вспоминаю, что, что-то подобное я уже делал, но не могу вспомнить где и как.]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Класс установки ссылок смежных материалов</h2>
<p>Этот класс я соорудил для сайта на работе, для автоматической установки ссылок на следующую и предыдущую новости. Вроде нормально получилось</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Controls <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$Next</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Следующая новость'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$Prev</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Предыдущая новость'</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//метод для определения ID первой и последней новостей</span>
	<span style="color: #000000; font-weight: bold;">function</span> GetPoles <span style="color: #009900;">&#40;</span><span style="color: #000088;">$way</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'DESC'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$q</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT `id` FROM `news` ORDER BY `id` &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$way</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; LIMIT 1&quot;</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;">$q</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: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//собственно, метод, который определяет действительный ID смежного материала</span>
	<span style="color: #000000; font-weight: bold;">function</span> FindID <span style="color: #009900;">&#40;</span><span style="color: #000088;">$currentID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$flag</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</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;">$flag</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$id_val</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$currentID</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #000088;">$id_val</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$currentID</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$q</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT `id` FROM `news` WHERE `id` = &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$id_val</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;">$q</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: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</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;">$currentID</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ASC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id_val</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$currentID</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DESC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id_val</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id_val</span><span style="color: #339933;">,</span> <span style="color: #000088;">$flag</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_result</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$q</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//конструктор HTML</span>
	<span style="color: #000000; font-weight: bold;">function</span> putControls<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</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;">$ID</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;DESC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;span class=&quot;next&quot;&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>news_1_&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.htm<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&amp;lt;&amp;lt;&amp;lt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Next</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/a&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/span&gt;'</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetPoles</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ASC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;span class=&quot;prev&quot;&gt;'</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span>news_1_&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FindID</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ID</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.htm<span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Prev</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;/span&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Тут ещё был класс для подключения к базе данных, но это уже совсем просто. Блин, нравится мне программировать (громко как звучит <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), аж на работу интересно приходить! Представляете, насколько интересно <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/moi-dostizheniya-v-php.html/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Фичи для PHP</title>
		<link>http://php.infoniac.ru/fichi-dlea-php.html</link>
		<comments>http://php.infoniac.ru/fichi-dlea-php.html#comments</comments>
		<pubDate>Wed, 20 Apr 2011 11:24:13 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[opendir]]></category>
		<category><![CDATA[readdir]]></category>
		<category><![CDATA[while]]></category>
		<category><![CDATA[чтение всех файлов в папке]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=962</guid>
		<description><![CDATA[Конструкция while для чтения директорий и файлов Известно дело, что часто нужно в PHP функциях выполнять некоторые действия энное количество раз. Тогда всё понятно: определяется переменная, ей задается целое число, выполняется код, число увеличивается/уменьшается на единицу. Конструкция while частенько используется для пробежки по всем файлам и вложенным папкам родительской папки, но для обозначения условия конструкции, [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><h2>Конструкция while для чтения директорий и файлов</h2>
<p>Известно дело, что часто нужно в PHP функциях выполнять некоторые действия энное количество раз. Тогда всё понятно: определяется переменная, ей задается целое число, выполняется код, число увеличивается/уменьшается на единицу. Конструкция while частенько используется для пробежки по всем файлам и вложенным папкам родительской папки, но для обозначения условия конструкции, используется не совсем стандартная конструкция (простите за тавтологию):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">FALSE</span> <span style="color: #339933;">!==</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$item</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">//проверка, не является ли текущая позиция в папке выходом в корневую или родительскую папку</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$item</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$item</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'..'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">/*сюда выполняемый код*/</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>где <strong>$item</strong> &#8211; это переменная, которая жива только в цикле while, и которая обозначает текущий объект в папке, <strong>readdir()</strong> &#8211; функция PHP для чтения содержимого папки, <strong>$handle</strong> &#8211; переменная-ресурс, определяющая текущую папку, которую нужно было определить заранее функцией <strong>opendir(</strong><em>&#8216;название папки&#8217;</em><strong>)</strong>.<br />
Я эту заметку, составил больше для себя (вскоре, я перестану повторять это <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), но, может кому-нибудь тоже пригодится.</p>
<h2>Особенность рекурсивных функций</h2>
<p>Пытался на работе написать класс для отображения ссылок на смежные материалы.<br />
<strong>Суть</strong>: получить ID текущего материала, приплюсовать единицу, минусовать единицу, составить ссылку.<br />
<strong>Примечание</strong>: Ведь бывает так, что материал является первым или последним, а также, что материала с <em>ID=текущий ID минус/плюс 1</em> нет уже (удалили когда-то), потому нужно просто запустить ещё раз эту же функцию с уже новым значением. Сколько же я бился, пока юное дарование программирования не подсказал мне, что нужно поставить return при каждом вызове функции в самой себе, иначе возврата не будет.<br />
Обойдусь без примеров, ничего в голову не лезет. Главное помнить, что если функция заканчивается строчкой <strong>return ЗНАЧЕНИЕ</strong>, то при рекурсивном вызове функции, нужно перед этим вызовом ставить также <em>return</em>, т.е. <strong>return НАЗВАНИЕ_ФУНКЦИИ(ПАРАМЕТРЫ)</strong></p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/fichi-dlea-php.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с ZIP средствами PHP</title>
		<link>http://php.infoniac.ru/php-zip.html</link>
		<comments>http://php.infoniac.ru/php-zip.html#comments</comments>
		<pubDate>Mon, 18 Oct 2010 06:10:00 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[server side scriping]]></category>
		<category><![CDATA[zip]]></category>
		<category><![CDATA[серверные скрипты]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=804</guid>
		<description><![CDATA[<p>Я давно знаю, что PHP отлично работает с архивами ZIP. Я знал, что есть специальные библиотеки, некоторые платные, некоторые бесплатные. И вот, настал тот день, настал тот час, когда я решил попробовать, как именно работает PHP с архивами ZIP.</p>]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Если кому не известно или не понятно, для чего нужно использовать PHP инструменты для работы с архивами, могу привести несколько примеров. Архивируя информацию &#8220;налету&#8221;, можно сэкономить немного трафика как серверу, так и пользователю, особенно когда речь идет о большом количестве текстовой информации, как например скачивание электронных книг, резервных копий баз данных, отчетов, CSV файлов и т.д. Другой пример, который мне приходит в голову &#8211; это хранение информации для экономии места на удаленном сервере. Конечно, целесообразнее всего архивировать данные, только если они действительно не часто используются и использовать PHP для распаковки архива, когда это потребуется, непосредственно на сервере. Еще, часто требуется залить огромное количество маленький файлов на сервер, а это длится ОЙ как долго. <strong>Известный факт</strong>: закачать 1 файл размером в 1000000 байт намного быстрее, чем 1000000 файлов по одному байту. PHP в помощь! Запаковываем файлы в архив, заливаем на сервер, используя скрипт, распаковываем архив. Voil&aacute;!</p>
<p>Ну, в общем, дошли у меня руки до тестдрайва зиповского инструментария в PHP. Как выяснилось, за работу с архивами отвечают несколько PHP библиотек. Я попробовал zlib &#8211; она встроена в стандартный архив PHP, доступный <a href="http://ru.php.net/downloads.php">тут</a>.</p> 
<h2>А поддерживает ли твоя сборка PHP работу с архивами</h2>
<p>Перед тем, как начать работать с архивами, нужно вначале убедиться, что твоя сборка PHP поддерживает работу с ZIP архивами. Для этого, в выдаче функции <strong>phpinfo();</strong> нужно найти категорию <strong>zlib</strong>. Если таковая есть, значит и есть работа с архивами. Помимо <strong>zlib</strong>, в выдаче есть ещё какая-то категория <strong>zip</strong>, чьё предназначение я пока не понял.</p>
<h2>ZipArchive</h2>
<p>Библиотека <strong>zlib</strong> работает с архивами через объект ZipArchive. Далее показано, как разархивировать архив <strong>ZIP</strong>.</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;">//создаем новый объект ZipArchive </span>
<span style="color: #000088;">$zip</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ZipArchive<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//пытаемся открыть архив</span>
<span style="color: #666666; font-style: italic;">//если архив открывается, переменная $res принимает значение TRUE</span>
<span style="color: #666666; font-style: italic;">//если открыть не получится, то переменной передается код ошибки</span>
<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">open</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test1.zip'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">/*проверка на возможность открытия архива:
обратите внимание, что проверка идет через оператор идентичности '=== TRUE',
т.е. если переменная будет равна 0 (нулю), тест не будет пройден
*/</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//обозначаем папку, в которую будет производится разархивирование </span>
<span style="color: #666666; font-style: italic;">//если папка несуществует, она будет создана</span>
    <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">extractTo</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//закрываем работу с архивом</span>
    <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//если архив НЕ открылся</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Не получилось из-за ошибки #'</span><span style="color: #339933;">.</span><span style="color: #000088;">$res</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// где $res - код ошибки</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>



<p>Вот так незамысловато можно разархивировать архив непосредственно на сервере. Очень удобно. И код нельзя назвать объёмным.</p>
<h2>Создание ZIP архивов</h2>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;">//снова создаем новый объект ZipArchive</span>
<span style="color: #000088;">$zip</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ZipArchive<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//снова используем метод open(), но теперь используем ключ ZipArchive::CREATE</span>
<span style="color: #666666; font-style: italic;">//который говорит, что архив нужно создать</span>
<span style="color: #666666; font-style: italic;">//а первым параметром передаем название архива] </span>
<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">open</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test1.zip'</span><span style="color: #339933;">,</span> ZipArchive<span style="color: #339933;">::</span><span style="color: #004000;">CREATE</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;">$res</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">//вот это интересная функция, которая, использует содержимое файла</span>
    <span style="color: #666666; font-style: italic;">//для добавления его в архив</span>
    <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addFromString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test.txt'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'строка-содержимое файла'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//тут все просто: говорим, какой файл добавить в архив</span>
    <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addFile</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'file.fl'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//закрываем работу с архивом</span>
    <span style="color: #000088;">$zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Ошибка №'</span><span style="color: #339933;">.</span><span style="color: #000088;">$res</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>



<p>Вот примерный список ошибок и их числовых значений, если вдруг кому понадобится:</p>
ZIPARCHIVE::ER_EXISTS &#8211; 10<br />
ZIPARCHIVE::ER_INCONS &#8211; 21<br />
ZIPARCHIVE::ER_INVAL &#8211; 18<br />
ZIPARCHIVE::ER_MEMORY &#8211; 14<br />
ZIPARCHIVE::ER_NOENT &#8211; 9<br />
ZIPARCHIVE::ER_NOZIP &#8211; 19<br />
ZIPARCHIVE::ER_OPEN &#8211; 11<br />
ZIPARCHIVE::ER_READ &#8211; 5<br />
ZIPARCHIVE::ER_SEEK &#8211; 4<br />
<p>Ну вот и всё! Этого вполне должно хватить каждому, чтобы смочь заархивировать или разархивировать ZIP архив на сервере с помощью PHP. Спасибо за внимание, всем удачи!</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/php-zip.html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ваш опыт нужен тысячам!</title>
		<link>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html</link>
		<comments>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html#comments</comments>
		<pubDate>Fri, 27 Aug 2010 07:13:11 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Оптимизация]]></category>
		<category><![CDATA[Поисковые системы]]></category>
		<category><![CDATA[Работа с сайтом]]></category>
		<category><![CDATA[Разное]]></category>
		<category><![CDATA[акция]]></category>
		<category><![CDATA[веб-программирование]]></category>
		<category><![CDATA[опыт]]></category>
		<category><![CDATA[размещение статей]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=643</guid>
		<description><![CDATA[Объявляется преобразование моего блога в белый каталог статей на тему веб-программирования для новочков! Если вы хотите разметисть у меня на блоге свою статью на тему веб-программирования и что бы в статей было упоминание Вашего сайте, читайте дальше!]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Уважаемые читатели!<br />
Веб-программированию многие, как я, пытаются научиться на дому, т.е. не ходят на курсы, не учатся в ВУЗах или же просто ищут в интернете интересные задачи на тему программирования.</p>
<p>Судя по некоторым отзывам, мои <a href="http://php.infoniac.ru/category/mootools/">уроки по Mootools</a> очень помогают другим новичкам в плане Mootools. Но у меня, к сожалению, не так много интересных задач, которые я мог бы выложить в блог для рассмотрения и помощи другим новичкам, таким как я. Потому, хочу объявить о небольшой акции:</p>
<blockquote style="font-weight:bold;"><p>Если Вы также, как и я, учитесь программированию и у вас есть интересные задачи, темы, уроки? которыми вы готовы поделиться, пожалуйста, присылайте Ваши материалы мне на php &#8211; собака &#8211; инфониак.ru (думаю, разберете, как правильно адрес пишется) или просто через <a href="http://php.infoniac.ru/%d0%b3%d0%be%d1%80%d1%8f%d1%87%d0%b0%d1%8f-%d0%bb%d0%b8%d0%bd%d0%b8%d1%8f/">мою горячую линию</a>.</p></blockquote>
<p>Понятное дело, никто просто так не будет делиться своим опытом, но и понятное дело, что я не просто так предлагаю размещать Ваш опыт у Себя в блоге. Итак, если соберетесь прислать мне свой материал, пожалуйста, убедитесь в том, что:</p>
<ol>
<li>материал написан на тему веб-программирования, поисковых систем, верстки сайтов, дизайна веб-страниц и вообще интернете. Не допускаются темы заработка в интернете и всего такого. Если я посчитаю, что материал не будет интересен мои читателям, я:</li>
</ol>
<div style="margin-left:25px;">- отредактирую материал, если это поможет ему получить оттенок допустимой тематики;<br />
- отклоню материал с отпиской автору о причине сего.</div>
<ol start="2">
<li>материал уникален;</li>
<li>опрятно написан, без ошибок и опечаток (не так как у меня <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  );</li>
<li>состоит не менее чем из 300 слов, связанных между собой смыслом (см. пункт выше);</li>
<li>он уникален (см. пункт 2), если вы просто хотите перепостить материал уже размещенный на вашем сайте;</li>
<li>что в статье не просто теория, но и практические примеры (но и просто теория &#8211; не плохо, присылайте рассмотрим&#8230; я бы и сам попробовал придумать и прикрутить примеры);</li>
<li>если еще что-нибудь придумаю, обновлю <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</li>
</ol>
<p>С моей стороны вы получите в этом материале ссылку на Ваш блог и благодарности всех читателей за еще один хороший урок с примером <img src='http://php.infoniac.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/katalog-statei-po-web-programmirovaniju.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AJAX. С чем это едят?</title>
		<link>http://php.infoniac.ru/ajax.html</link>
		<comments>http://php.infoniac.ru/ajax.html#comments</comments>
		<pubDate>Fri, 10 Oct 2008 04:41:32 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=41</guid>
		<description><![CDATA[Если вы каким-то чудом ещё не знаете что такое AJAX то вы пришли по адресу. Простыми словами можно сформулировать так: AJAX &#8211; это когда с помощью JavaScript можно запрашивать и получать данные с сервера не перезагружая станицу сайта. Основные библиотеки позволяющие использовать технологию AJAX: Prototype и(или) JQuery. Листинг 1. подключение библиотек prototype, jquery: &#60;script type=&#34;text/javascript&#34; [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Если вы каким-то чудом ещё не знаете что такое AJAX то вы пришли по адресу.</p>
<p>Простыми словами можно сформулировать так: AJAX &#8211; это когда с помощью JavaScript можно запрашивать и получать данные с сервера не перезагружая станицу сайта.</p>
<p>Основные библиотеки позволяющие использовать технологию AJAX: Prototype и(или) JQuery.</p>
<p><span id="more-41"></span></p>
<p><strong>Листинг 1. подключение библиотек prototype, jquery:</strong>
</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;prototype.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
// и(или)
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;jquery.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p><strong>Jquery</strong> &#8211; это вообще полезная вещь, так как данная библиотека предлагает разработчику большое количество методов для манипуляции элементами документа и их свойствами и позволяет находить простые и изящные решения для, казалось бы, сложных задач.</p>
<p>
<strong>Примеры:</strong>
</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//prototype</span>
<span style="color: #000000; font-weight: bold;">new</span> Ajax<span style="color: #339933;">.</span>Request<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'some.php'</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#123;</span>
	method<span style="color: #339933;">:</span> <span style="color: #0000ff;">'get'</span><span style="color: #339933;">,</span>
	onSuccess<span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> transport <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">var</span> responseStr <span style="color: #339933;">=</span> transport<span style="color: #339933;">.</span>responseText <span style="color: #339933;">||</span> <span style="color: #0000ff;">&quot;Пусто...&quot;</span><span style="color: #339933;">;</span>
		alert<span style="color: #009900;">&#40;</span> responseStr <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
	onFailure<span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		alert<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Ошибка...'</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//jquery</span>
$<span style="color: #339933;">.</span>ajax<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
  type<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;POST&quot;</span><span style="color: #339933;">,</span>
  url<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;some.php&quot;</span><span style="color: #339933;">,</span>
  data<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;name=John&amp;amp;location=Boston&quot;</span><span style="color: #339933;">,</span>
  success<span style="color: #339933;">:</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>msg<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    alert<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Data Saved: &quot;</span> <span style="color: #339933;">+</span> msg <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// или</span>
$<span style="color: #339933;">.</span>get<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;test.cgi&quot;</span><span style="color: #339933;">,</span>
  <span style="color: #009900;">&#123;</span> name<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;John&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;2pm&quot;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
  <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    alert<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Data Loaded: &quot;</span> <span style="color: #339933;">+</span> data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// ну или</span>
$<span style="color: #339933;">.</span>post<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;test.cgi&quot;</span><span style="color: #339933;">,</span>
  <span style="color: #009900;">&#123;</span> name<span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;John&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">time</span><span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;2pm&quot;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
  <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    alert<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Data Loaded: &quot;</span> <span style="color: #339933;">+</span> data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Полезнее всего использовать AJAX для улучшения юзабилити в таких приложениях как голосование, корзина, букмарки (..да, много всего) ну и в CMS. Наполнять страницу контентом нужно традиционно, статически, а вот всякий &#8220;мусор&#8221; типа декора или счётчиков подгружать динамически с применением AJAX.
</p>
<p>
Изначально сайт нужно разрабатывать без применения AJAX, а потом вкручивать его как дополнение. Посетители не использующие JS смогут без ошибок просматривать сайт, ну и нельзя забывать про индексацию страниц поисковиками. Со всеми своими плюсами AJAX легко может оказать негативное влияние на СЕО.
</p>
<p>
<strong>Ссылочки:</strong>
</p>
<ul>
<li><a href="http://ru.wikibooks.org/wiki/AJAX">AJAX Материал из Викиучебника</a></li>
</ul>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/ajax.html/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Нужно поменять кодировку utf-8 на windows-1251?</title>
		<link>http://php.infoniac.ru/utf-8_to_windows-1251.html</link>
		<comments>http://php.infoniac.ru/utf-8_to_windows-1251.html#comments</comments>
		<pubDate>Mon, 06 Oct 2008 07:01:48 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cp-1251]]></category>
		<category><![CDATA[utf8]]></category>
		<category><![CDATA[win-1251]]></category>
		<category><![CDATA[windows1251]]></category>
		<category><![CDATA[кодировка]]></category>
		<category><![CDATA[смена кодировки]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=31</guid>
		<description><![CDATA[Рано или поздно перед программистом встанет задача перекодировки текста из utf-8 на windows-1251 (или cp1251 в unix формате). На например, такая необходимость возникает когда нужно отправить письмо в windows-1251, а текста хранятся в utf-8. Можно использовать iconv. Например так: Листинг 1. Функция iconv(): &#60;? echo iconv&#40;&#34;utf-8&#34;, &#34;windows-1251&#34;, &#34;Пора переходить на cp-1251.&#34;&#41;; ?&#62; Если iconv не помогает, [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Рано или поздно перед программистом встанет задача перекодировки текста из utf-8 на windows-1251 (или cp1251 в unix формате). На например, такая необходимость возникает когда нужно <a href="http://php.infoniac.ru/sendmail.html">отправить письмо</a> в windows-1251, а текста хранятся в utf-8.
</p>
<p><span id="more-31"></span></p>
<p>Можно использовать <strong>iconv</strong>. Например так:</p>
<p><strong>Листинг 1. Функция iconv():</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #b1b100;">echo</span> <span style="color: #990000;">iconv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;utf-8&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;windows-1251&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;Пора переходить на cp-1251.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Если <strong>iconv</strong> не помогает, то тогда используем что либо из тучи самодельных функций конвертирования кодировок. </p>
<p>Ниже представлена лучшая функция &#8211; из всего что можно было найти в интернете по данной тематике. В любом случае &#8211; судить вам&#8230;<br /> Просьба: отписываться о багах. Заранее спасибо.</p>
<p><strong>Листинг 2. Функция для перекодировки из utf-8 в windows-1251:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span>
<span style="color: #000000; font-weight: bold;">function</span> _charset_utf8_win<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$r</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
  <span style="color: #000088;">$state</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>strlen<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #000088;">$c</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ord(<span style="color: #006699; font-weight: bold;">$s</span>[<span style="color: #006699; font-weight: bold;">$i</span>]);&quot;</span> <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$state</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #b1b100;">case</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:=</span><span style="color: #0000ff;">&quot;&quot;</span> not<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> a<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> special<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> symbol<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">&gt;&amp;</span>lt<span style="color: #339933;">;=</span><span style="color: #cc66cc;">127</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
          <span style="color: #000088;">$r</span><span style="color: #339933;">.=</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">else</span>
        <span style="color: #009900;">&#123;</span>
          <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span>
          <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$c1</span><span style="color: #339933;">=</span><span style="color: #000088;">$c</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$state</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
          <span style="color: #b1b100;">else</span>
            <span style="color: #000088;">$r</span><span style="color: #339933;">.=</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">128</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span> <span style="color: #666666; font-style: italic;">//an utf-8 encoded symbol has been meet</span>
        <span style="color: #000088;">$new_c2</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c1</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">64</span><span style="color: #339933;">+</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">63</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$new_c1</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c1</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span><span style="color: #cc66cc;">5</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$new_i</span><span style="color: #339933;">=</span><span style="color: #000088;">$new_c1</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">256</span><span style="color: #339933;">+</span><span style="color: #000088;">$new_c2</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$new_i</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
          <span style="color: #b1b100;">case</span>   <span style="color: #cc66cc;">1025</span><span style="color: #339933;">:</span> <span style="color: #000088;">$out_c</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'Ё'</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
          <span style="color: #b1b100;">case</span>   <span style="color: #cc66cc;">1105</span><span style="color: #339933;">:</span> <span style="color: #000088;">$out_c</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'ё'</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
          <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x00ab</span><span style="color: #339933;">:</span> <span style="color: #000088;">$out_c</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'«'</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
          <span style="color: #b1b100;">case</span> <span style="color: #208080;">0x00bb</span><span style="color: #339933;">:</span> <span style="color: #000088;">$out_c</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'»'</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
          <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span> <span style="color: #000088;">$out_c</span><span style="color: #339933;">=</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$new_i</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">848</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000088;">$r</span><span style="color: #339933;">.=</span><span style="color: #000088;">$out_c</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$state</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$r</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Если уж и это не подходит &#8211; попробуёте универсальный класс: <strong>ConvertCharset.class.php</strong>, который конвертирует любую кодировку в любую другую кодировку.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/utf-8_to_windows-1251.html/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Как правильно читать файлы с помощью PHP?</title>
		<link>http://php.infoniac.ru/php/fwrite.html</link>
		<comments>http://php.infoniac.ru/php/fwrite.html#comments</comments>
		<pubDate>Sun, 05 Oct 2008 13:21:17 +0000</pubDate>
		<dc:creator>proglammer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[файл]]></category>
		<category><![CDATA[читать файлы]]></category>

		<guid isPermaLink="false">http://php.infoniac.ru/?p=6</guid>
		<description><![CDATA[Как правильно читать файлы с помощью PHP? Этим вопросом задавался любой уважающий себя web-coder. Базовыми функциями для работы с файлами, являются: fopen, fclose и feof; функции чтения: fgets, fgetss и fscanf. Для упрощения работ с файлами был составлен класс. Составляя новый код, каждый раз при возвращении к данной проблеме &#8211; нужно просто подключить файл с [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>Как правильно читать файлы с помощью PHP? Этим вопросом задавался любой уважающий себя web-coder.  </p>
<p>Базовыми функциями для работы с файлами, являются: <strong>fopen</strong>, <strong>fclose </strong>и <strong>feof</strong>; функции чтения: <strong>fgets</strong>, <strong>fgetss</strong> и <strong>fscanf</strong>.</p>
<p>Для упрощения работ с файлами был составлен класс.  Составляя новый код, каждый раз при возвращении к данной проблеме &#8211; нужно просто подключить файл с этим классом, что даёт возможность использовать минимальное количество времени и кода для решения задач обработки файлов.</p>
<p><span id="more-6"></span></p>
<p><strong>Листинг 1. Пример класса для работы с файлами:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>?
<span style="color: #000000; font-weight: bold;">class</span> writefile <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$fp</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$patch</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">function</span> close<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>	<span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">function</span> write<span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">,</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">function</span> read<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$fs</span><span style="color: #339933;">=</span><span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</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: #339933;">!</span><span style="color: #000088;">$fs</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot; <span style="color: #006699; font-weight: bold;">{$this-&gt;patch}</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">fread</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">,</span><span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">function</span> open<span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</span><span style="color: #339933;">=</span> <span style="color: #000088;">$patch</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span>w<span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">function</span> open_r<span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">patch</span><span style="color: #339933;">=</span> <span style="color: #000088;">$patch</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fp</span><span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$patch</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span>r<span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>strong<span style="color: #339933;">&gt;</span>Пример использования класса для работы с файлами<span style="color: #339933;">:&lt;/</span>strong<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>?
<span style="color: #339933;">...</span>
<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span>classes<span style="color: #339933;">/</span>writefile<span style="color: #339933;">.</span>php<span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// подключаем класс</span>
<span style="color: #339933;">...</span>
<span style="color: #000088;">$writefile</span><span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> writefile<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$writefile</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">open_r</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #990000;">mail</span><span style="color: #339933;">.</span>tpl<span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// открываем для чтения</span>
<span style="color: #000088;">$mailTpl</span><span style="color: #339933;">=</span> <span style="color: #000088;">$writefile</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// возвращаем содержимое файла</span>
<span style="color: #339933;">...</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://php.infoniac.ru/php/fwrite.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

