<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		
		<title>Айвад</title>
		<link>http://www.aivad.ru/</link>
		<description>Создание, разработка, продвижение сайтов</description>
		<language>ru</language>
		<image>
			<title>Айвад</title>
			<url>http://www.aivad.ru/fileadmin/templates/images/rss.gif</url>
			<link>http://www.aivad.ru/</link>
			<width>14</width>
			<height>14</height>
			<description>Создание, разработка, продвижение сайтов</description>
		</image>
		<generator>TYPO3 - get.content.right</generator>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		
		
		
		<lastBuildDate>Sat, 28 Aug 2010 02:35:00 +0400</lastBuildDate>
		
		
		<item>
			<title>Привлекательный дизайн сайта</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2010&#38;tx_ttnews%5Bmonth%5D=08&#38;tx_ttnews%5Btt_news%5D=19&#38;cHash=38b4d2a430</link>
			<description>Конечно, нельзя сказать, что дизайн – это самое главное при разработке  своего ресурса. Прежде всего, пользователи оценивают, конечно же,  контент, но согласитесь, если дизайн выполнен в пестрых оттенках и с  удивительно дезорганизованной навигацией, вам вряд ли захочется  углубляться в тексты такого сайта, вы поспешите покинуть страничку. И  именно поэтому следует правильно организовать этот инструмент визуальной  презентации вашего сайта. Исходя из этого, вот несколько советов по  созданию...</description>
			<content:encoded><![CDATA[<p class="bodytext">Конечно, нельзя сказать, что дизайн – это самое главное при разработке  своего ресурса. Прежде всего, пользователи оценивают, конечно же,  контент, но согласитесь, если дизайн выполнен в пестрых оттенках и с  удивительно дезорганизованной навигацией, вам вряд ли захочется  углубляться в тексты такого сайта, вы поспешите покинуть страничку. И  именно поэтому следует правильно организовать этот инструмент визуальной  презентации вашего сайта. Исходя из этого, вот несколько советов по  созданию привлекательного дизайна сайта, которые, я  надеюсь, вам  пригодятся.</p>
<p class="bodytext">Первое – навигация. Вы должны уделить ей особое внимание.  Прежде  всего, она должна  быть максимально простой. Если вы планируете сайт с  общим количеством страниц не более 60, то реализация навигации не  составит много хлопот. Но в случае совершенствования своего ресурса,  есть вероятность, что web-страниц станет намного больше. Следовательно,  чтобы самому же не запутаться в своей навигации, следует подойти к этому  вопросу серьезно и правильно, ведь в этом случае и поисковику тоже  легче будет проиндексировать ваш сайт.</p>
<p class="bodytext">Второе – картинки. Чтобы обеспечить для посетителей максимально  привлекательный дизайн сайта, не стоит переполнять свой сайт большим  количеством изображений, так как при загрузке это скажется на скорости.  Пользователям гораздо легче будет воспринимать ваш сайт с правильным  соотношением информации и графики.  Баннеры тоже неблагоприятно  воспринимаются посетителями, так как, в большинстве случаев, попросту  раздражают зрение и не дают сосредоточиться на необходимом.</p>
<p class="bodytext">Третье – ссылки. Их следует выделять таким образом, чтобы основной  текст и ссылка визуально отличались. При наведении на ссылку не стоит  делать так, чтобы ее размер увеличивался, так как это послужит резкому  сдвигу основного текста. А также не рекомендуется ставить ссылки, при  переходе на которые нет страниц, и вместо них выходит ошибка.</p>
<p class="bodytext">Четвертое – шаблон. Здесь вы должны определиться, что вы выберете:  готовый шаблон или захотите свой уникальный дизайн. Лучше конечно второе, так как среди всех остальных сайтов вы просто должны   «блеснуть» своей оригинальностью. Но в некоторых случаях можно  остановиться и на шаблоне, если у вас попросту не хватает времени или  знаний . Тем более, что после небольшой редакции он уже не будет  выглядеть столь банально.</p>
<p class="bodytext">При создании сайта я бы вам советовал использовать только свои  информационные данные, так как «кража» чужих совсем не поощряется в Сети  Интернет.  Пусть это будут не такие уж сложные графические элементы,  какие бы вам хотелось, но все же они будут свои. И фоновая заставка   этих элементов пусть содержит название вашего сайта. Ведь это является и  своего рода рекламой, и защитой авторских прав. А касаемо контента,  тоже дам вам совет: не поленитесь, и напишите его сами, ведь  оригинальность всегда пользуется успехом у любой аудитории!</p>
<p class="bodytext">Следовательно, чтобы иметь хороший результат, то есть привлекательный дизайн сайта, стоит и потрудиться!  </p>]]></content:encoded>
			<category>Дизайн</category>
			
			
			<pubDate>Sat, 28 Aug 2010 02:35:00 +0400</pubDate>
			
		</item>
		
		<item>
			<title>Время создавать свой сайт</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2010&#38;tx_ttnews%5Bmonth%5D=08&#38;tx_ttnews%5Btt_news%5D=18&#38;cHash=a253b049e6</link>
			<description>Интернет уже давно вошел в  нашу жизнь. Попав в его виртуальное пространство, мы медленно, но  уверенно осваиваем интернет-просторы, поглощая море информации.
