<?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>Сервер онлайн-тестирования. Образовательный портал WebTeach.ru &#187; PHP</title>
	<atom:link href="http://webteach.ru/category/web-programmirovanie/php/feed" rel="self" type="application/rss+xml" />
	<link>http://webteach.ru</link>
	<description>Уроки и статьи по информатике, биологии, литературе, астрономии, химии... Сервис онлайн-тестирования.</description>
	<lastBuildDate>Mon, 07 May 2012 18:43:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Генерируем человеко-читабельные случайные строки.</title>
		<link>http://webteach.ru/web-programmirovanie/php/generiruem-sluchajnye-stroki</link>
		<comments>http://webteach.ru/web-programmirovanie/php/generiruem-sluchajnye-stroki#comments</comments>
		<pubDate>Mon, 10 Aug 2009 03:43:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/?p=430</guid>
		<description><![CDATA[Всем привет! Недавно столкнулся с необходимостью генерить юзернеймы (ники) для одного PHP скрипта. Смысл заключается в том, чтоб сгенерировать случайную последовательность из N англ. алфавитных символов (например от пяти до десяти) таким образом, чтоб полученное &#34;слово&#34; было читабельным и похожим на реально возможный ник. Такое же решение хорошо подойдет для генерации каптчи (CAPTCHA). Наверняка вы [...]]]></description>
			<content:encoded><![CDATA[<p>Всем привет! Недавно столкнулся с необходимостью генерить юзернеймы (ники) для одного PHP скрипта.<br />
  Смысл заключается в том, чтоб сгенерировать случайную последовательность из N англ. алфавитных символов (например от пяти до десяти) таким образом, чтоб полученное &quot;слово&quot; было читабельным и похожим на реально возможный ник.<br />
  Такое же решение хорошо подойдет для генерации каптчи (CAPTCHA). Наверняка вы сталкивались с ситуацией, когда набор символов на рисунке CAPTCHA весьма похож на &quot;человеческое&quot; слово, &#8211; для реального юзера приятней и легче ввести код&#8230;</p>
<p>Итак, функция для генерации чего-то человекочитабельного:</p>
<blockquote>
<p>function make_username($from, $to)<br />
    {<br />
    $arr = array();<br />
    for ($i = 97; $i &lt; 123; $i++) {<br />
    $arr[] = chr($i);<br />
    }</p>
<p>$glasnye=array(”a”, “e”, “i”, “o”, “u”, “y”);<br />
    $soglasnye=array_diff($arr, $glasnye);</p>
<p>// Length<br />
    $cout=mt_rand ($from, $to);<br />
    $login=”&quot;;</p>
<p>$first=mt_rand(0, 1);<br />
    if ($first==1)<br />
    {<br />
    $array1=$glasnye;<br />
    $array2=$soglasnye;<br />
    }<br />
    else<br />
    {<br />
    $array1=$soglasnye;<br />
    $array2=$glasnye;<br />
    }</p>
<p>for ($j=0; $j&lt;=$cout; $j++)<br />
    {<br />
    if ($j%2) $usedarray=$array1;<br />
    else $usedarray=$array2;<br />
    $login.=$usedarray[mt_rand(0, count($usedarray)-1)];<br />
    }<br />
    return ($login);<br />
    }</p>
</blockquote>
<p>Подробнее, что это было:</p>
<p>Создаем массив из англ. алфавитных символов (тобишь буков). Затем создаем два отдельных массива с гласными и согласными. Выбираем случайную длину строки (между двумя заданными значениями), выбираем, какой символ будет первым &#8211; гласный или согласный, и генерим слово.</p>
<p>Спасибо за внимание. Надеюсь, пригодится <img src='http://webteach.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/generiruem-sluchajnye-stroki/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP5 против PHP4 или Как использовать абстрактные классы и методы</title>
		<link>http://webteach.ru/web-programmirovanie/php/php5-protiv-php4</link>
		<comments>http://webteach.ru/web-programmirovanie/php/php5-protiv-php4#comments</comments>
		<pubDate>Sun, 09 Aug 2009 15:30:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/?p=426</guid>
		<description><![CDATA[Как известно в PHP5 произошли некоторые нововведения в объектной модели. Одно из этих нововведений является появление абстрактных (abstract class) классов. Создаются они так же как и обычные классы (class) за исключением одного модификатора abstract. abstract class AbstractClassName { } И по своей сути отличаются только тем, что от обычного класса (class) можно создать объект, а [...]]]></description>
			<content:encoded><![CDATA[<p>Как известно в PHP5 произошли некоторые нововведения в объектной модели. Одно из этих нововведений является появление абстрактных (abstract class) классов. <br />
  Создаются они так же как и обычные классы (class) за исключением одного модификатора <strong>abstract</strong>.</p>
<blockquote>
<p>abstract class AbstractClassName<br />
    {<br />
    }</p>
</blockquote>
<p>И по своей сути отличаются только тем, что от обычного <strong>класса</strong> (class) можно создать <strong>объект</strong>, а от абстрактного(abstract class) нет. Например, следующий пример вызовет ошибку:</p>
<blockquote>
<p>abstract class AbstractClassName<br />
    {<br />
    }<br />
    $Object_name = new AbstractClassName;</p>
</blockquote>
<p>Ошибка происходит из-за того, что абстрактный класс (abstract class) может использоваться только как базовый. То есть он нужен для описания или реализации как бы скелета, для класса потомка. Правильный подход будет таковым:</p>
<blockquote>
<p>abstract class AbstractClassName<br />
    {<br />
    function Helo()<br />
    {<br />
    echo &quot;Helo AbstractClassName&quot;;<br />
    }<br />
    }<br />
    class ClassName extends AbstractClassName<br />
    {<br />
    }<br />
    $Object_name = new ClassName;<br />
    $Object_name -&gt; Helo();</p>
</blockquote>
<p>Так же абстрактный класс (abstract class) может содержать абстрактные методы:</p>
<blockquote>
<p>abstract class AbstractClassName<br />
    {<br />
    abstract function Helo();<br />
    }</p>
</blockquote>
<p><strong>Абстрактный метод</strong> не несет какой то функциональной задачи, а просто описывает метод для класса потомка. Потомок в свою очередь должен использовать или хотя бы описывать этот метод. В противном случаи произойдёт ошибка. Пример ниже, показывает как правильно это делать.</p>
<blockquote>
<p>abstract class AbstractClassName<br />
    {<br />
    abstract function Helo($text);<br />
    }<br />
    class ClassName extends AbstractClassName<br />
    {<br />
    function Helo($text)<br />
    {<br />
    echo $text;<br />
    }<br />
    }<br />
    $Object_name = new ClassName;<br />
    $Object_name -&gt; Helo(&quot;Helo AbstractClassName&quot;);</p>
</blockquote>
<p>Надеюсь, вам всё стало понятно, и вы сами теперь можете применять эту новую возможность объектной модели PHP5. </p>
<p>Желаю вам успехов, и абстрактного мышления!</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/php5-protiv-php4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Объектно-ориентированное программирование в PHP</title>
		<link>http://webteach.ru/web-programmirovanie/php/obektno-orientirovannoe-programmirovanie-v-php</link>
		<comments>http://webteach.ru/web-programmirovanie/php/obektno-orientirovannoe-programmirovanie-v-php#comments</comments>
		<pubDate>Mon, 02 Feb 2009 08:31:09 +0000</pubDate>
		<dc:creator>IFO</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/?p=289</guid>
		<description><![CDATA[Любой перспективный и развивающийся язык программирования, в ходе своей эволюции обрастает все новыми и новыми подходами к программированию. В какой-то момент, таким подходом стал ООП (объектно-ориентированный подход). Изначально, его разработали в лабораториях Xerox, но потом он перекочевал практически все более-менее мощные языки программирования. Php не стал исключением. Суть этого самого «объектно-ориентированного подхода» заключается в первую [...]]]></description>
			<content:encoded><![CDATA[<p>Любой перспективный и развивающийся язык программирования, в ходе своей эволюции обрастает все новыми и новыми подходами к программированию. В какой-то момент, таким подходом стал <strong>ООП (объектно-ориентированный подход)</strong>. Изначально, его разработали в лабораториях Xerox, но потом он перекочевал практически все более-менее мощные языки программирования. Php не стал исключением. <br />
Суть этого самого «объектно-ориентированного подхода» заключается в первую очередь в том, что сам процесс программирования  заключается в создании и описании классов. Эти самые классы похожи на обычные  переменные языка. Правда при работе с ними есть свои характерные особенности, но об этом чуть ниже…</p>
<p>Перед тем как лезть в дебри ООП, будет логично рассмотреть основные технические определения, используемые в этом подходе:<br />
Инкапсуляция – возможность использования класса программистом (не являющимся автором), не вникая в техническую составляющую скрипта (т.е. – это сторонние модули, которые легко подключаются к скрипту (примером могут служить те же шаблонизаторы, модули статистики и так далее)).</p>
<p><strong>Конструкторы</strong>, <strong>деструкторы</strong> – специальные методы, предназначенные для получения и изменения объектов класса (имеют значительное сходство  с обычными переменными).<br />
<strong>Наследование</strong> – возможность создание классов на основе других объектов.</p>
<p>Итак, с теорией разобрались немножко, пора переходить непосредственно к практике! Будем рассматривать на основе каталога товаров…</p>
<p><strong>Этап 1. Создание класса и объекта.</strong></p>
<p>Первое, что предстоит сделать при начале работы с ООП – создать класс. Этим сейчас и займемся. Для создания класса в PHP используется специальная синтаксическая структура – class. Итак, вот пример нашего класса:</p>
<blockquote>
<p>&lt;?php<br />
    class Shop {<br />
    public $name;          //наименование товара<br />
    public $cat;               //категория<br />
    public $coast;           //цена товара<br />
    public $availability; //наличие<br />
    }<br />
    ?&gt;</p>
</blockquote>
<p>Этим кодом мы создали класс Shop и 4 объекта <em>$name, $cat, $coast, $availability</em> соответственно. Думаю на данном этапе трудностей не возникнет, едем дальше… Для удобства использования классы принято сохранять в отдельный файл. Что и мы сделаем, сохраните этот код в файле Shop.php. Все, на этом первый этап закончен…</p>
<p><strong>Этап 2. Вызов класса.</strong></p>
<p>Ну вот, мы создали класс, записали его в файл. Вполне логично, что возникнет необходимость его дальнейшего использования.<br />
  Сначала необходимо подключить файл, содержащий класс. Это делается стандартной функцией require. После того, как подключили файл с классом, необходимо «загнать» его в переменную. В нашем случае это будет иметь вид: $obj = new Shop();<br />
В конечном итоге наш скрипт будет иметь следующий вид:</p>
<blockquote>
<p>&lt;?php<br />
    Require ‘Shop.php’; <br />
    $obj = new Shop();</p>
<p>$obj-&gt;$name = “Товар_1”;<br />
    $obj-&gt;$ cat = “Категория_1”;<br />
    $obj-&gt;$ coast = “12”;<br />
    $obj-&gt;$ availability = “true”;<br />
    ?&gt;</p>
</blockquote>
<p>В принципе, для вызова класса было достаточно 2-х первых строчек кода, последними четырьмя мы задали значения всем объектам класса. Удаление объекта класса производится при помощи стандартной функции php – unset().<br />
  Сохраним все это счастье в файле main.php<br />
Вот и все поданному разделу…</p>
<p><strong>Этап 3.1 Методы класса(создание)</strong></p>
<p>Пришло время создать несколько методов в нашем классе Shop. Для этого запустим и отредактируем до следующего вида файл <em>Shop.php</em>: </p>
<blockquote>
<p>&lt;?php<br />
    class Shop {<br />
    public $name;          //наименование товара<br />
    public $cat;               //категория<br />
    public $coast;           //цена товара<br />
    public $availability; //наличие<br />
    //Конструктор<br />
    function __construct($name, $cat, $coast, $availability)<br />
    {<br />
    Echo ‘Конструктор…’;<br />
    $this-&gt;$name = $name;<br />
    $this -&gt;$ cat = $cat;<br />
    $this -&gt;$ coast = $coast;<br />
    $this -&gt;$ availability = $availability;<br />
    }<br />
    //Деструктор<br />
    function __destruct()<br />
    {<br />
    Echo ‘Деструктор…’;<br />
    }<br />
    function setCoast($new_c)<br />
    {<br />
    $this -&gt;$coast = $new_c;<br />
    }<br />
    }<br />
    ?&gt;</p>
</blockquote>
<p>Ну теперь попробуем разобраться, что мы тут понаписывали…</p>
<p>Итак, мы создали 3 класса:</p>
<blockquote>
<p>__construct();<br />
    __destruct();<br />
    setCoast();</p>
</blockquote>
<p>Первые 2 являются служебными, <strong>метод</strong> __construct() создает <strong>экземпляр класса</strong>. Конструктору могут передаваться определенные <strong>параметры</strong>… Осуществляется это так-же как и в обычной <strong>функции</strong>.<br />
Деструктор уничтожает экземпляр класса.</p>
<p>Функция setCoast() меняет значение объекта Coast класса. Думаю сам код не вызовет никаких осложнений, можно двигаться дальше…</p>
<p><strong>Этап 3.2 Методы класса(использование)</strong></p>
<p>Итак, класс с объектами и методами мы создали, теперь остается научится его использовать… Чем собственно сейчас и займемся. Приведем наш файл main.php к следующему виду…</p>
<blockquote>
<p>&lt;?php<br />
    Require ‘Shop.php’; <br />
    $obj = new Shop(‘Товар_1’, ‘Категория_1’,’12.5’,’true’);<br />
    echo $obj-&gt;name . ‘ &#8211; ’ . obj-&gt;coast . ‘&lt;br&gt;’;<br />
    setCoast(14.2);<br />
    echo $obj-&gt;name . ‘ &#8211; ’ . obj-&gt;coast . ‘&lt;br&gt;’;<br />
    ?&gt;</p>
</blockquote>
<p>После выполнения скрипт будет иметь следующий вид:<br />
  <strong>Конструктор…<br />
  Товар_1 – 12.5<br />
  Товар_1 – 14.2<br />
Деструктор…</strong></p>
<p>Ну вот, на примере рассмотрели принцип работы конструктора и деструктора. Также изучили возможность изменения показателя объекта класса на примере функции setCoast();. На этом статью заканчиваю, естественно, в нее влезла лишь мизерная часть возможностей PHP и ве крайне поверхностно. Возможно, будут и другие статьи на эту тему, но это уже зависит от администратора ресурса…</p>
<p>Вот пока и все, что я хотел описать в рамках данной статьи…<br />
  До свиданья! </p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/obektno-orientirovannoe-programmirovanie-v-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пару слов о библиотеке GD</title>
		<link>http://webteach.ru/web-programmirovanie/php/paru-slov-o-biblioteke-gd</link>
		<comments>http://webteach.ru/web-programmirovanie/php/paru-slov-o-biblioteke-gd#comments</comments>
		<pubDate>Mon, 29 Dec 2008 11:34:56 +0000</pubDate>
		<dc:creator>IFO</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/2008/12/29/paru-slov-o-biblioteke-gd/</guid>
		<description><![CDATA[В рамках данной статьи я планирую рассмотреть основные и наиболее используемые функции для работы с модулем GD в PHP. Для неосведомленных, GD – это внешняя библиотека, предназначенная для работы растровой графикой в PHP. Инструкцию по настройке и установке данного модуля, в данной статье я затрагивать не стану. При необходимости, можно обратиться к официальной документации модуля, [...]]]></description>
			<content:encoded><![CDATA[<p>В рамках данной статьи я планирую рассмотреть основные и наиболее используемые функции для работы с модулем GD в PHP. Для неосведомленных, GD – это внешняя библиотека, предназначенная для работы растровой графикой в PHP.<br />
Инструкцию по настройке и установке данного модуля, в данной статье я затрагивать не стану. При необходимости, можно обратиться к официальной документации модуля, там все будет довольно подробно изложено. Поведаю лишь о том, как проверить работоспособность модуля. Для этого необходимо создать .php – файл следующего содержания:</p>
<blockquote><p>&lt;?php<br />
If(function_exists(imagetypes))<br />
echo “GD установлен и нормально работает”;<br />
else<br />
echo ”ошибка инициализации GD”;<br />
?&gt;</p></blockquote>
<p>После его запуска все станет ясно.<br />
Теперь, пожалуй, пора переходить к описанию основных функций GD.</p>
<p><strong>ImageGreate(x,y)</strong> – создается новое изображение х на у, при этом, функция возвращает идентификационный номер картинки, через который будет происходить дальнейшее обращение к ней&#8230;</p>
<p><strong>ImageDestroy(int image)</strong> – функция противоположенная предыдущей. Используется, как правило, для высвобождения ресурсов после завершения обработки.</p>
<p><strong>ImageCreateFromGif(filename)</strong> – по средствам функции осуществляется загрузка изображения из .gif файла. В виде параметра указывается ссылка на файл.</p>
<p><strong>ImageGif(image, file name)</strong> – сохраняет изображение в файл с расширением .gif. Где image – переменная с рисунком, а file name – ссылка на файл, в который будет произведена запись.</p>
<p>Теперь, дабы немного закрепить полученные знания, рассмотрим небольшой пример:</p>
<blockquote>
<blockquote><p>&lt;?php<br />
$image = @imageCreateFromGIF(“img/1.gif”); // Загружаем изображение<br />
//Тут, по идее, должен находится код, обрабатывающий изображение<br />
imageGif($image,”img/1_copy.gif”); // Сохраняем измененное изображение в отдельный файл<br />
imageDestroy($image); // уничтожаем переменную<br />
?&gt;</p></blockquote>
</blockquote>
<p>Тут, я думаю, все понятно. Далее по списку, у меня идет ряд функций, предназначенный для вычерчивания разной ерунды на картинке (там прямые, квадратики, прямоугольники и т.д.). Так как лично я не вижу рационального применения данному ряду функций в повседневном программировании, то, пожалуй, не стану Вас ими грузить. Пропускаем!</p>
<p><strong>ImageCopyResized() </strong>– а вот эта функция, является крайне важной и частоиспользуемой. Она позволяет делать уменьшенную или увеличенную копию изображения либо ее части.  Функция имеет большое количество параметров. Формат ее записи следующий:</p>
<p><strong>Int ImageCopyResized(new_image, old_image, newX, newY, oldX, oldY, newW, newH, oldW, oldH). </strong></p>
<p>Думаю сам синтаксис затруднений не вызовет, все интуитивно понятно.</p>
<p>GD имеет набор инструментов для работы с цветом изображения. На одном из них есть смысл остановиться.<br />
<strong>ImageColorTransparent()</strong> – Функция заменяет какой-либо цвет изображения прозрачностью. Формат записи следующий:<br />
ImageColorTransparent([картинка], [цвет])</p>
<p>Ну вот и все что хотелось бы отметить в рамках данной темы. Естественно, статья затронула лишь мизерную часть возможностей, предоставляемых модулем GD. Для дальнейшего изучения в рунете, в принципе, хватает материала.</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/paru-slov-o-biblioteke-gd/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Регулярные выражения в PHP</title>
		<link>http://webteach.ru/web-programmirovanie/php/regulyarnye-vyrazheniya-v-php</link>
		<comments>http://webteach.ru/web-programmirovanie/php/regulyarnye-vyrazheniya-v-php#comments</comments>
		<pubDate>Fri, 12 Dec 2008 17:26:41 +0000</pubDate>
		<dc:creator>IFO</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/2008/12/12/regulyarnye-vyrazheniya-v-php/</guid>
		<description><![CDATA[Регулярные выражения относятся к числу инструментов обработки строк, причем являются, пожалуй, самым мощным инструментом в этой области. Понятие регулярных выражений присуще фактически любому современному языку программирования, и php не стало исключением. В php существует два подхода к работе с регулярными выражениями (т.е. два набора функций): - POSIX – совместимые: - Perl – совместимые (именно этому [...]]]></description>
			<content:encoded><![CDATA[<p>Регулярные выражения относятся к числу инструментов обработки строк, причем являются, пожалуй, самым мощным инструментом в этой области. Понятие регулярных выражений присуще фактически любому современному языку программирования, и php не стало исключением. В php существует два подхода к работе с регулярными выражениями (т.е. два набора функций):<br />
- POSIX – совместимые:<br />
- Perl – совместимые (именно этому методу и будет посвящена данная статья).</p>
<p>Поскольку функции в стиле perl, являются наиболее мощными и распространенными, на них, пожалуй, и остановимся. Сразу отмечу, что сама тематика «Регулярные выражения» является весьма сложной для освоения. Мало кто не испугается при виде, к примеру, такой записи: <em>«/[S]+@[S]+/i»</em> &#8211; а это лишь означает формат записи e-mail адреса. Ну ладно, понемногу начнем разбираться с данной технологией, а к примеру еще вернемся чуть позже.</p>
<p>Чтобы дать понять, что же такое регулярные выражения, далеко ходить не будем, обратимся к стандартной системе поиска Windows. Если вы являетесь, так называемым, «продвинутым пользователем» (а раз вы это читаете, вероятно, именно таким пользователем вы и являетесь), вы знаете о спец символах, используемых при поиске. К примеру, чтобы найти все файлы с расширением php, необходимо в строке поиска вписать *.php. Вот это и является простейшим регулярным выражением.</p>
<p>Для описания регулярных выражений используется три набора показателей – метасимволы, квантификаторы, модификаторы. Итак, начнем по порядку.</p>
<p><strong>Метасимволы. </strong></p>
<p>Их можно описать, как набор специальных символов в php, предназначенных для создания шаблона поиска. Ниже приведен список метасимволов в php:<br />
<strong>\</strong> &#8211; общий экранирующий символ;<br />
<strong>^</strong> &#8211; маркер начала данных (при использовании в квадратных скобка означает отрицание символа)<br />
<strong>$</strong> &#8211; Конец строки (или всех данных)<br />
<strong>[ ]</strong> &#8211; начало и конец символьного класса (символьный класс – группа некоторых символов, которые могут являться/не являться вариантами совпадения для одного символа)<br />
<strong>.</strong> – Любой символ.</p>
<p>Выше представлен список наиболее часто используемых метасимволов для работы с регулярными выражениями. Для примера – <strong>to[sr]t</strong>. Это выражение говорить о том, что шаблону соответствуют слова <strong>tost</strong> и <strong>tort</strong>. Думаю с этим все ясно, идем далее…</p>
<p><strong>Квантификаторы. </strong></p>
<p>Под ними подразумевают служебные символы, которые отражают количество повторений того или иного символа. В рамках этого пункта рассмотрим также типы символов. Для облегчения восприятия будем их рассматривать на примере символа «А», но на практике, вместо этого символа может быть любой другой…</p>
<p>Вот список квантификаторов в php:<br />
<strong>A+</strong> (одно и более повторений символа А подряд);<br />
<strong>А*</strong> (отсутствие символов А, стоящих подряд);<br />
<strong>А?</strong> (1 символ A(допускается отсутствие символа))<br />
<strong>А{3}</strong> (три стоящих подряд символа А (вместо тройки может быть и любое другое число))<br />
<strong>A{1.4}</strong> (от одного до четырех символов А подряд)<br />
<strong>A{3. } </strong>(три и более символов А)</p>
<p><strong>Типы символов:</strong></p>
<p><strong>D</strong> – десятичные цифры<br />
<strong>S</strong> – символ пробела<br />
<strong>W</strong> – символы, образующие слова</p>
<p>Касательно типа символов, хотелось бы отметить, что очень важно учитывать регистр, он имеет огромное значение, если запись <strong>s</strong> означает символ пробела, то <strong>S</strong> – все символы, кроме символа пробела. Из чего следует, что при неправильном выборе регистра, вы получите противоположный желаемому результат.</p>
<p>Всю теорию, что хотел – я изложил. Пришло время разобрать &#8220;по косточкам&#8221; наш пример <strong>«/[S]+@[S]+/i»</strong>.<br />
Итак, что мы имеем: само тело шаблона заключено между символами <strong>«/»</strong>, между двумя такими символами пишется любое регулярное выражение. Знак <strong>i</strong> в конце означает, что шаблон нечувствителен к регистру. Что касается самого шаблона то он состоит из 2-х наборов символов <strong>«[S]+»</strong> и стоящей между ними <strong>@.</strong> Что касается <strong>«[S]+»</strong>, то это значит – любое количество повторений любых символов кроме пробела. Ну знак <strong>@</strong> собственно и означает <strong>@.</strong> Т.е. в конечном итоге мы имеем 2 набора любых символов без пробелов, разделенных знаком <strong>@.</strong> Под это описание как раз и попадает e-mail адрес.</p>
<p>Вот пожалуй, пока и все, что касается данной темы.</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/regulyarnye-vyrazheniya-v-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Использование Cookie в PHP</title>
		<link>http://webteach.ru/web-programmirovanie/php/ispolzovanie-cookie-v-php</link>
		<comments>http://webteach.ru/web-programmirovanie/php/ispolzovanie-cookie-v-php#comments</comments>
		<pubDate>Wed, 10 Dec 2008 21:25:38 +0000</pubDate>
		<dc:creator>IFO</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/2008/12/11/ispolzovanie-cookie-v-php/</guid>
		<description><![CDATA[Cookie, наряду с сессиями, являются средством отслеживания сеанса. Хотя у них схожее предназначение, они носят весьма различный характер. Если сессия предназначена для хранения данных на период сессии (т.е. время пребывания пользователя на сайте), то Cookie предназначены для хранения пользовательской информации более длительное время и не на стороне сервера, а на стороне клиента, причем срок этого [...]]]></description>
			<content:encoded><![CDATA[<p>Cookie, наряду с сессиями, являются средством отслеживания сеанса. Хотя у них схожее предназначение, они носят весьма различный характер. Если сессия предназначена для хранения данных на период сессии (т.е. время пребывания пользователя на сайте), то Cookie предназначены для хранения пользовательской информации более длительное время и не на стороне сервера, а на стороне клиента, причем срок этого хранения указывается разработчиком сайта.<br />
Еще одной особенностью является то, что они могут считываться только с того домена, с которого были созданы. Т.е. нет возможности прочитать содержимое Cookie, созданной на другом сайте.</p>
<p>Для того, чтобы записать cookie, в php предусмотрен специальный оператор</p>
<blockquote><p>setcookie([Имя],[Значение],[Срок действия],[Домен],[Путь],[Безопасность])</p></blockquote>
<p>Теперь кретенько разъясню параметры, используемые при создании Cookie:</p>
<ul>
<li>Имя – имя, через которое в дальнейшем будет осуществляться обращение к данной Cookie;</li>
<li>Значение – собственно, сама информация, хранящаяся в файле. Как правило, это идентификационный номер пользователя.</li>
<li>Срок действия – параметр отражает, как долго будет действовать сессия. Время указывается в формате Unix timestamp.</li>
<li>Домен – Имя домена, который создал эту Cookie, и который будет ее в дальнейшем использовать.</li>
<li>Путь – при указании данного параметра, куки станет доступна только из определенного каталога сайта…</li>
<li>Безопасность – Указывает, установлено ли защищенное соединение HTTPS (по умолчанию &#8211; 0)</li>
</ul>
<p>Из всего этого перечня, обязательным является лишь параметр «ИМЯ». Вот пример рабочего кода:</p>
<blockquote><p>setcookie(“Cookie_1”, $value, time()+3600);</p></blockquote>
<p>- этот код создает cookie с именем Cookie_1, значение переписывается из переменной «value», срок действия – 1 час (3600 секунд).<br />
Ну с тем как создавать cookie, мы вроде разобрались, теперь пришло время обращения к уже созданным «кукам». Итак, в php все cookies, доступные для данного домена, хранятся в массиве $_COOKIE. И доступ к ним осуществляется через этот массив. Выглядит это примероно следующим образом:</p>
<blockquote><p>$cookie_val = $_COOKIE[‘Cookie_1’];</p></blockquote>
<p>Исходя из вышеуказанного коде, в переменную $cookie_val записывается содержимое Cookie_1. Дальнейшее использование этой информации ничем не отличается от обработки простой переменной.<br />
Последнее что хочу отметить, куки должны создаваться ДО вывода любой информации в скрипте, т.к. это вызовет ошибку в связи с тем, что куки создаются в заголовке страници.<br />
Вот и все, что хотелось отметить в рамках данной статьи. Удачи Вам!</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/ispolzovanie-cookie-v-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP. Работа с сессией.</title>
		<link>http://webteach.ru/web-programmirovanie/php/php-rabota-s-sessiej</link>
		<comments>http://webteach.ru/web-programmirovanie/php/php-rabota-s-sessiej#comments</comments>
		<pubDate>Wed, 10 Dec 2008 08:43:31 +0000</pubDate>
		<dc:creator>IFO</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/2008/12/10/php-rabota-s-sessiej/</guid>
		<description><![CDATA[Рано или поздно любой PHP разработчик сталкивается с необходимостью передавать какую-либо информацию между страницами сайта. И для многих новичков это становится довольно значительной проблемой. Эта статья направлена дать вам определенное представление об одном из способов такой передачи в php – сессии. Но об этом немного позже. Пока попробуем смоделировать следующую ситуацию: У вас возникла необходимость [...]]]></description>
			<content:encoded><![CDATA[<p>Рано или поздно любой PHP разработчик сталкивается с необходимостью передавать какую-либо информацию между страницами сайта. И для многих новичков это становится довольно значительной проблемой. Эта статья направлена дать вам определенное представление об одном из способов такой передачи в php – сессии. Но об этом немного позже. Пока попробуем смоделировать следующую ситуацию: У вас возникла необходимость ограничить авторизацию пользователей на сайте. Пример такой авторизации можно встретить фактически на любом сайте.</p>
<p>Как логически, так и технически, реализация такого модуля не представляет особой проблемы. Рассмотрим простейший пример создания такой системы.</p>
<ol>
<li>Если пользователь еще не авторизован, то выводим форму авторизации (простейшая форма на html с полями для ввода логина, пароля и одной кнопкой).</li>
<li>В случае, когда пользователь уже прошел авторизацию, вывести страницу с личной информацией.</li>
</ol>
<p>И тут у нас возникает проблема уже с первого предложения «Если пользователь еще не авторизован» &#8211; но вот проблема, у протокола http нет возможности отслеживать перемещения и действия пользователя на сайте. А вот исходя из задания, нам необходимо определить, проходил ли текущий пользователь авторизацию в прошлом. Вот для таких задач и предназначена сессия.<br />
Итак, Сессия – промежуток времени, который пользователь проводит на сайте (сессия начинается в момент открытия сайта в браузере и завершается при закрытии сайта или переходе на другой).</p>
<p>Работу с сессией можно поделить на 3 этапа:</p>
<ul>
<li>Открытие сессии;</li>
<li>Обработка данных, записанных в сессию;</li>
<li>Закрытие сессии.</li>
</ul>
<p><strong>Открытие сессии.</strong></p>
<p>Тут есть два варианта. Сессия может стартовать в автоматическом режиме либо запускаться вручную, что зависит от настроек php-сервера (Т.е. если переменная <em><strong>session.auto_start</strong></em> в файле php.ini имеет значение 1, то сессия будет стартовать автоматом, если 0 – то нет.). При автоматическом старте сессии, этот абзац можно не читать. При ручном же старте используется функция <em><strong>session_start()</strong></em></p>
<p><strong>Обработка данных. </strong></p>
<p>В php доступ ко всем сессионным переменным осуществляется посредствам массива <em><strong>$_SESSION</strong></em>, в который можно свободно заносить и извлекать данные. Обрабатывается эта переменная как обычный массив. В переменную <em><strong>$_SESSION</strong></em> можно писать как простые переменные, так и массивы. Если с записью и извлечением все понятно (чуть позже рассмотрим пример использования), то уничтожение переменной имеет весьма специфический характер. В случае, когда возникла необходимость уничтожения определенной переменной сессии без закрытия самой сессии, используют специальную функцию <em><strong>unset()</strong></em>. Т.е. если необходимо удалить переменную <em><strong>$_SESSION[‘action’]</strong></em>, формат записи будет следующий – <em><strong>unset($_SESSION[‘action’])</strong></em>.</p>
<p><strong>Закрытие сессии. </strong></p>
<p>Эта процедура производится при необходимости досрочно разорвать сессию. Что имеет смысл, к примеру, при использовании возможности смены пользователя на сайте. Реализуется данная возможность по средствам php-функции <em><strong>session_destroy()</strong></em>.</p>
<p>После рассмотрения всех трех этапов, будет нелишним закрепить новые знания на конкретном примере. В качестве примера возьмем простейший скрипт авторизации.</p>
<p>Cоздадим файл Index.php следующего содержания:</p>
<blockquote><p>&lt;?php<br />
session_start(); // открытие сессии<br />
//проверяем, есть ли запись в сессии, если есть, то выводим страницу с данными, в противном случае форму регистрации<br />
If(isset($_SESSION[‘login’])){<br />
echo “доступ разрешен”;<br />
}<br />
else {<br />
if ($_GET[‘action’] = “out”)<br />
{<br />
require “aut.php”;<br />
}<br />
else{<br />
echo ”[тут html код формы авторизации]”;<br />
}<br />
?&gt;</p></blockquote>
<p>Как видно из кода, тут задействован еще один файл &#8211; <em>aut.php</em>. Он предназначен для проверки введенных в поля данных и в случае их правильности, записывает их в переменную. Саму технологию этой проверки я тут описывать не стану. Укажу лишь оператор, которым производится добавление данных в сессию, вот эта строчка:</p>
<blockquote><p>$_SESSION[‘login’] = “ok”;</p></blockquote>
<p>Вот пожалуй и все, что я и хотел изложить в рамках данной статьи. Удачи!</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/php-rabota-s-sessiej/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Магические кавычки</title>
		<link>http://webteach.ru/web-programmirovanie/php/magicheskie-kavychki</link>
		<comments>http://webteach.ru/web-programmirovanie/php/magicheskie-kavychki#comments</comments>
		<pubDate>Fri, 03 Oct 2008 18:48:14 +0000</pubDate>
		<dc:creator>kr4shr</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/2008/10/03/magicheskie-kavychki/</guid>
		<description><![CDATA[magic_quotes (или, в переводе на русский, &#8220;магические кавычки&#8221;) &#8211; процесс, который автоматически экранирует кавычки всех данных php скрипта. Действие magic_quotes аналогично действию функции addslashes(). Когда данный процесс активизирован, он экранирует все одинарные, двойные кавычки, знаки NULL и левые слэши левыми слэшами. magic_quotes умеет работать в трёх режимах: magic_quotes_runtime &#8211; функции, возвращающие данные из внешних источников, [...]]]></description>
			<content:encoded><![CDATA[<p>magic_quotes (или, в переводе на русский, &#8220;магические кавычки&#8221;) &#8211; процесс, который автоматически экранирует кавычки всех данных php скрипта.</p>
<p>Действие magic_quotes аналогично действию функции addslashes(). Когда данный процесс активизирован, он экранирует все одинарные, двойные кавычки, знаки NULL и левые слэши левыми слэшами.<br />
<span id="more-82"></span><br />
magic_quotes умеет работать в трёх режимах:</p>
<ul>
<li><strong>magic_quotes_runtime</strong> &#8211; функции, возвращающие данные из внешних источников, экранируют возвращаемые данные кавычками. Отключена по умолчанию.</li>
<li><strong>magic_quotes_gpc</strong> &#8211; экранирует данные, получаемые из массивов get, post и cookie. Невозможно отключить при работе скрипта, включена по умолчанию.</li>
<li><strong>magic_quotes_sybase</strong> &#8211; вместо экранирования кавычек слэшами, экранирует одинарные кавычки двойными кавычками. Отключена по умолчанию, при включении отключает magic_quotes_gpc.</li>
</ul>
<p>Использование magic_quotes удобно и полезно для начинающих программистов &#8211; не надо экранировать данные кавычками вручную. Но использование magic_quotes влечёт за собой некоторые минусы, среди которых снижение производительности и увеличение нагрузки на сервер.</p>
<p>Если использование magic_quotes не требуется, то можно отключить их двумя различными способами:</p>
<p>Конфигурирование файла .htaccess. Для отключения работы magic_quotes в какой-то конкретной директории или на хостинг-аккаунте необходимо внести в файл .htaccess следующую строчку:</p>
<blockquote><p>php_flag magic_quotes_gpc off</p></blockquote>
<p>Конфигурирование php.ini. Для отключения magic_quotes на всём сервере можно изменить конфигурационный файл php.ini, отредактировав в нём настройки magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase</p>
<p>magic_quotes позволяет избавится от некоторой кодовой волокиты, но уменьшает безопасность мобильности (переносимости) написанных приложений и уменьшает производительность. Выбор за Вами.</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/magicheskie-kavychki/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пишем движок сайта (CMS &#8211; Систему управления контентом)</title>
		<link>http://webteach.ru/web-programmirovanie/php/pishem-dvizhok-sajta</link>
		<comments>http://webteach.ru/web-programmirovanie/php/pishem-dvizhok-sajta#comments</comments>
		<pubDate>Sun, 07 Sep 2008 09:18:01 +0000</pubDate>
		<dc:creator>kr4shr</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/2008/09/07/pishem-dvizhok-sajta/</guid>
		<description><![CDATA[Использование систем управления контентом (то бишь движков сайтов) является самым простым и эффективным способом создания и ведения своего собственного сайта. Некоторые сайты используют сложные и “навороченные” движки, некоторые довольствуются простенькими экземплярами. Написать же CMS не так сложно, как кажется. Естественно, речь не идёт о сложных портальных системах. Сегодня мы напишем простую CMS, в которой можно [...]]]></description>
			<content:encoded><![CDATA[<p>Использование систем управления контентом (то бишь движков сайтов) является самым простым и эффективным способом создания и ведения своего собственного сайта. Некоторые сайты используют сложные и “навороченные” движки, некоторые довольствуются простенькими экземплярами. Написать же CMS не так сложно, как кажется.<br />
<span id="more-79"></span><br />
Естественно, речь не идёт о сложных портальных системах. Сегодня мы напишем простую CMS, в которой можно будет использовать неограниченное количество статичных страничек с оформлением по шаблону и редактированием из админ-панели.</p>
<p>А начнём мы с того, что расскажем, как будет работать наш скрипт управления контентом. Как я уже сказал раньше, CMS будет иметь возможность создания статичных страничек. Так вот, эти странички будут храниться в .php файлах примерно такого формата:</p>
<blockquote><p>&lt;?<br />
$page_title = &#8216;Титул&#8217;;<br />
$page_descr = &#8216;Описание страницы&#8217;;<br />
$page_keyws = &#8216;Ключевые слова&#8217;;<br />
$page_4menu = &#8216;Текст ссылки в меню&#8217;;</p>
<p>$content = &lt;&lt;&lt; EOT<br />
А здесь контент страницы. Для форматирования используется html<br />
EOT;<br />
?&gt;</p></blockquote>
<p>Хранить мы их будем в папке content</p>
<p>Эти файлы будут просто подключаться и их содержимое выводиться в шаблон. Шаблон — это обычная куча html-тегов с несколькими специальными тегами (при обработке вместо тегов выводятся соответствующие значения):</p>
<ul>
<li>%TITLE% — заголовок страницы</li>
<li>%DESC% — описание страницы (для мета-тегов)</li>
<li>%KEYWORDS% — ключевые слова</li>
<li>%MENU% — список ссылок меню</li>
<li>%CONTENT% — содержимое страницы</li>
</ul>
<p>Шаблоны будут храниться в папке templates/&lt;имя шаблона&gt;/. Файл с шаблоном назовите index.php. Сделайте какой-нибудь шаблон прямо сейчас.</p>
<p>Ссылки в меню можно упорядочить. Вообще ссылки будут храниться в файле menu.csv (в формате comma separated values). Файл будет иметь примерно такой вид:</p>
<blockquote><p>1;Главная<br />
2;Контакты</p></blockquote>
<p>Каждая строчка имеет вид номер_страницы;текст_для_ссылки. Имя файла (без расширения) является этим самым номером страницы.</p>
<p>Меню будет выводиться на экран csv-парсером menu.php. Ссылки в меню будут оформляться в соответствии с шаблоном для ссылок, который будет храниться в файле settings.php. Кроме этого шаблона, в файле настроек также будет храниться id главной страницы (которая показывается по умолчанию) и название используемого шаблона. Он имеет примерно такой вид:</p>
<blockquote><p>&lt;? $curr_tmpl=&#8217;default&#8217;; $index=1; $menu_tmpl = &#8220;&lt;a href=\&#8221;%URL%\&#8221;&gt;%TITLE%&lt;/a&gt;&lt;br /&gt;&#8221;; ?&gt;</p></blockquote>
<p>Шаблон для ссылок хранится в переменной $menu_tmpl. В нём используется два тега: %URL% для вставки URLа страницы и %TITLE% для вставки текста ссылки.</p>
<p>Также для работы скрипта необходимы ещё два файла: error.html и 404.html. Они будут выводить сообщения об обычной ошибке и ошибке 404ой соответственно. Это должны быть простые html файлы (их создание мы оставим на Вас).</p>
<p>Отлично, с подготовкой к написанию скрипта мы закончили. Теперь начнём делать саму CMS.</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/pishem-dvizhok-sajta/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Пишем скрипт гостевой книги. Часть 3</title>
		<link>http://webteach.ru/web-programmirovanie/php/pishem-skript-gostevoj-knigi-chast-3</link>
		<comments>http://webteach.ru/web-programmirovanie/php/pishem-skript-gostevoj-knigi-chast-3#comments</comments>
		<pubDate>Sat, 30 Aug 2008 15:27:26 +0000</pubDate>
		<dc:creator>kr4shr</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://webteach.ru/2008/08/30/pishem-skript-gostevoj-knigi-chast-3/</guid>
		<description><![CDATA[В прошлых частях урока мы написали шаблоны к скрипту гостевой книги и собственно сам скрипт. Получилось очень даже не плохо (даже хорошо, себе можно польстить), а сегодня мы сделаем ещё лучше. Лучше для нас, простых вебмастеров. Мы напишем админку для нашего скрипта. А начнём мы с простого — с написания шаблонов для админки. Нет, это [...]]]></description>
			<content:encoded><![CDATA[<p>В прошлых частях урока мы написали шаблоны к скрипту гостевой книги и собственно сам скрипт. Получилось очень даже не плохо (даже хорошо, себе можно польстить), а сегодня мы сделаем ещё лучше. Лучше для нас, простых вебмастеров. Мы напишем админку для нашего скрипта.<br />
<span id="more-78"></span><br />
А начнём мы с простого — с написания шаблонов для админки. Нет, это будет не тот нудный и затянутый процесс, как при создании шаблонов для гостевой. Для админки шаблоны будут намного проще. Просто сделаем шапку и подвал. А между ними будет контент.</p>
<p>Для шаблонов будет только парочка требований. Во-первых, шапка и подвал должны называться header.tpl и footer.tpl соответственно (ну и храниться они должны в поддиректории админки admin). А ещё где-то в них должны быть ссылки на следующие файлы:</p>
<ul>
<li>admin_main.php (главная)</li>
<li>admin_messages.php (управление сообщениями)</li>
<li>admin_editsettings.php (редактирование настроек гостевой книги)</li>
<li>admin_editstoplist.php (редактирование списка стоп-слов)</li>
<li>admin_logout.php (выход из админки)</li>
</ul>
<p>А вот где конкретно расположить их на странице — это отдельный вопрос. Я думаю, Вы вполне способны решить его самостоятельно.</p>
<p>Ах да, если Вам лень самому делать шаблоны, то можете просто взять их из готового скрипта, который можно скачать <a href="http://webteach.ru/guest.zip">здесь</a>.</p>
<p>Для начала напишем файл настроек админ-панели admin_settings.php. В нём будем хранить логин и пароль доступа.</p>
<blockquote><p>&lt;?<br />
$admin_login = &#8220;admin&#8221;; // логин<br />
$admin_passw = &#8220;test1&#8243;; // пароль<br />
?&gt;</p></blockquote>
<p>Логин и пароль, естественно, замените на свои.</p>
<p>Теперь напишем файл index.php, который будет отвечать за вход в админку. Работает он предельно просто, показывает форму, а при её отправке проверяет ведённые данные. Если данные верны, то устанавливает флажок в пременную сессии и открывает админку, если неверны, то предлагает ввести заново.</p>
<p>Вот листинг этого скрипта:</p>
<blockquote><p>&lt;?<br />
session_start (); // запускаем сессию<br />
include (&#8220;admin_settings.php&#8221;); // загружаем настройки входа<br />
if (!isset ($_POST ['action'])) $show_form = true; // проверяем, отправляли ли форму<br />
// если да, то проверяем данные и при их валидности открываем админку<br />
// при невалидности данных проинформируем пользователя об ошибке<br />
else { if ($_POST ['a_name'] == $admin_login &amp;&amp; $_POST ['a_pass'] == $admin_passw) { $show_form = false; $_SESSION['adm'] = true; header (&#8220;Location: ./admin_main.php&#8221;); } else { $show_form = true; $err = true; } }<br />
// если надо, то покузываем форму<br />
if ($show_form)<br />
{ ?&gt;<br />
&lt;!&#8211; просто html код &#8211;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Вход в административную панель&lt;/title&gt;<br />
&lt;link rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; href=&#8221;log_style.css&#8221; /&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type; charset=windows-1251&#8243; /&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table id=&#8221;wrapper&#8221; cellpadding=&#8221;0&#8243; cellspacing=&#8221;0&#8243; border=&#8221;0&#8243;&gt;<br />
&lt;tr&gt;&lt;td&gt;</p>
<p>&lt;center&gt;<br />
&lt;table id=&#8221;form&#8221; cellspacing=&#8221;1&#8243; cellpadding=&#8221;0&#8243; border=&#8221;0&#8243;&gt;<br />
&lt;tr&gt;&lt;td&gt;<br />
&lt;!&#8211; если возникла ошибка в правильности введённых данных &#8211;&gt;<br />
&lt;? if (isset ($err)) echo &#8220;&lt;p align=\&#8221;center\&#8221;&gt;&lt;font color=\&#8221;red\&#8221;&gt;&lt;strong&gt;Неправильно введён логин или пароль!&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&#8221;; ?&gt;<br />
&lt;p align=&#8221;center&#8221;&gt;&lt;strong&gt;Вход в административную панель:&lt;/strong&gt;&lt;/p&gt;<br />
&lt;form action=&#8221;./&#8221; method=&#8221;post&#8221;&gt;<br />
&lt;input type=&#8221;hidden&#8221; name=&#8221;action&#8221; value=&#8221;yes&#8221;&gt;<br />
&lt;table&gt;<br />
&lt;tr&gt;&lt;td&gt;Логин:&lt;/td&gt;&lt;td&gt;&lt;input type=&#8221;text&#8221; name=&#8221;a_name&#8221; /&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;Пароль:&lt;/td&gt;&lt;td&gt;&lt;input type=&#8221;password&#8221; name=&#8221;a_pass&#8221; /&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td colspan=&#8221;2&#8243;&gt;&lt;center&gt;&lt;input type=&#8221;submit&#8221; value=&#8221;войти&#8221; class=&#8221;subm&#8221; /&gt;&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/center&gt;</p>
<p>&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&lt;? } ?&gt;</p></blockquote>
<p>Кода многовато, но это в основном из-за html. Программирования там нет. Вообще.</p>
]]></content:encoded>
			<wfw:commentRss>http://webteach.ru/web-programmirovanie/php/pishem-skript-gostevoj-knigi-chast-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

