<?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>Записки программиста &#187; PHP</title>
	<atom:link href="http://anton.bukarev.org/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://anton.bukarev.org</link>
	<description>Web-программирование и не только</description>
	<lastBuildDate>Thu, 05 Nov 2009 08:50:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ajax загрузка файлов с использованием jquery.form и jquery.multiFile</title>
		<link>http://anton.bukarev.org/otvety-na-pisma/ajax-zagruzka-fajlov-s-ispolzovaniem-jqueryform-i-jquerymultifile/</link>
		<comments>http://anton.bukarev.org/otvety-na-pisma/ajax-zagruzka-fajlov-s-ispolzovaniem-jqueryform-i-jquerymultifile/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 08:09:50 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[Ответы на письма]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=443</guid>
		<description><![CDATA[В комментарии блога linkexchanger.su оставлял ссылку на пример загрузки файлов с помощью jquery.form и jquery.multifile, но ссылка стала не активной. Выкладываю мой пример, надеюсь он Вам поможет.

P.S. Не забудте в php скрипте учесть обработку ошибок $_FILES['file']['error']

Ссылка для скачивания:&#160;multiupload
 ]]></description>
			<content:encoded><![CDATA[<p>В комментарии блога linkexchanger.su оставлял ссылку на пример загрузки файлов с помощью jquery.form и jquery.multifile, но ссылка стала не активной. Выкладываю мой пример, надеюсь он Вам поможет.<br />
<br />
P.S. Не забудте в php скрипте учесть обработку ошибок $_FILES['file']['error']<br />
<br />
<strong>Ссылка для скачивания:</strong>&nbsp;<a href='http://anton.bukarev.org/wp-content/uploads/2009/08/multiupload.zip'>multiupload</a></p>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=443" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/otvety-na-pisma/ajax-zagruzka-fajlov-s-ispolzovaniem-jqueryform-i-jquerymultifile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Создаем сервис коротких ссылок</title>
		<link>http://anton.bukarev.org/web/php/sozdaem-servis-korotkix-ssylok/</link>
		<comments>http://anton.bukarev.org/web/php/sozdaem-servis-korotkix-ssylok/#comments</comments>
		<pubDate>Sat, 23 May 2009 18:50:06 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[tinyurl.com]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=269</guid>
		<description><![CDATA[Вероятно Вы уже знакомы с сервисом коротких ссылок tinyurl.com. Давайте создадим свой собственный сервис коротких ссылок.

Как работает сервис коротких ссылок
Например Вы залили файл на narod.ru/disk и получили ссылку вида http://narod.ru/disk/9036797010/somefile.html. Запомнить ее будет затруднительно, а записывать долго для этого и существуют сервисы коротких ссылок. Вы заходите на tinyurl.com,  копируете в специальную форму ссылку и [...]]]></description>
			<content:encoded><![CDATA[<p>Вероятно Вы уже знакомы с сервисом коротких ссылок tinyurl.com. Давайте создадим свой собственный сервис коротких ссылок.</p>
<p><span id="more-269"></span></p>
<h2>Как работает сервис коротких ссылок</h2>
<p>Например Вы залили файл на narod.ru/disk и получили ссылку вида http://narod.ru/disk/9036797010/somefile.html. Запомнить ее будет затруднительно, а записывать долго для этого и существуют сервисы коротких ссылок. Вы заходите на tinyurl.com,  копируете в специальную форму ссылку и получаете короткую ссылку вида http://tinyurl.com/8fp ее и запомнить, и записать намного быстрее.</p>
<h2>Приступим</h2>
<p>Для этого нам понадобится:</p>
<ul>
<li>PHP</li>
<li>MySQL</li>
<li>mod_rewrite</li>
</ul>
<p>
Для начала создадим новую базу данных, назвав ее url (для этого можете воспользоваться phpmyadmin). Теперь приступим к созданию таблицы. Назовем ее short_urls.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">CREATE TABLE</span> `short_urls` <span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">`id` <span class="kw2">INT</span><span class="br0">&#40;</span> <span class="nu0">11</span> <span class="br0">&#41;</span> <span class="kw3">NOT NULL</span> <span class="kw3">AUTO_INCREMENT</span> <span class="kw1">PRIMARY KEY</span> ,</div>
</li>
<li class="li1">
<div class="de1">`short` <span class="kw2">VARCHAR</span><span class="br0">&#40;</span> <span class="nu0">6</span> <span class="br0">&#41;</span> <span class="kw3">NOT NULL</span> ,</div>
</li>
<li class="li1">
<div class="de1">`url` <span class="kw2">VARCHAR</span><span class="br0">&#40;</span> <span class="nu0">1000</span> <span class="br0">&#41;</span> <span class="kw3">NOT NULL</span> ,</div>
</li>
<li class="li2">
<div class="de2">`stamped` <span class="kw2">DATETIME</span> <span class="kw3">NOT NULL</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#41;</span> ENGINE = MYISAM ;</div>
</li>
</ol>
</div>
<p>Первый столбец будет идентификатором. В столбце short будет храниться короткая часть ссылки (будет генерироваться ссылка вида http://yoursite.ru/xxxxxx, где xxxxxx короткая часть ссылки, xxxxxx будет состоять из цифр и букв это даст нам 2176782336 комбинаций). В столбце url будет храниться «укорачиваемая» ссылка. Последний столбец будет содержать в себе даты добавления ссылок.</p>
<p>Теперь создадим html шаблон сервиса. Создайте файл index.php и скопируйте в него следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;form id=&quot;shorten_form&quot; name=&quot;shorten_form&quot; method=&quot;post&quot; action=&quot;shorten.php&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;div align=&quot;center&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;input type=&quot;text&quot; name=&quot;url&quot; id=&quot;url&quot; /&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;/label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;div align=&quot;center&quot;&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;input type=&quot;submit&quot; name=&quot;submit&quot; id=&quot;submit&quot; value=&quot;укоротить&quot; /&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;/label&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/form&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>Пришло время для php. Создайе файл shuffle.php и вставте в него следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//функция для установки соединения с базой данных</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//HOST &#8211; адрес сервера баз данных (обычно localhost)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//USERNAME &#8211; имя пользователя</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="co1">//PASSWORD &#8211; пароль</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$link</span> = <a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">&#40;</span><span class="st0">&#8216;HOST&#8217;</span>, <span class="st0">&#8216;USERNAME&#8217;</span>, <span class="st0">&#8216;PASSWORD&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//DB &#8211; имя базы данных (у меня url)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$db_selected</span> = <a href="http://www.php.net/mysql_select_db"><span class="kw3">mysql_select_db</span></a><span class="br0">&#40;</span><span class="st0">&#8216;DB&#8217;</span>, <span class="re0">$link</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//Функция для генерирования уникальной ссылки длинны $numAlpha</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> generateurl<span class="br0">&#40;</span><span class="re0">$numAlpha</span>=<span class="nu0">6</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//соединяемся с базой данных</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="re0">$listAlpha</span> = <span class="st0">&#8216;abcdefghijklmnopqrstuvwxyz0123456789&#8242;</span>; <span class="co1">//символы из которых генерируется индентификатор</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <a href="http://www.php.net/str_shuffle"><span class="kw3">str_shuffle</span></a><span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><a href="http://www.php.net/str_shuffle"><span class="kw3">str_shuffle</span></a><span class="br0">&#40;</span><span class="re0">$listAlpha</span><span class="br0">&#41;</span>,<span class="nu0">0</span>,<span class="re0">$numAlpha</span><span class="br0">&#41;</span><span class="br0">&#41;</span>; <span class="co1">//генерируем индентификатор и возвращаем</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//функция для «укорачивания» ссылок</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">function</span> geturl<span class="br0">&#40;</span><span class="re0">$in</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//соединяемся с базой</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="co1">//генерируем индентификатор и проверяем его уникальность</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">do</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re0">$out</span> = generateurl<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="re0">$query</span> = <span class="st0">&quot;SELECT short &nbsp;FROM `short_urls` WHERE `short` = &#8216;$out&#8217;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">$result</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$query</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">while</span> <span class="br0">&#40;</span><a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a> &gt; <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//добавляем данные в базу данных</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$insert_query</span> = <span class="st0">&quot;INSERT INTO `short_urls` (`id`, `short`, `url`, `stamped`) VALUES (NULL, &#8216;$out&#8217;, &#8216;$in&#8217;, NOW());&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re0">$result</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$insert_query</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp;<span class="kw1">return</span> <span class="st0">&quot;http://yoursite.ru/&quot;</span>.<span class="re0">$out</span>; <span class="co1">//генерируем и возвращаем короткую ссылку</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Последняя функция проверяет присутствует ли сгенерированый индентификатор в таблице, если присутствует, то генерируется новый, пока не сгенерируется уникальный индентификатор, затем генерируется ссылка.</p>
<p>Теперь соберем все вместе. Создайте файл forward.php и вставте в него следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">include</span> <span class="st0">&#8217;shuffle.php&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$i</span> = <span class="re0">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#8216;QUERY_STRING&#8217;</span><span class="br0">&#93;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//проверяем формат индентификатора</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st0">&quot;/^[0-9a-z]{6}$/&quot;</span>, <span class="re0">$i</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; dbconnect<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//соединяемся с базой</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$result</span> = <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="st0">&quot;SELECT short, url FROM `short_urls` WHERE `short` = &#8216;$i&#8217;&quot;</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><a href="http://www.php.net/mysql_error"><span class="kw3">mysql_error</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//проверка на наличие индентификатора в базе данных</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/mysql_num_rows"><span class="kw3">mysql_num_rows</span></a><span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span> &lt; <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Location: http://yoursite.ru&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/exit"><span class="kw3">exit</span></a>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$row</span> = <a href="http://www.php.net/mysql_fetch_row"><span class="kw3">mysql_fetch_row</span></a><span class="br0">&#40;</span><span class="re0">$result</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Location: &quot;</span>.<span class="re0">$row</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="co1">//переадресация по хранимому адресу</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Location: http://yoursite.ru&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>В файл .htaccess вставте</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">XBitHack &nbsp; &nbsp; &nbsp;Off</div>
</li>
<li class="li1">
<div class="de1">RewriteEngine On</div>
</li>
<li class="li1">
<div class="de1">RewriteCond &nbsp; %{REQUEST_URI} \/([0-9a-z]{4})$ [NC]</div>
</li>
<li class="li1">
<div class="de1">RewriteRule &nbsp; ^(.*) http://www.yoursite.ru/forward.php?%1 [L]</div>
</li>
</ol>
</div>
<p>Теперь создайте файл shorten.php и вставте в него следующий код.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span> <span class="kw1">include</span> `<a href="http://www.php.net/shuffle"><span class="kw3">shuffle</span></a>.php`; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;Ваша ссылка:</div>
</li>
<li class="li1">
<div class="de1">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;&lt;?php <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;url&#8217;</span><span class="br0">&#93;</span>; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;Была уменьшена до:</div>
</li>
<li class="li2">
<div class="de2">&lt;p align=<span class="st0">&quot;center&quot;</span>&gt;&lt;?php <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> geturl<span class="br0">&#40;</span><span class="re0">$_POST</span><span class="br0">&#91;</span><span class="st0">&#8216;url&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>; <span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>shorten.php будет отображать короткую ссылку</p>
<p>Сервис коротких ссылок готов. Как Вы уже заметили в этом нет ничего сложного. Если возникли трудности, задавайте свои вопросы в комментариях</p>
<p><br class="spacer_" /></p>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=269" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/web/php/sozdaem-servis-korotkix-ssylok/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Установка PHP-GTK 2 в MacOS X</title>
		<link>http://anton.bukarev.org/mac-os/ustanovka-php-gtk-2-v-macos-x/</link>
		<comments>http://anton.bukarev.org/mac-os/ustanovka-php-gtk-2-v-macos-x/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 21:27:15 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Mac OS X]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=208</guid>
		<description><![CDATA[Установка PHP-GTK 2 в MacOS X теперь тривиальная задача, благодаря установщику PHP-GTK, который работает как любой другой установщик. Теперь не надо возиться с командами, достаточно запустить программу установки.
Установка
Сперва скачайте образ с http://www.kix.in/php-gtk2/PHP-GTK-2.0.0.dmg и откройте. Затем запустите программу установки 2.0.0 Installer.mpkg. Далее следуйте инструкциям программы установки. Для Вашего удобства ниже скриншоты программы установки.





Первый скрипт
Теперь пришло время [...]]]></description>
			<content:encoded><![CDATA[<p>Установка PHP-GTK 2 в MacOS X теперь тривиальная задача, благодаря установщику PHP-GTK, который работает как любой другой установщик. Теперь не надо возиться с командами, достаточно запустить программу установки.<span id="more-208"></span></p>
<h2>Установка</h2>
<p>Сперва скачайте образ с <a href="http://www.kix.in/php-gtk2/PHP-GTK-2.0.0.dmg" target="_blank">http://www.kix.in/php-gtk2/PHP-GTK-2.0.0.dmg</a> и откройте. Затем запустите программу установки 2.0.0 Installer.mpkg. Далее следуйте инструкциям программы установки. Для Вашего удобства ниже скриншоты программы установки.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk_dmg.png"><img class="alignnone size-full wp-image-209" title="php-gtk_dmg" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk_dmg.png" alt="" width="500" height="381" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-1.png"><img class="alignnone size-full wp-image-210" title="php-gtk-1" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-1.png" alt="" width="500" height="351" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-2.png"><img class="alignnone size-full wp-image-211" title="php-gtk-2" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-2.png" alt="" width="500" height="351" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-3.png"><img class="alignnone size-full wp-image-212" title="php-gtk-3" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-3.png" alt="" width="500" height="351" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-4.png"><img class="alignnone size-full wp-image-213" title="php-gtk-4" src="http://anton.bukarev.org/wp-content/uploads/2009/02/php-gtk-4.png" alt="" width="500" height="351" /></a></div>
<h2>Первый скрипт</h2>
<p>Теперь пришло время первого скрипта. Запустите Вашу любимую среду разработки и вствьте туда следующий код</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Code snippet from the PHP-GTK manual.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span>!<a href="http://www.php.net/class_exists"><span class="kw3">class_exists</span></a><span class="br0">&#40;</span><span class="st0">&#8216;gtk&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;Please load the php-gtk2 module in your php.ini&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$window</span> = <span class="kw2">new</span> GtkWindow<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$window</span>-&gt;<span class="me1">set_title</span><span class="br0">&#40;</span><span class="st0">&#8216;Our PHP-GTK window&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$window</span>-&gt;<span class="me1">connect_simple</span><span class="br0">&#40;</span><span class="st0">&#8216;destroy&#8217;</span>, <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st0">&#8216;gtk&#8217;</span>, <span class="st0">&#8216;main_quit&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$label1</span> = <span class="kw2">new</span> GtkLabel<span class="br0">&#40;</span><span class="st0">&quot;Hello world!&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$window</span>-&gt;<span class="me1">add</span><span class="br0">&#40;</span><span class="re0">$label1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$window</span>-&gt;<span class="me1">show_all</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">Gtk::<span class="me2">main</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Сохраните в любое, удобное для Вас место (я сохранил в /users/r00t/test.php). Теперь запустите Терминал и выполните команду usr/local/php-gtk/bin/php &#8220;адрес скрипта&#8221; (у меня эта команда выглядит так usr/local/php-gtk/bin/php /users/r00t/test.php). Если Вы увидели окно, как на скриншоте, то Вы сделали все верно <img src='http://anton.bukarev.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/hello_world.png"><img class="alignnone size-medium wp-image-214" title="hello_world" src="http://anton.bukarev.org/wp-content/uploads/2009/02/hello_world.png" alt="" width="76" height="37" /></a></div>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/hello-world-1.png"><img class="alignnone size-full wp-image-215" title="hello-world-1" src="http://anton.bukarev.org/wp-content/uploads/2009/02/hello-world-1.png" alt="" width="247" height="137" /></a></div>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=208" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/mac-os/ustanovka-php-gtk-2-v-macos-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка MAMP (Apache, PHP и MySQL для Mac OS)</title>
		<link>http://anton.bukarev.org/mac-os/ustanovka-mamp-apache-php-i-mysql-dlya-mac-os/</link>
		<comments>http://anton.bukarev.org/mac-os/ustanovka-mamp-apache-php-i-mysql-dlya-mac-os/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 18:34:29 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=185</guid>
		<description><![CDATA[В статье Настройка Apache, PHP, MySQL в Mac OS 10.5 я рассказал как настроить установленные по умолчанию Apache и PHP. В этой статье расскажу об альтернативном варианте.

В этом случае все еще проще. Итак, приступим.
Установка MAMP
Скачайте дистрибутив MAMP (140 Мб), откройте образ и скопируйте каталог MAMP в папку Applications.

Запуск
Откройте каталог с приложениями, выберете папку MAMP и запустите [...]]]></description>
			<content:encoded><![CDATA[<p>В статье <a href="http://anton.bukarev.org/mac-os/config_apache_php_mysql/" target="_blank">Настройка Apache, PHP, MySQL в Mac OS 10.5</a> я рассказал как настроить установленные по умолчанию Apache и PHP. В этой статье расскажу об альтернативном варианте.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamplogo.png"><img class="alignnone size-full wp-image-190" title="mamplogo" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamplogo.png" alt="" width="374" height="103" /></a></div>
<p>В этом случае все еще проще. Итак, приступим.<span id="more-185"></span></p>
<h2>Установка MAMP</h2>
<p>Скачайте дистрибутив <a title="скачать MAMP" href="http://kent.dl.sourceforge.net/sourceforge/mamp/MAMP_1.7.2.dmg.zip" target="_blank">MAMP</a> (140 Мб), откройте образ и скопируйте каталог MAMP в папку Applications.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_dmg.png"><img class="alignnone size-full wp-image-191" title="mamp_dmg" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_dmg.png" alt="" width="500" height="419" /></a></div>
<h2>Запуск</h2>
<p>Откройте каталог с приложениями, выберете папку MAMP и запустите MAMP.app</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_folder.png"><img class="alignnone size-full wp-image-193" title="mamp_folder" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_folder.png" alt="" width="500" height="270" /></a></div>
<p>Откроется окно управления MAMP, запустятся Apache и MySQL. Если Вы увидите две зеленых иконки (как на скриншоте), то запуск прошел успешно.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_control.png"><img class="alignnone size-full wp-image-194" title="mamp_control" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_control.png" alt="" width="423" height="344" /></a></div>
<p>Также откроется браузер по умолчанию с адресом http://localhost:8888/MAMP/?language=ru.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_safari.png"><img class="alignnone size-full wp-image-195" title="mamp_safari" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_safari.png" alt="" width="500" height="389" /></a></div>
<p>На этой же странице можно посмотреть настройки MySQL и PHP, тут же есть доступ к встроенным утилитам: phpinfo, phpMyAdmin и SQLiteManager.</p>
<h2>Настройки</h2>
<p>В панели управления MAMP и нажмите там кнопку Настройки. В закладке Start/Stop можно задавать будут ли сервера запускаться при запуске MAMP и останавливаться при выходе из него, а также будет ли загружаться страница приветствия и ее место нахождение.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_ss.png"><img class="alignnone size-full wp-image-202" title="mamp_ss" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_ss.png" alt="" width="394" height="236" /></a></div>
<p>В закладка Порты можно поменять порты серверов Apache и MySQL.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_ports.png"><img class="alignnone size-full wp-image-198" title="mamp_ports" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_ports.png" alt="" width="394" height="236" /></a></div>
<p>В закладке PHP можно задать версию интерпретатора PHP, настройки кэша и использовать ли оптимизатор Zend.</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_php.png"><img class="alignnone size-full wp-image-199" title="mamp_php" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_php.png" alt="" width="394" height="236" /></a></div>
<p>Ну и наконец в закладке Apache остался последний параметр &#8211; Document Root (путь к корневому каталогу веб-сервера). По-умолчанию, это /Applications/MAMP/htdocs</p>
<div style="text-align: center;"><a href="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_dr2.png"><img class="alignnone size-full wp-image-201" title="mamp_dr2" src="http://anton.bukarev.org/wp-content/uploads/2009/02/mamp_dr2.png" alt="" width="394" height="236" /></a></div>
<p>Как и обещал, тут все проще, чем в ручной настройке. Ваши вопросы Вы всегда можете задать в комментариях <img src='http://anton.bukarev.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=185" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/mac-os/ustanovka-mamp-apache-php-i-mysql-dlya-mac-os/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Генерация пароля</title>
		<link>http://anton.bukarev.org/web/php/password_generation/</link>
		<comments>http://anton.bukarev.org/web/php/password_generation/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 08:34:21 +0000</pubDate>
		<dc:creator>Антон</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://anton.bukarev.org/?p=38</guid>
		<description><![CDATA[На некотоых сайтах при регистрации сайт сам генерирует пароль. Давайте разберемся как это реализовать.Для этого напишем функцию, которая будет генерировать пароль:



function randomPassword&#40;$length, $allow = &#34;abcdefghijklmnopqrstuvwxyz0123456789&#34;&#41; &#123;



Эта функция имеет два параметра &#8211; длину и допустимые символы. Параметру $length будет передаваться длина пароля, а параметр $allow не обязательный, он содержит набор допустимых символов.



$i = 1;


while &#40;$i &#60;= [...]]]></description>
			<content:encoded><![CDATA[<p>На некотоых сайтах при регистрации сайт сам генерирует пароль. Давайте разберемся как это реализовать.<span id="more-38"></span>Для этого напишем функцию, которая будет генерировать пароль:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> randomPassword<span class="br0">&#40;</span><span class="re0">$length</span>, <span class="re0">$allow</span> = <span class="st0">&quot;abcdefghijklmnopqrstuvwxyz0123456789&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
</ol>
</div>
<p>Эта функция имеет два параметра &#8211; длину и допустимые символы. Параметру $length будет передаваться длина пароля, а параметр $allow не обязательный, он содержит набор допустимых символов.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$i</span> = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">$i</span> &lt;= <span class="re0">$length</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
</ol>
</div>
<p>Теперь создадим цикл, в котором будет генерироваться пароль.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$max</span> = <a href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$allow</span><span class="br0">&#41;</span><span class="nu0">-1</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$num</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">0</span>, <span class="re0">$max</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Код выше генерирует случайное число между 0 и количеством символов в переменной $allow. Случайный символ будет выбираться из переменной $allow функцией substr(). Этот символ будет добавляться в переменную $ret, которая будет содержать пароль.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$temp</span> = <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$allow</span>, <span class="re0">$num</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ret</span> = <span class="re0">$ret</span> . <span class="re0">$temp</span>;</div>
</li>
</ol>
</div>
<p>Теперь осталось написать код завершения цикла и функция готова.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$i</span>++;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">return</span> <span class="re0">$ret</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Рассмотрим как же эту функцию использовать</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$password</span> = randomPassword<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Приведенный выше код сгенерирует случайный пароль длины 10 символов. Вот еще один пример:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$password</span> = randomPassword<span class="br0">&#40;</span><span class="nu0">10</span>, <span class="st0">&#8216;0123456789&#8242;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Этот код сгенерирует пароль из 10 цифр.<br />
Полный код функции randomPassword:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> randomPassword<span class="br0">&#40;</span><span class="re0">$length</span>, <span class="re0">$allow</span> = <span class="st0">&quot;abcdefghijklmnopqrstuvwxyz0123456789&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$i</span> = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">$i</span> &lt;= <span class="re0">$length</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$max</span> = <a href="http://www.php.net/strlen"><span class="kw3">strlen</span></a><span class="br0">&#40;</span><span class="re0">$allow</span><span class="br0">&#41;</span><span class="nu0">-1</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$num</span> = <a href="http://www.php.net/rand"><span class="kw3">rand</span></a><span class="br0">&#40;</span><span class="nu0">0</span>, <span class="re0">$max</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$temp</span> = <a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$allow</span>, <span class="re0">$num</span>, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ret</span> = <span class="re0">$ret</span> . <span class="re0">$temp</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$i</span>++;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">return</span> <span class="re0">$ret</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
 <img src="http://anton.bukarev.org/wp-content/plugins/feed-statistics.php?view=1&post_id=38" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://anton.bukarev.org/web/php/password_generation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