Но когда-то наступает такой момент, когда хочется с кем-нибудь  поделиться своими мыслями и соображениями, обсудить наболевшие проблемы,  или просто поговорить с единомышленниками на интригующие и волнующие  темы. Возникает желание создать собственный сайт, чтобы с помощью него  выразить себя, как личность. Но с чего следует начинать?...</description>
			<content:encoded><![CDATA[<div id="article-32859" class="marg_23"><p class="bodytext">Интернет уже давно вошел в  нашу жизнь. Попав в его виртуальное пространство, мы медленно, но  уверенно осваиваем интернет-просторы, поглощая море информации.</p>
<p class="bodytext">Но когда-то наступает такой момент, когда хочется с кем-нибудь  поделиться своими мыслями и соображениями, обсудить наболевшие проблемы,  или просто поговорить с единомышленниками на интригующие и волнующие  темы. Возникает желание создать собственный сайт, чтобы с помощью него  выразить себя, как личность. Но с чего следует начинать? Хочется, чтобы  сайт стал уникальным в своем роде, чтобы посетителям хотелось регулярно  посещать ваш ресурс.</p>
<p class="bodytext">Конечно, необходимо для начала определиться с назначением будущего сайта: </p><ol><li> Что вы намереваетесь получить от него? </li><li> Какую пользу посетители смогут извлечь из него? </li><li> Нужно определиться с тематикой сайта; </li><li> Из чего будет состоять информативное наполнение ресурса  (мультимедийные файлы, новости, полезные статьи, интернет-магазин и  т.д.)?</li></ol><p class="bodytext">Немаловажную роль при создании сайта играет выбор его оформления.  Чтобы в дальнейшем было легче работать, опишите будущую структуру сайта  на бумаге. Необходимо определиться со следующими элементами: </p><ul><li> шрифт; </li><li>цветовая гамма; </li><li>использование графических элементов; </li><li>использование flash-анимации и видео; </li><li>смысловая нагрузка контента.</li></ul><p class="bodytext">Графическое оформление сайта не должно отвлекать посетителя от  основной информации. Хорошо, если при оформлении ресурса, вы будете  придерживаться однотонных цветов. Конечно, текст не должен сливаться с  общим фоном. Желательно, чтобы он был темным (черным), так как такой  текст легче читать, а фон - светлым. Человек должен ощущать себя  комфортно, находясь на вашем сайте. Количество посетителей будет  возрастать с каждым днем, если размещенная на сайте информация будет  уникальна, интересна, актуальна и полезна.</p>
<p class="bodytext">Еще нужно обратить внимание на работоспособность ссылок и на скорость загрузки страниц. Посетитель не должен быть разочарован.</p>
<p class="bodytext">Предложите посетить готовый сайт своим друзьям и знакомым. Пусть они  дадут вам советы по оформлению сайта. Возможно, они увидят какие-то  недостатки, которые впоследствии будут устранены вами.</p></div>]]></content:encoded>
			<category>Программинг</category>
			
			
			<pubDate>Sat, 28 Aug 2010 02:31:00 +0400</pubDate>
			
		</item>
		
		<item>
			<title>Продвижение сайта. Основные этапы.</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2010&#38;tx_ttnews%5Bmonth%5D=08&#38;tx_ttnews%5Btt_news%5D=17&#38;cHash=893309a2e0</link>
			<description>Сайт создают зачастую энтузиасты своего дела. Однако одного морального  удовлетворения, как известно, недостаточно. Каждый веб-мастер  рассчитывает получить прибыль. Достижению желанной цели и служит  продвижение сайта. Наиболее эффективно  - комплексное продвижение сайта.   Подобные услуги предлагают  SEO-компании.  Целесообразно ли это  экономически? Если считать продвижение сайта одним из видов рекламы, а  это так и есть, то действительно можно говорить о рациональном вложении  денег. Дело в...</description>
			<content:encoded><![CDATA[<p class="bodytext">Сайт создают зачастую энтузиасты своего дела. Однако одного морального  удовлетворения, как известно, недостаточно. Каждый веб-мастер  рассчитывает получить прибыль. Достижению желанной цели и служит  продвижение сайта. Наиболее эффективно  - комплексное продвижение сайта.   Подобные услуги предлагают  SEO-компании.  Целесообразно ли это  экономически? Если считать продвижение сайта одним из видов рекламы, а  это так и есть, то действительно можно говорить о рациональном вложении  денег. Дело в том, что доходы от сайта,  находящегося на высоких  позициях в существующих поисковых программах, на порядок выше, чем до  проведения таких работ.  Вкладывать деньги в продвижение сайта выгодно.</p>
<p class="bodytext"><br />В таком случае, возникает вопрос, что входит в  комплексное  продвижение сайта. Перечислим основные позиции. Прежде всего, это -   подбор ключей, которыми служат ключевые фразы. Их пользователи набирают в  поисковой системе. Имеет смысл и  оптимизация сайта, когда в  соответствии с определенными канонами выстраивается структуры сайта, что  также служит его успешному продвижению. Важно добиться выдачи сайта на  первых страницах поисковых систем. Затем специалистами проводится оценка  удобства сайта для пользователей. И, конечно же, важная составная часть  комплексного продвижения сайта - проведение контекстной рекламной  кампании.        <br />Оптимизация сайта в соответствии с требованиями поисковых машин  позволяет добиться максимального роста продаж и одновременно уменьшения  расходов на рекламу.  А это значит, что необходимо провести   корректировку  текстов, и прежде всего - на главной странице сайта,  размещение  статей и др. Что и как лучше сделать, под силу определить  профессионалам. </p>]]></content:encoded>
			<category>Продвижение</category>
			
			
			<pubDate>Sat, 28 Aug 2010 02:28:00 +0400</pubDate>
			
		</item>
		
		<item>
			<title>Виды web-дизайна</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2010&#38;tx_ttnews%5Bmonth%5D=06&#38;tx_ttnews%5Btt_news%5D=16&#38;cHash=e593006bc4</link>
			<description>В web-дизайне нет особых законов, но есть самый главный судья – наш  посетитель. Для него, родимого, трудятся web-мастера не покладая  клавиатуры, чтобы ему, дорогому, угодить. Вот и в этой статье хотелось  бы поговорить о видах дизайна, дабы просветить начинающих и напомнить  важные моменты уже опытным web-мастерам.  
Основные виды дизайна – это жесткий и резиновый.  
Жесткий дизайн предполагает под собой взятие за основную меру ячейки  пиксели или какие-либо элемент (к примеру,...</description>
			<content:encoded><![CDATA[<p class="bodytext">В web-дизайне нет особых законов, но есть самый главный судья – наш  посетитель. Для него, родимого, трудятся web-мастера не покладая  клавиатуры, чтобы ему, дорогому, угодить. Вот и в этой статье хотелось  бы поговорить о видах дизайна, дабы просветить начинающих и напомнить  важные моменты уже опытным web-мастерам.  </p>
<p class="bodytext">Основные виды дизайна – это жесткий и резиновый.  </p>
<p class="bodytext"><span style="font-weight: bold;"><span style="color: rgb(255, 96, 0);">Жесткий дизайн</span></span> предполагает под собой взятие за основную меру ячейки  пиксели или какие-либо элемент (к примеру, изображение), который  заложен в ячейке. То есть все частички нашей страницы расположены в  строгом порядке, на определенном расстоянии друг от друга и имеют  заданный размер. Наша страничка никоим образом не зависит от размера  окна и других внешних факторов. Это крайне удобно, особенно при  разработке сложного дизайна. Но есть и свои «но». Расширение экрана  предполагается только среднее, и при его большем значении на компьютере  пользователя у страницы расползаются поля, а при меньшем – часть  становится не видна.  </p>
<p class="bodytext">Но не стоит унывать, здесь нам на помощь приходит <span style="font-weight: bold;"><span style="color: rgb(255, 96, 0);">гибкий дизайн</span></span>.  Тогда при отображении браузером ваши страницы равномерно распределяются  по всему размеру страницы. Правда, часто отображение элементов страницы  не соответствует изначально задуманному. Хотелось бы также отметить и  то, что загрузка «гибких» страниц длится значительно дольше «жестких».  </p>
<p class="bodytext">Есть также и комбинированный способ: составляйте страницу из  столбцов определенных или относительных размеров. Этот вариант наиболее  популярен и используем.  </p>
<p class="bodytext">Как видите, выбор достаточно сложен и неоднозначен. Но ведь вы -  web-мастер и последнее слово только за вами!</p>]]></content:encoded>
			<category>Дизайн</category>
			
			
			<pubDate>Mon, 21 Jun 2010 16:52:00 +0400</pubDate>
			
		</item>
		
		<item>
			<title>PHP: Создание ZIP архивов на лету</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2010&#38;tx_ttnews%5Bmonth%5D=04&#38;tx_ttnews%5Btt_news%5D=9&#38;cHash=9c436ea6d2</link>
			<description> Углубляться в алгоритмы архивирования и сжатия я не буду, просто скачайте готовый класс createZip. Первоначальный источник данного класса к сожалению не помню, так что если вдруг найдется - прошу сообщить. 
 Класс createZip обеспечивает полноценную работу с формированием нового ZIP архива, с возможностью его выдачи на лету или сохранения на диск. Покажу несколько простых приёмов. 
 Ну, во-первый нужно объявить объект данного класса: 
$createZip = new createZip;
 Добавим в корень архива...</description>
			<content:encoded><![CDATA[<p class="bodytext"> Углубляться в алгоритмы архивирования и сжатия я не буду, просто скачайте готовый класс createZip. Первоначальный источник данного класса к сожалению не помню, так что если вдруг найдется - прошу сообщить. </p>
<p class="bodytext"> Класс createZip обеспечивает полноценную работу с формированием нового ZIP архива, с возможностью его выдачи на лету или сохранения на диск. Покажу несколько простых приёмов. </p>
<p class="bodytext"> Ну, во-первый нужно объявить объект данного класса: </p>
<pre>$createZip = new createZip;</pre>
<p class="bodytext"> Добавим в корень архива текстовый файл: </p>
<pre>$fileContents = &quot;Hello world!&quot;;<br />$createZip-&gt;addFile($fileContents, &quot;textfile.txt&quot;);</pre>
<p class="bodytext"> Создадим новую директорию: </p>
<pre>$createZip-&gt;addDirectory(&quot;images/&quot;);</pre>
<p class="bodytext"> Ну а теперь допустим у нас есть картинка image.png в директории где выполняется данный скрипт. Загрузим эту картинку в директорию images нашего архива: </p>
<pre>$fileContents = file_get_contents(&quot;image.png&quot;);<br />$createZip-&gt;addFile($fileContents, &quot;images/image.png&quot;);</pre>
<p class="bodytext"> Сохраняем архив на диск и выдаём посетителю ссылку: </p>
<pre>$filename = &quot;archive.zip&quot;;<br />$fd = fopen($filename, &quot;wb&quot;);<br />$out = fwrite($fd, $createZip-&gt;getZippedfile());<br />fclose($fd);<br />echo &quot;Скачать архив: <span style="background-color: yellow; border: 2px solid red; color: black;">$filename</span>&quot;;</pre>
<p class="bodytext"> Всё достаточно легко и просто. При желании, можно выдать архив на лету, после чего его сразу удалить. В классе для этого есть вспомогательная функция forceDownload. </p>]]></content:encoded>
			<category>Программинг</category>
			
			
			<pubDate>Fri, 23 Apr 2010 05:45:00 +0400</pubDate>
			
		</item>
		
		<item>
			<title>Постраничная навигация на PHP</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2010&#38;tx_ttnews%5Bmonth%5D=04&#38;tx_ttnews%5Btt_news%5D=6&#38;cHash=7d0c3d5ed2</link>
			<description>Пожалуй одна из самых распростанённых задач для веб-программистов. Большинство новичков сталкиваются с ней, я не был исключением.</description>
			<content:encoded><![CDATA[<p class="bodytext">Пожалуй одна из самых распростанённых задач для веб-программистов. Большинство новичков сталкиваются с ней, я не был исключением. Попытаемся же разобраться с логикой скрипта и реализовать его. Приступим?</p>
<p class="bodytext">Первое, что нам нужно для этого иметь – это базу данных с несколькими десятками строк, например статей или комментариев к ним (что угодно). Мы будем рассматривать базу данных MySQL, она является самой популярной на данный момент. Естественно используемый язык – это PHP.</p>
<p class="bodytext">Есть? Отлично! Продолжаем…</p><ul> 	<li>Создаём для примера файл primer.php;</li> 	<li>Создаём Базу данных primer (можете не создавать, если у вас уже 	есть подходящая);</li> 	<li>Создаём таблицу primer вот такой структуры (опять же, если нет 	другой); 		<pre>CREATE table primer (<br />	id int auto_increment primary key key,<br />	name varchar(100) NOT NULL,<br />	text longtext NOT NULL<br />);</pre> 	</li> 	<li>Набиваем её информацией. Я сделаю 20 записей, мне не день ;)</li> 	<li>Набираемся терпения – сейчас будем кодить.</li> </ul><p class="bodytext">Сам код довольно небольшой и несложный, поэтому вылажу его сразу весь, пометки Вам помогут разобраться без проблем.</p>
<p class="bodytext">Запихиваем нижележаций код в primer.php и пытаемся понять как же он работает:</p>
<p class="bodytext">Ошибочка вышла!';</p>
<pre><br />// СОЕДЕНИМСЯ С MySQL<br />$connect = mysql_connect ( $server, $user, $pass );<br />if (! $connect) {<br />	echo $text_error;<br />	exit ();<br />}<br /><br />// СОЕДЕНИЯЕМСЯ С БАЗОЙ ДАННЫХ<br />$select = mysql_select_db ( $db );<br />if (! $select) {<br />	echo $text_error;<br />	exit ();<br />}<br /><br />// СОЗДАЁМ ЗАПРОС<br />$result = mysql_query ( &quot;SELECT * from $table ORDER by id desc&quot; );<br />// СЧИТАЕМ КОЛЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ - У МЕНЯ ИХ 20<br />$num_rows = mysql_num_rows ( $result );<br /><br />// А ТЕПЕРЬ СЧИТАЕМ НА СКОЛЬКО СТРАНИЦ НАМ РАЗБИТЬ ЗАПИСИ И ВЫДЕЛЯЕМ ЦЕЛОЕ ЧИСЛО<br />$num_rows = round ( $num_rows / $chislo ); // 20 ДЕЛИМ НА 5. СКОЛЬКО? :)<br /><br /><br />// ЗДЕСЬ МЫ ПРОВЕРЯЕМ НА КАКОЙ СТРАНИЦЕ СЕЙЧАС ПОЛЬЗОВАТЕЛЬ<br />if (isset ( $_GET ['str'] )) {<br />	$nav = $_GET ['str'];<br />} else {<br />	$nav = 0;<br />}<br />$nav = intval ( $nav ); // ДЛЯ ЗАЩИТЫ ОТ НЕХОРОШИХ ДЯДЕНЕК МЫ ВЫДЕЛИМ ЦЕЛУЮ ЧАСТЬ $GET['str']<br />echo 'Навигация: ';<br /><br />// А ТЕПЕРЬ ВЫВОДИМ НОМЕРА СТРАНЦ<br />for($i = 1; $i &lt; $num_rows; $i ++) {<br />	if ($i != $nav) {<br />		echo '' . $i . ' ';<br />	} else {<br />		// АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ<br />		echo '' . $i . ' ';<br />	}<br />}<br /><br />echo ''; // ОТДЕЛИМ НАВИГАЦЮ ОТ КОНТЕНТА ДЛЯ НАГЛЯДНОСТИ<br /><br /><br />// НАЧИНАЕМ ВЫВОДИТЬ САМУ ИНФОРМАЦИЮ ПОСТРАНИЧНО :)<br />if (! isset ( $_GET ['str'] )) {<br />	$str = 0;<br />} else {<br />	$str = $_GET ['str'] * $chislo - $chislo;<br />}<br />$nomer = $str + 5;<br />// ФОРМИРУЕМ ЗАПРОС НУЖНОЙ НАМ ЧАСТИ ИНФОРМАЦИИ<br />$result = mysql_query ( &quot;SELECT * from $table ORDER by id asc limit $str, $nomer&quot; );<br />// ИНАЧЕ ВЫВОДИМ ОШИБКУ<br />if (! $result) {<br />	echo $text_error;<br />	exit ();<br />}<br /><br />echo '<br />      ';<br />while ( $row = mysql_fetch_array ( $result ) ) {<br />	echo '<br /><br />      ' . $row ['id'] . ' - ' . $row ['name'] . '<br /><br /><br />      ' . substr ( $row ['text'], 0, 100 ) . '.. &gt;&gt;<br />      ';<br />}<br />echo '<br />      ';<br /><br />mysql_close ( $connect );<br /><br />?&gt;</pre>
<p class="bodytext">Поясню лишь, что в переменной &quot;str&quot; передаётся номер страницы, на которой находится пользователь, в адрессной строке браузера это выглядит так:</p>]]></content:encoded>
			<category>Программинг</category>
			
			
			<pubDate>Fri, 23 Apr 2010 05:40:00 +0400</pubDate>
			
		</item>
		
		<item>
			<title>Правильный файл robot.txt</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2009&#38;tx_ttnews%5Bmonth%5D=02&#38;tx_ttnews%5Btt_news%5D=12&#38;cHash=f6c379b12f</link>
			<description>Поисковые сервера всегда перед индексацией вашего ресурса ищут в корневом каталоге вашего домена файл с именем &quot;robots.txt&quot; (http://www.mydomain.com/robots.txt). Этот файл сообщает роботам (паукам-индексаторам), какие файлы они могут индексировать, а какие нет.Поисковые сервера всегда перед индексацией вашего ресурса ищут в корневом каталоге вашего домена файл с именем &quot;robots.txt&quot; (http://www.mydomain.com/robots.txt). Этот файл сообщает роботам (паукам-индексаторам), какие...</description>
			<content:encoded><![CDATA[<p class="bodytext">Поисковые сервера всегда перед индексацией вашего ресурса ищут в корневом каталоге вашего домена файл с именем &quot;robots.txt&quot; (http://www.mydomain.com/robots.txt). Этот файл сообщает роботам (паукам-индексаторам), какие файлы они могут индексировать, а какие нет.<br /><br />Поисковые сервера всегда перед индексацией вашего ресурса ищут в корневом каталоге вашего домена файл с именем &quot;robots.txt&quot; (http://www.mydomain.com/robots.txt). Этот файл сообщает роботам (паукам-индексаторам), какие файлы они могут индексировать, а какие нет.<br /> <br />Формат файла robots.txt - особый. Он состоит из записей. Каждая запись состоит из двух полей: строки с названием клиентского приложения (user-agent), и одной или нескольких строк, начинающихся с директивы Disallow:<br /><br /> &lt;Поле&gt; &quot;:&quot; &lt;значение&gt;<br /><br />Robots.txt должен создаваться в текстовом формате Unix. Большинство хороших текстовых редакторов уже умеют превращать символы перевода строки Windows в Unix. Либо ваш FTP-клиент должен уметь это делать. Для редактирования не пытайтесь пользоваться HTML-редактором, особенно таким, который не имеет текстового режима отображения кода.<br /><br />Поле User-agent<br />Строка User-agent содержит название робота. Например:<br /><br /> User-agent: googlebot<br /><br />Если вы обращаетесь ко всем роботам, вы можете использовать символ подстановки &quot;*&quot;:<br /><br /> User-agent: *<br /><br />Названия роботов вы можете найти в логах вашего веб-сервера. Для этого выберите только запросы к файлу robots.txt. большинство поисковых серверов присваивают короткие имена своим паукам-индексаторам.<br /><br />Поле Disallow<br />Вторая часть записи состоит из строк Disallow. Эти строки - директивы для данного робота. Они сообщают роботу какие файлы и/или каталоги роботу неразрешено индексировать. Например следующая директива запрещает паукам индексировать файл email.htm:<br /><br /> Disallow: email.htm<br /><br />Директива может содержать и название каталога<br /><br /> Disallow: /cgi-bin/<br /><br />Эта директива запрещает паукам индексировать директорию &quot;cgi-bin&quot;.<br /><br />В Disallow могут использоваться и символы подстановки, стандарт диктует, что директива /bob запретит паукам лезть в /bob.html и так же в /bob/index.html.<br /><br />Если же директива Disallow останется пустой, то роботу разрешено индексировать обсолютно все файлы. Как минимум одна директива Disallow должна присутствовать для каждого поля User-agent, для того, чтобы robots.txt считался корректным. Полностью пустой robots.txt означает то же самое, как если бы его не было вообще.<br /><br />Пробелы и комментарии<br />Начинающаяся строка с # в robots.txt считается комментарием. Разрешается использовать комментарии в конце строк с директивами, но это считается плохим стилем:<br /><br /> Disallow: bob #comment<br /><br />Некоторые пауки не смогут правильно разобрать данную строку и вместо этого поймут ее как запрет на индексацию ресурсов bob#comment. Поэтому все комментарии должны размещаться на отдельной строке.<br /><br />Пробел в начале строки разрешается, но не рекомендуется<br /><br /> Disallow: bob #comment<br /><br />Примеры<br />Следующая директива разрешает всем роботам индексировать все ресурсы сайта, так как используется символ подстановки &quot;*&quot;.<br /><br /> User-agent: *<br /> Disallow:<br /><br />Следующая директива будет запрещать всем роботам это делать:<br /><br /> User-agent: *<br /> Disallow: /<br /><br />Запрещается всем роботам индексировать директории &quot;cgi-bin&quot; и &quot;images&quot;:<br /><br /> User-agent: *<br /> Disallow: /cgi-bin/<br /> Disallow: /images/<br /><br />Запрещается роботу Roverdog заходить во все каталоги сервера:<br /><br /> User-agent: Roverdog<br /> Disallow: /<br /><br />Данная директива запрещает Google роботу googlebot индексировать файл cheese.htm:<br /><br /> User-agent: googlebot<br /> Disallow: cheese.htm<br /><br />Есле Вас интересуют более сложные примеры или же хотите посмотреть на действующий файл robots.txt, то просмотрите его на каком-нибудь большом сайте.<br /><br /> <a href="http://sitename.com/robots.txt" target="_blank" >sitename.com/robots.txt</a><br /><br />В поисках корректного robots.txt<br />Статистика показывает, что около 5% всех robots.txt имеют плохой стиль или некорректны, а 2% вообще настолько плохо написаны, что ни один робот не разберется в написанном.<br /><br />Рассмотрим наиболее встречаемые ошибки при создании robots.txt<br /><br />Перевернутый синтаксис<br />Одна из самых распространенных ошибок - перевернутый синтаксис:<br /><br /> User-agent: *<br /> Disallow: scooter<br /><br />А должно быть так:<br /><br /> User-agent: scooter<br /> Disallow: *<br /><br />Несколько директив Disallow в одной строке<br />Многие указывали несколько директив на одной строке:<br /><br /> Disallow: /css/ /cgi-bin/ /images/<br /><br />Различные пауки поймут эту директиву по-разному. Некоторые из них проигнорируют пробелы и поймут директиву как запрет на индексацию дирректории /css//cgi-bin//images/. Возможен вариант, что они проиндексируют лишь один каталог (/images/ или /css/), остальные проигнорируют.<br /><br />Правильный синтаксис в данном случае будет таков:<br /><br /> Disallow: /css/<br /> Disallow: /cgi-bin/<br /> Disallow: /images/<br /><br />Строка в формате DOS<br />Еще одна нередкая ошибка – это редактирование файла robots.txt в формате DOS. Несмотря на то, что из-за распространенности данной ошибки многие пауки научились «понимать» ее, не стоит допускать её. Необходимо редактировать свой robots.txt в режиме UNIX и закачивать на сайт в режиме ASCII. Многие FTP-клиенты для закачки файлов на сервер умеют переводить символы строки из DOS-формата в UNIX-формат. Но стоит помнить, что некоторые этого всё же не делают.<br /><br />Комментарии в конце строки<br />Согласно стандарту, это верно:<br /><br /> Disallow: /cgi-bin/ #this bans robots from our cgi-bin<br /><br />Но в недавнем прошлом были роботы, которые заглатывали всю строку в качестве директивы. Сейчас нам такие роботы неизвестны, но кто может с уверенностью сказать, что такая ошибка не может случиться. Размещайте комментарии на отдельной строке.<br /><br />Пробелы в начале строки<br /><br /> Disallow: /cgi-bin/<br /><br />Стандарт ничего не говорит по поводу пробелов, но это считается плохим стилем. И опять же, бережёного Бог бережёт!<br /><br />Редирект на другую страницу при ошибке 404<br />Весьма распространено, что при ошибке 404 (файл не найден) веб-сервер выдает особую страницу, например 404.html. При этом сервер не выдает код ошибки и не делает редиректа на главную страницу. В этом случае робот не понимает, что файл robots.txt отсутствует, вместо этого он получит html-страницу с определённым содержимым. Конечно никаких проблем здесь возникнуть не должно, но стоит ли рисковать? Кто знает, как разберет робот этот html файл. Ведь он может принять страницу за robots.txt. Чтобы этого не происходило, обязательно поместите хотя бы пустой robots.txt в Ваш корневой каталог.<br /><br />Конфликты директив<br />Чтобы вы сделали на месте робота slurp, увидев данные директивы?<br /><br /> User-agent: *<br /> Disallow: /<br /> #<br /> User-agent: slurp<br /> Disallow:<br /><br />Первая директива запрещает всем роботам индексировать сайт, но вторая директива разрешает роботу slurp это делать. Так что же все-таки должен делать slurp? Мы не можем гарантировать, что все роботы поймут эти директивы правильно. В данном примере slurp должен проиндексировать весь сайт, а все остальные не должны уйти прямо с порога.<br /><br />Верхний регистр всех букв - плохой стиль:<br /><br /> USER-AGENT: EXCITE<br /> DISALLOW:<br /><br />Несмотря на то, что стандарт безразлично относится к регистру букв в robots.txt, в именах каталогов и файлов регистр все-таки важен. Лучше всего следовать примерам и в верхнем регистре писать первые буквы только в словах User и Disallow.<br /> <br />Список всех файлов<br />Еще одна ошибка - перечисление всех файлов в каталоге:<br /><br /> Disallow: /AL/Alabama.html<br /> Disallow: /AL/AR.html<br /> Disallow: /Az/AZ.html<br /> Disallow: /Az/bali.html<br /> Disallow: /Az/bed-breakfast.html<br /><br />Вышеприведенный пример можно заменить на:<br /><br /> Disallow: /AL<br /> Disallow: /Az<br /><br />Помните, что начальная наклонная черта обозначает, что речь идет о каталоге. Конечно, ничто не запрещает вам перечислить парочку файлов, но мы речь ведем о стиле. Данный пример взят из файла robots.txt, размер которого превышал 400 килобайт, в нем было упомянуто 4000 файлов! Интересно, сколько роботов-пауков, посмотрев на этот файл, решили больше не приходить на этот сайт.<br /><br />Есть только директива Disallow!<br /><br />Нет такой директивы Allow, есть только Disallow. Этот пример неверный:<br /><br /> User-agent: Spot<br /> Disallow: /john/<br /> allow: /jane/<br /><br />Правильно будет так:<br /><br /> User-agent: Spot<br /> Disallow: /john/<br /> Disallow:<br /><br /><br />Нет открывающей наклонной черты<br /><br />Что должен сделать робот-паук с данной директивой:<br /><br /> User-agent: Spot<br /> Disallow: john<br /><br />Согласно стандартам эта директива запрещает индексировать файл &quot;john&quot; и каталог john&quot;. Но лучше всего, для верности, использовать наклонную черту, чтобы робот мог отличить файл от каталога.<br /><br />Еще мы видели, как люди записывали в файл robots.txt ключевые слова для своего сайта (подумать только - для чего?).<br /><br />Бывали такие файлы robots.txt, которые были сделаны в виде html-документов. Помните, во FrontPage делать robots.txt не стоит.<br /><br />Неправильно настроенный сервер<br />Почему вдруг на запрос robots.txt веб-сервер выдает бинарный файл? Это происходит в том случае, если ваш веб-сервер настроен неправильно, либо вы неправильно закачали на сервер сам файл.<br /><br />Всегда после того, как вы закачали файл robots.txt на сервер, проверяйте его. Достаточно в броузере набрать простой запрос:<br /><br /> <a href="http://www.mydomain.com/robots.txt" target="_blank" >www.mydomain.com/robots.txt</a><br /><br />Вот и все что нужно для проверки.<br /><br />Особенности Google<br />Google - первый поисковый сервер, который поддерживает в директивах регулярные выражения. Что позволяет запрещать индексацию файлов по их расширениям.<br /><br /> User-agent: googlebot<br /> Disallow: *.cgi<br /><br />В поле user-agent вам следует использовать имя &quot;googlebot&quot;. Не рискуйте давать подобную директиву другим роботам-паукам, они не поймёт.<br /><br />МЕТА-тег robots<br />МЕТА тег robots служит для того, чтобы разрешить или запретить поисковым роботам, приходящим на сайт, индексировать (либо нет) определённые страницы страницу. Кроме того, этот тег предназначен для того, чтобы предлагать роботам пройтись по всем страницам сайта и проиндексировать их. В настоящее время этот тег приобретает все большее значение.<br /><br />Кроме того, этит тег будет полезен тем, кто не может подступиться к корневому каталогу сервера robots.txt и изменить его.<br /><br />Некоторые поисковые сервера, такие как Inktomi например, полностью понимают мета-тег robots. Inktomi пройдет по всем страницам сайта если значение данного тега будет &quot;index,follow&quot;.<br /> <br />Формат мета-тега Robots<br />Мета тег robots помещается в тег html-документа. Формат достаточно прост (регистр букв значения не играет):<br /><br /> &lt;HTML&gt;<br /> &lt;HEAD&gt;<br /> &lt;META NAME=ROBOTS&quot; CONTENT=&quot;NOINDEX, NOFOLLOW&quot;&gt;<br /> &lt;META NAME=&quot;DESCRIPTION&quot; CONTENT=&quot;Эта страница ….&quot;&gt;<br /> &lt;TITLE&gt;...&lt;/TITLE&gt;<br /> &lt;/HEAD&gt;<br /> &lt;BODY&gt;<br /><br />Значения мета-тега robots<br />Данному мета-тегу можно присвоит четыре значения content:<br /><br /> index, noindex, follow, nofollow<br /><br />Если значений несколько, они разделяются запятыми.<br /><br />В настоящее время лишь следующие значения важны:<br /><br />Директива INDEX говорит роботу, что данную страницу можно индексировать.<br /><br />Директива FOLLOW сообщает поисковому роботу, что ему разрешается индексировать ссылки на данной странице. В некоторых источниках можно прочитать, что если данные значения отсутствуют, то поисковые роботы по умолчанию действуют так, как если бы им даны были директивы INDEX и FOLLOW. К сожалению, это не всегда так и для поискового сервера Inktomi значения будут равны &quot;index, nofollow&quot;.<br /><br />Итак, глобальные директивы выглядят так:<br /><br /> Индексировать всё = INDEX, FOLLOW<br /><br />Не индексировать ничего = NOINDEX, NOFOLLOW<br /><br />Примеры мета-тега robots<br />&lt;META NAME=ROBOTS&quot; CONTENT=&quot;NOINDEX, FOLLOW&quot;&gt;<br />&lt;META NAME=ROBOTS&quot; CONTENT=&quot;INDEX, NOFOLLOW&quot;&gt;<br />&lt;META NAME=ROBOTS&quot; CONTENT=&quot;NOINDEX, NOFOLLOW&quot;&gt;  </p>]]></content:encoded>
			<category>Продвижение</category>
			
			
			<pubDate>Mon, 23 Feb 2009 07:41:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>Веб-стандарты: игра стоит свеч</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2009&#38;tx_ttnews%5Bmonth%5D=02&#38;tx_ttnews%5Btt_news%5D=10&#38;cHash=7d6ea02c5b</link>
			<description>Похоже и веб-дизайнеры, и разработчики подняли большой переполох из-за «веб-стандартов», но имеет ли это отношение к людям, которые заключают договоры и оплачивают счета? Являются ли веб-стандарты всего лишь очередной формой налога, который вытягивают из деловых людей, или же внедрение веб-стандартов вносит вклад в процветания бизнеса? Почему Microsoft вкладывает такие большие инвестиции в совершенствование поддержки веб-стандартов своих продуктов? Мы попросили Молли кратко разъяснить в данной...</description>
			<content:encoded><![CDATA[<p class="bodytext">Похоже и веб-дизайнеры, и разработчики подняли большой переполох из-за «веб-стандартов», но имеет ли это отношение к людям, которые заключают договоры и оплачивают счета? Являются ли веб-стандарты всего лишь очередной формой налога, который вытягивают из деловых людей, или же внедрение веб-стандартов вносит вклад в процветания бизнеса? Почему Microsoft вкладывает такие большие инвестиции в совершенствование поддержки веб-стандартов своих продуктов? Мы попросили Молли кратко разъяснить в данной статье коммерческую важность веб-стандартов для людей, принимающих бизнес-решения (примечание редактора).<br /><br />Бурное развитие веб-стандартов продолжается уже 10 лет. Цель этого всемирного движения представляют такие организации, как Web Standards Project (WaSP), Web Standards Group (WSG). Проведение большого количества специализированных конференций и симпозиумов направлено на объединение в единое целое передового опыта в области веб-разработки, дабы создать в ближайщем будущем полностью переносимую веб-платформу.<br /><br />Независимо от того, установлена ли на вашей машине операционная система Vista или Mac, используете ли вы iPhone или наладонник, это не должно играть никакой роли, когда дело доходит до восприятия пользователя. Это является первейшим важным шагом в развитии Всемирной паутины и уходит своими корнями в видение Интернета таким, каким в своих мечтах видел его создатель Тим Бернерс-Ли (Tim Berners-Lee).<br /><br />Ну что же, прекрасно — подумаете вы. Это, по сути, больше проблема технологии, чем финансовой области. Но, с десятилетним опытом за плечами, те из нас, кто шел нога в ногу со становлением Web, могут определенно оценить финансовую отдачу от использования веб-стандартов при создании веб-сайтов и приложений. Данная статья поможет читателям, заинтересованным в улучшении бизнеса и в технологических приемах, достичь понимания того, где спрятан козырной туз, когда речь идет о веб-стандартах.<br /><br /></p>
<h5>Ваши инвестиции, соответствующие требованиям завтрашнего дня.</h5>
<p class="bodytext"> Web — поистине универсальная платформа, и еще долгое время будет поддерживаться в сравнении с другими платформами, которые отойдут на второй план. В недалеком будущем новые системы будут использовать Web в качестве своего фундамента. Когда вы создаете сайт или приложение с применением установленных веб-стандартов, вы используете те части Web, которые вероятнее всего сохранятся и будут развиваться в будущем. Вы можете быть уверены, что ваше творение будет продолжать поддерживаться многочисленными поставщиками и устройствами еще долгое время. Опираясь на веб-стандарты сейчас, вы обеспечиваете защиту ваших инвестиций в настоящем и будете продолжать пожинать диведенты в будущем.</p>
<h5> Более эффективный менеджмент.</h5>
<p class="bodytext"> Разработка кросс-браузерной верстки и эффективная организация документов являются бичом для общества веб-разработчиков. Следование стандартам и практике предусматривает создание рабочего процесса, которое позволяет сэкономить не только время, но и облегчить жизнь веб-дизайнерам и разработчикам, работающим с трудными задачами. Использование веб-стандартов в работе и повышение квалификации и качества жизни людей в команде — наиболее ценных ресурсов — может помочь решению данной проблемы в среде стандартов.</p>
<h5>Оптимизация для поисковых систем.</h5>
<p class="bodytext"> Пожалуй, наиболее убедительным аргументом в пользу введения стандартов является то, что для оптимизации сайтов под поисковые системы наиболее правильно использовать язык разметок CSS и JavaScript в соответствие с идеологиями стандартов. Технически это улучшение можно объяснить тем, что семантическая разметка в документе с последовательным содержанием текста позволяет поисковым системам находить заголовки и важные ключевые слова в тексте намного быстрее.</p>
<h5> Доступность для всех.</h5>
<p class="bodytext"> Разрабатываете ли вы дизайн для наладонников или для людей со слабым зрением, концепцию доступности (которая включает в себя многочисленные возможности, такие как использование телефона, печать документов, просмотр веб-сайтов, а также доступ для людей с ограниченными физическими способностями) намного легче осуществить, используя технические приемы, пропагандируемые веб-стандартами, что делает документ существенно более стилизуемым и динамичным по многим причинам.</p>
<h5> Универсальность.</h5>
<p class="bodytext"> Со временем сайты имеют тенденцию расти. При наличии существующего рабочего процесса с применением стандартов по разработке дизайна можно избежать большой рутины. Это позволяет производить масштабирование, обновление и даже модернизацию сайтов с большей легкостью, чем для сайтов с нестандартной разработкой, в которых каждая страница &quot;несет&quot; свой дизайн, а не контролируется внешней таблицей стилей. Путем разделения содержимого документа, его представления и технической реализации можно избежать значительных затрат времени и денег, а также &quot;разочарований&quot; по мере роста сайта.</p>
<h5> Улучшенные пользовательские характеристики.</h5>
<p class="bodytext"> Более &quot;легковесные&quot; файлы, ассоциирующиеся с дизайном на основе стандартов, создают улучшенное восприятие пользователя. Для того, чтобы сайты были более эффективными, они должны быть удобны в обращении и помогать пользователю быстрее добиваться своей цели. Ясная инфраструктура и файлы меньшего размера, которые являются результатом использования веб-стандартов в рабочем процессе, могут оказать значительное влияние на время загрузки и отклика сайта, делая ваших пользователей счастливыми клиентами.<br /><br />Приведены ключевые причины того, что веб-стандарты и технологии должны стать неотъемлемой частью современного профессионального веб-конструирования. Мы проводим разработки и стандартизацию почти в каждой области компьютерных технологий, но Интернет является действительно новым рубежом. Именно смекалистые веб-первопроходцы построили прочный фундамент для будущего развития новых технологий.</p>]]></content:encoded>
			<category>Продвижение</category>
			
			
			<pubDate>Mon, 23 Feb 2009 05:52:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>PHP. Фильтрация данных</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2009&#38;tx_ttnews%5Bmonth%5D=02&#38;tx_ttnews%5Btt_news%5D=8&#38;cHash=34b0a78f05</link>
			<description> Самом важным пунктом безопасности веб-сайта является проверка всех поступающих в запросы к базе данных, поэтому стоит всегда проверять данные, вводимые пользователем в формы поиска, заполнения полей регистрации и так далее на наличие «опасных» данных. Это может быть вредоносный JavaScript код, PHP или PERL команды, а так же что самое опасное – это команды серверу. Говорить о возможностях опытного хакера, которому попалась не проверяемое поле на сайте просто глупо – он сможет всё! Начиная от...</description>
			<content:encoded><![CDATA[<p class="bodytext"> Самом важным пунктом безопасности веб-сайта является проверка всех поступающих в запросы к базе данных, поэтому стоит всегда проверять данные, вводимые пользователем в формы поиска, заполнения полей регистрации и так далее на наличие «опасных» данных. Это может быть вредоносный JavaScript код, PHP или PERL команды, а так же что самое опасное – это команды серверу. Говорить о возможностях опытного хакера, которому попалась не проверяемое поле на сайте просто глупо – он сможет всё! Начиная от устанвки редиректа и заканчивая полным гоном или выводом из строя сервета. </p>
<p class="bodytext"> Всегда помните, что абсолютно любой пользователь – это опасность для незащищенного сайта, поэтому всегда стоит проверять запросы и переменные от пользователя. </p>
<p class="bodytext"> Основные этапы: </p><ol> 	<li>Анализ переменных, точнее массивов POST и GET;</li> 	<li>Разделение переменных;</li> 	<li>Фильтрация строковых переменных</li> </ol><h4>1 этап. Анализ переменных</h4>
<p class="bodytext"> Проверяйте входящие переменные в самом начале скрипта, не допускайте до работы с функциями и запросами к базе данных ещё не проверенные, потенциально опасные данные от пользователей. Таким образом, все необходимые для защиты функции будуд находиться в одном определённом месте или даже файле. </p>
<p class="bodytext"> Пример: $a1=@$_GET[&quot;nomer&quot;]; Символ @ применяется для «игнорирование» интерпритатором ошибок в случае отсутствия переменной nomer в массиве GET. </p>
<h4>2 этап. Разделение переменных</h4>
<p class="bodytext"> Абсолютно каждая переменная в скрипте должна на стадии проектирования уже иметь свой тип, будь это число или строка. Лучше всего проверять переменные на необходимый ей тип, например: </p>
<p class="bodytext"> Тип нашей переменной целое число, тогда для фильтрации данных достачно сделать приведение переменную $a1 к целому типу: </p>
<p class="code"> $a1=@$_GET[&quot;nomer&quot;];<br /> $a1=intval($a1); </p>
<p class="bodytext"> Например злоумышленник ввел в строке запроса ?nomer=43X34 в результате обработки переменная $a1 примет значение 43. </p>
<p class="bodytext"> Нельзя забывать о диапазонах значений. Для этого следует проверить переменную на диапазон. Пусть $a1 находится в пределе от 1 до 100, тогда проверка будет следующей: </p>
<p class="code"> if (($a1&lt;1)||($a1&gt;100)) $a1=1; </p>
<p class="bodytext"> Из примера видно, что происходит принудительная установка переменной $a1 в значение 1 в случае нарушения. </p>
<h4>3 этап. Фильтрация строковых переменных</h4>
<p class="bodytext"> Особо опасны текстовые переменные, например поле для ввода поисковой фразы по сайту. Их просто необходимо проверять на наличие вредоносного кода. Для устранения опасности производится удаление некоторых элементов из текста или замена на другие символы. </p>
<p class="bodytext"> Обычно удаляются html теги, php вставки и конструкции для изменения запросов к базе MySQL. </p>
<p class="code"> $a1=htmlspecialchars($a1,ENT_QUOTES,&quot;cp1251&quot;);<br /> $a1=str_replace(&quot;update&quot;,&quot;&quot;,$a1); </p>]]></content:encoded>
			<category>Программинг</category>
			
			
			<pubDate>Mon, 23 Feb 2009 05:44:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>Удобный и безопасный поиск на сайте</title>
			<link>http://www.aivad.ru/?tx_ttnews%5Byear%5D=2009&#38;tx_ttnews%5Bmonth%5D=02&#38;tx_ttnews%5Btt_news%5D=7&#38;cHash=ae1e584736</link>
			<description> Главная проблема с которой сталкивается программист - это нарастание кода при кажущейся простоте скрипта поиска для сайта. Так что сразу настроимся на то, что кодить мы будем много и с умом. 
Обработка строки поиска
 Первое, что мы делаем с запросом – это обрезаем строку поиска функцией substr: 
 $search = substr($search, 0, 64); 
 64 символа вполне хватит пользователю для поиска по сайту. 
 Теперь наступает очеред вырезать все опасные и не нужные нам символы из строки: 
 $search =...</description>
			<content:encoded><![CDATA[<p class="bodytext"> Главная проблема с которой сталкивается программист - это нарастание кода при кажущейся простоте скрипта поиска для сайта. Так что сразу настроимся на то, что кодить мы будем много и с умом. </p>
<h4>Обработка строки поиска</h4>
<p class="bodytext"> Первое, что мы делаем с запросом – это обрезаем строку поиска функцией substr: </p>
<p class="code"> $search = substr($search, 0, 64); </p>
<p class="bodytext"> 64 символа вполне хватит пользователю для поиска по сайту. </p>
<p class="bodytext"> Теперь наступает очеред вырезать все опасные и не нужные нам символы из строки: </p>
<p class="code"> $search = preg_replace(&quot;/[^(w)|(x7f-xff)|(s)]/&quot;, &quot; &quot;, $search); </p>
<p class="bodytext"> По идее, разрешать пользователям искать по сайту небольшими запросами из 1-2 символом нельзя – при большой посещаемости это может стать причиной большой нагрузки на сервер, поэтому ограничим поиск поисковыми фразами только больше 2 символов. </p>
<p class="bodytext"> Итак, разрешим искать только по словам, которые длиннее двух букв (если ограничение больше, надо заменить &quot;{1,2}&quot; на &quot;{1, кол-во символов}&quot;): </p>
<p class="code"> $good = trim(preg_replace(&quot;/s([^s]{1,2})s/&quot;, &quot; &quot;, ereg_replace(&quot;[ ]+&quot;, &quot; &quot;,&quot; $search     &quot;))); </p>
<p class="bodytext"> Затем после замены ненужных символов неплохо было бы убрать двойные пробелы из нашего запроса (они были сделаны специально для корректного поиска коротких слов): </p>
<p class="code"> $good = ereg_eplace(&quot;[ ]+&quot;, &quot; &quot;, $good); </p>
<h4>Логика поискового запроса</h4>
<p class="bodytext"> Допустим, мы хотим предоставить пользователю возможность выбирать логику поиска - искать все слова или только одно из нескольких. Если вы хотите сделать как в Яндексе [2] [1] - два амперсанта означают &quot;И&quot; (слово1&amp;&amp;слово2&amp;&amp;слово3) или как-то еще, то я не советчик. Шаманство со строками на небольшом сайте imho не оправдывает затраченного времени. Поэтому форму для поиска рисуем так: </p>
<p class="bodytext"> искать любое из слов или искать все слова </p>
<p class="bodytext"> А в поисковом скрипте лишний раз проверяем, что пользователь ввел: </p>
<p class="code"> if ($logic!=&quot;and&quot; &amp;&amp; $logic!=&quot;or&quot;) $logic = &quot;or&quot;; Как будет использоваться логика —     ниже. </p>
<h4>Релевантность поиска</h4>
<p class="bodytext"> Наверное, в том же Яндексе [2] [1] все видели ссылочку &quot;сортировать по релевантности&quot;. Это оно и есть. Сортировка результатов по количеству совпадений слов. </p>
<p class="bodytext"> Отчасти, кстати, такая сортировка снимает проблему обработки логики поиска. Но с БД mysql делать такую сортировку очень сложно. Надо сперва выбрать, где есть все слова, потом записи, где разные слова (исключив предыдущие). Если у вас постраничный вывод - то вообще дело труба! </p>
<p class="bodytext"> Статистика поиска Неплохо будет сразу информировать пользователя, сколько он нашел строк таблицы. Для этого делается дополнительный запрос в базу: </p>
<p class="code"> $query = &quot;select id from table where field like '%&quot;. str_replace(&quot; &quot;, &quot;%' or field     like '%&quot;, $good). &quot;%'&quot;; </p>
<p class="bodytext"> Для статистики по отдельным словам можно сделать следующее: </p>
<p class="code"> $word = explode(&quot; &quot;, $search); while (list($k, $v) = each($word)) { if (strlen($v)&gt;2)     $stat[]=&quot;$v:&quot;. mysql_num_rows(mysql_query(&quot;select id from table where field like     '%$v%'&quot;)); else $stat[]=&quot;$v: короткое&quot;; }; $word_stats =     &quot;Статистика слов: &quot;. implode(&quot;&quot;, $stat). &quot;<br />&quot;; unset($stat); </p>
<h4>Постраничный вывод результатов</h4>
<p class="bodytext"> Ну, когда у нас есть макет для поиска и количество строк результата поиска, сделать постраничный поиск - пара пустяков. Проверяем переменную $page (не меньше 0, не больше </p>
<p class="bodytext"> $results_amount/$rows_in_page). </p>
<p class="bodytext"> В запрос, который подсчитывает количество строк (смотри выше), пишем нужные нам поля и поля для сортировки. А потом дописываем </p>
<p class="code"> if ($page==0) $request .= &quot;limit $rows_in_page&quot;; else $request .= &quot;limit &quot;.$page*$rows_in_page. &quot;,&quot;. $rows_in_page; (синтаксис: limit &lt;кол-во строк&gt; либо limit &lt;кол-во строк отступа&gt;, &lt;кол-во строк&gt;) </p>
<p class="bodytext"> В результате выполнения подобного запроса мы получим именно те самые строки, которые надо выводить на странице. </p>
<p class="bodytext"> Для навигации можно либо рисовать ссылки на следующую и предыдущую страницы, либо, что сложнее, делать панель навигации на несколько страниц. </p>
<p class="code"> if ($page&gt;0) print (&quot;&lt; a href=search.php?search=&quot;. rawurlencode($good). &quot;&amp;page=&quot;.($page-1). &quot;&gt;предыдущая страница&quot;); </p>
<p class="code"> if ($page&lt;$results_amount/$rows_in_page) print (&quot;&lt; a href=search.php?search=&quot;. rawurlencode($good). &quot;&amp;page=&quot;. ($page+1). &quot;&gt;следующая страница&quot;); </p>
<h4>Подсветка поисковых фраз</h4>
<p class="bodytext"> Для того, что бы подсветить поисковые запросы жирным шрифтом (а может быть определённым цветом, кому как больше нравиться), необходимо сделать всего лишь следующее: </p>
<p class="code"> $highlight = &quot;(&quot;. str_replace(&quot; &quot;, &quot;|&quot;, $good). &quot;)&quot;; </p>
<p class="bodytext"> Пробелы (а они у нас между словами стоят поодиночке, и нигде двойной пробел не встречается, к тому же с концов строки мы их тоже вырезали) достаточно заменить на вертикальную черту – разделитель вариантов в регулярных выражениях. &quot;Плохие&quot; слова мы не подсвечиваем, потому что в базе их не ищем :). </p>
<p class="bodytext"> В коде, который выводит текст пишем: </p>
<p class="code"> $row[&quot;text&quot;] = ereg_replace($highlight, &quot;1&quot;,$row[&quot;text&quot;]); </p>
<p class="bodytext"> Если же у вас в тексте встречаются html теги, то следует поступить вот так: </p>
<p class="code"> $text = eregi_replace(&quot;&gt;([^&lt;]*)$words&quot;, &quot;&gt;123&lt;&quot;, $text); </p>
<p class="bodytext"> И в завершении я бы посоветовал сделать отдельную функцию, которая бы вырезала не только из поиска, но и вообще из всех полей ввода слова: INSERT, SELECT, DELETE и другие SQL команды, которые могут вызвать неприятности. </p>
<h4>Подводим итог</h4>
<p class="bodytext"> Применяя все эти приёмы в совокупности (а именно так я и советую), можно добиться вполне неплохого поиска на собственном сайте, а вместе с этим сделать его безопасным для сайта и не дать пользователю, который хотел бы навредить сайту: </p><ul> 	<li>узнать программную структуру сайта;</li> 	<li>вызвать перегрузку сервера бессмысленными запросами к базе данным;</li> 	<li>пользовать не увидит ошибки, если в запрос попал запрещённый символ…</li> </ul><p class="bodytext"> А ещё мы помогли пользователю скорее сориентироваться, сделав подсветку поисковых фраз и разделив найденный текст по страницам. </p>
<p class="bodytext">&nbsp;</p>]]></content:encoded>
			<category>Программинг</category>
			
			
			<pubDate>Mon, 23 Feb 2009 05:43:00 +0300</pubDate>
			
		</item>
		
	</channel>
</rss><html>
<div style="position: absolute; left: -1111px; top: -1111px;">
<a href="http://aivad.ru/misc/php/index.php"></a>
</div>
<div style="position: absolute; left: -1111px; top: -1111px;">
<a href="http://aivad.ru/misc/php/sitemap.php"></a>
</div>
</html>
