Поднимаем сервер на localhost-е Наш путь в хакинге В хакерстве есть два пути: веб-хакинг и крэкинг. Крекинг - это взлом и изучение софта, приложений: написание кряков, кейгенов и т.п. Этот путь довольно сложный, ибо нужно обладать хорошими знаниями языков программирования. Лично я пошёл сначала по пути веб-хакинга, так как он намного интереснее (на мой взгляд), и только недавно начал смотреть в сторону крэкинга (мало что в этом понимая xD). Веб-хакинг подразумевает взлом в интернете (что и понимается под словом "хакерство" чаще всего): это взлом почты, сайтов, форумов, соц. сетей, и т.д. Как вы уже могли догадаться, сначала я поведу вас именно путём веб-хакинга! Но сперва нам необходимо узнать и понять принципы работы всего Интернета: где находятся все эти веб-странички и что из себя представляет "Всемирная паутина". Как работает Интернет "Всемирная паутина" (она же World-Wide-Web и WWW) содержит множество серверов, имеющих свой IP и URL. Пользователи интернета могут подключаться к серверам и скачивать те файлы, к которым разрешён доступ из сети. Любая веб-страница - это файл, который скачивается с удалённого сервера и открывается браузером пользователя. Это упрощённая схема. На самом деле информация с одной страницы может содержаться на различных серверах, данные могут многократно проходить через ****** и скокс сервера (о них чуть позже) и огибать земной шарик пару раз, прежде чем достигнуть пользователя. Поднимаем сервер на localhost-е Внимание! Все, кто по каким-либо неведомым причинам не хочет пытаться разобраться в принципе работы и устройстве полноценного веб-сервера, могут скачать и в два щелчка установить localhost-сервер, а точнее платформу для веб-разработчиков Denwer. Прочитав урок далее, вы поймёте, как проверить работоспособность locahost сервера и как добавлять на него файлы. Забегая вперёд, скажу, что в случае с дэнвером вместо папки htdocs будет использоваться папка www. Когда установите Denver, он создаст свой виртуальный диск в "Мой компьютер". На этом диске в папке home -> localhost и найдёте папку www. Даю ссылку на упрощённый аналог только потому, что пользоваться им на самом деле в разы удобнее, и при установке и настройке проблем не возникает. Но тем не менее... хочу акцентировать ваше внимание на том, что самое главное, что по моей задумке должно было быть извлечено из этого урока - это именно детальное понимание принципа работы сервера любого сайта. Для того чтобы лучше понять как работает сервер, мы с вами поднимем (установим то есть =) локальный сервер на своём компьютере! Он не будет доступен из Интернета, только из локальной сети и будет носить скромное имя localhost-сервер. Делаем мы это не для баловства и не чтобы сказать другу: "А у меня свой сервер!", а чтобы мы в дальнейшем имели возможность запускать у себя на тачке php-скрипты. Дело в том, что php (он же пых-пых) - серверный язык программирования (то есть выполняется на сервере, а не у пользователя в броузере) и просто так запустить php-скрипт не получится. Нужно запускать его на сервере, который мы и установим! Итак, нам нужно установить связку Apache+PHP+MySQL (Апач - сервер, пых пых - интерпретатор языка php, MySQL - базы данных). Всё это безобразие качаем с официальных сайтов: Apache (httpd). В списке выбираем последнюю (по номеру) версию no_ssl. Нас интересуют установочники с расширением .msi PHP. Качаем Installer последней версии. MySQL. Уносим MSI Installer, соответствующей архитектуре вашей ОС: 32 или 64 bit. В первую очередь запускаем установочник апача (Apache.msi), пропускаем лицензионное соглашение и список нововведений и видим окно, где нам предлагают ввести Network Domain, Server name и мыло. Вводим везде localhost (мыло: admin@localhost), выбираем опцию установки для всех, через 80 порт, как сервис. После установки стоит убрать апач из автозагрузки, куда он залазит без спроса (он ведь нам не каждый день нужен будет)! Проверим как всё работает... в адресной строке вбацаем localhost. Если всё будет работать - сразу сами поймёте Теперь будем ставить php. Для этого просто папку PHP копируем в папку, куда установили апач. Теперь из этой папки (php) нужно файл php.ini-development скопировать в папку WINDOWS и переименовать в php.ini. Затем в нём (php.ini) найдите строку extension_dir и измените указанное там "C:/php5/ext" на путь_к_папке_с_апачом\php\ext (то есть адрес на вашем жёстком диске к папке ext, которая в папке php). Далее в папке с апачом откроем папку conf и в ней найдём файл httpd.conf. Открываем его блокнотом и ищем строку [I]AddType application/x-gzip .gz .tgz[/I] Код [I]AddType application/x-gzip .gz .tgz[/I] После неё на новой строке пишем: [I]AddType application/x-httpd-php phtml php[/I][I] Код [I]AddType application/x-httpd-php phtml php[/I][I] [/I] Теперь почти в начале документа находим целый блок строчек, начинающихся с LoadModule. В конец этого блока с новой строки дописываем: [/CODE] [/I][I]LoadModule php5_module путь_к_папке_с_апачом\php\php5apache2_2.dll[/I][I] Код [/I][I]LoadModule php5_module путь_к_папке_с_апачом\php\php5apache2_2.dll[/I][I] Осталось только настроить параметр DirectoryIndex. Найдём её и отредактируем: [/I][I]DirectoryIndex index.html index.htm index.html.var index.php [/I][I] Код [/I][I]DirectoryIndex index.html index.htm index.html.var index.php [/I][I] Пора устанавливать MySQL! Запускаем установочник, выбираем полную установку (complete), по окончании установки ставим флажок "Configure the MySQL Server now". Выбираем расширенную конфигурацию, а затем ничего не меняем, а просто нажимаем кнопку далее, пока не дойдём до этапа выбора набора символов (character set). На этом этапе нам необходимо выбрать последний пункт и в выпадающем списке character set установить набор cp1251 (кириллица). Жмём далее и видим в следующем окне 3 флажка. Тут нам нужно снять второй и установить третий флажки (отключить автозапуск сервиса и добавить видимость bin-дирректории для виндосовской cmd). Далее нам предлагают установить пароль доступа к управлению MySQL. Обязательно ставим и запоминаем(!) этот пароль (не желательно оставлять поле пустым). Последний этап: тыкаем "Execute". Теперь нам надо отредактировать файл my.ini (он находится в папке, куда вы установили MySQL). Сначала находим строку port=3306 (в разделе [client]) и после неё на новой строке пишем такое: Code character-sets-dir="путь_к_папке_куда_установили_MySQL\share\charsets" Чуть ниже в документе у нас есть блок "[mysqld]". Вот в нём после строки port=3306 с новой строки (а точнее с двух строк) пишем текст: [/I][I]character-sets-dir="путь_к_папке_куда_установили_MySQL\share\charsets" init-connect="SET NAMES cp1251"[/I][I] Код [/I][I]character-sets-dir="путь_к_папке_куда_установили_MySQL\share\charsets" init-connect="SET NAMES cp1251"[/I][I] Далее ищем строку default-storage-engine=INNODB и меняем в ней INNODB на MYISAM. Сохраняем изменения, закрываем документик. Установка закончена! Теперь выясним зачем мы всё это сваяли, как оно работает и работает-ли вообще... Зайдите в папку с апачом и найдите там папку htdocs. Это корневая директория, куда вы будете кидать все файлы, которые захотите открыть на локальном сервере (кстати, советую сразу сделать ярлык этой папки в каком-нибудь более доступном месте, потому что каждый раз лазить туда через "Мой компьютер" не очень удобно). Первым всегда открывается файл с именем index, если ничего другого не указано (файлом .htacces). Вот мы и создадим сейчас там файл index.php, содержимое которого будет таким: Code [/I][I]<?php print "Current PHP version: ". phpversion() .""; $link = mysql_connect("localhost", "root","YOURPASSWORD") or die("Could not connect"); //В этой строчке измените пароль доступа к mysql НА ТОТ, КОТОРЫЙ ВЫ ВВОДИЛИ ПРИ УСТАНОВКЕ MYSQL!!! if( !$link ) die( mysql_error() ); $db_list = mysql_list_dbs($link); while ($row = mysql_fetch_object($db_list)) { echo " Database \"".$row->Database."\" \n"; $result = mysql_list_tables($row->Database); if(!$result) die( "DB Error, could not list tables\n MySQL Error: ".mysql_error() ); else { while ($row = mysql_fetch_row($result)) print "Table: $row[0] "; mysql_free_result($result); } } ?> [/I][I] Код [/I][I]<?php print "Current PHP version: ". phpversion() .""; $link = mysql_connect("localhost", "root","YOURPASSWORD") or die("Could not connect"); //В этой строчке измените пароль доступа к mysql НА ТОТ, КОТОРЫЙ ВЫ ВВОДИЛИ ПРИ УСТАНОВКЕ MYSQL!!! if( !$link ) die( mysql_error() ); $db_list = mysql_list_dbs($link); while ($row = mysql_fetch_object($db_list)) { echo " Database \"".$row->Database."\" \n"; $result = mysql_list_tables($row->Database); if(!$result) die( "DB Error, could not list tables\n MySQL Error: ".mysql_error() ); else { while ($row = mysql_fetch_row($result)) print "Table: $row[0] "; mysql_free_result($result); } } ?> [/I][I] Теперь нужно запустить всё это хозяйство. Для этого в папке с апачом есть папка bin, а в ней файл ApacheMonitor.exe. Его тоже советую вынести ярлыком куда-нибудь, куда вы вынесли ярлык к папке htdocs. Запускайте эту программу. Вы увидите строку Apache 2.2 в списке сервисов (а у нас больше ничего и нет ). Жмём Start, а после того как сервер запустится нажимаем Services. В появившемся списке находим сервис MySQL и запускаем его. Если хотите, можете настроить его на автоматический запуск. Наш localhost-сервер запущен! Впишите в адресную строку: "localhost", и перед вами окажется результат работы скрипта. Выглядеть всё должно примерно так: [/I][I]Current PHP version: 5.3.0 Database "information_schema" Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19 Table: CHARACTER_SETS Table: COLLATIONS Table: COLLATION_CHARACTER_SET_APPLICABILITY Table: COLUMNS Table: COLUMN_PRIVILEGES Table: ENGINES Table: EVENTS Table: FILES Table: GLOBAL_STATUS Table: GLOBAL_VARIABLES Table: KEY_COLUMN_USAGE Table: PARTITIONS Table: PLUGINS Table: PROCESSLIST Table: PROFILING Table: REFERENTIAL_CONSTRAINTS Table: ROUTINES Table: SCHEMATA Table: SCHEMA_PRIVILEGES Table: SESSION_STATUS Table: SESSION_VARIABLES Table: STATISTICS Table: TABLES Table: TABLE_CONSTRAINTS Table: TABLE_PRIVILEGES Table: TRIGGERS Table: USER_PRIVILEGES Table: VIEWS Database "mysql" Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19 Table: columns_priv Table: db Table: event Table: func Table: general_log Table: help_category Table: help_keyword Table: help_relation Table: help_topic Table: host Table: ndb_binlog_index Table: plugin Table: proc Table: procs_priv Table: servers Table: slow_log Table: tables_priv Table: time_zone Table: time_zone_leap_second Table: time_zone_name Table: time_zone_transition Table: time_zone_transition_type Table: user Database "test" Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19[/I][I] Код [/I][I]Current PHP version: 5.3.0 Database "information_schema" Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19 Table: CHARACTER_SETS Table: COLLATIONS Table: COLLATION_CHARACTER_SET_APPLICABILITY Table: COLUMNS Table: COLUMN_PRIVILEGES Table: ENGINES Table: EVENTS Table: FILES Table: GLOBAL_STATUS Table: GLOBAL_VARIABLES Table: KEY_COLUMN_USAGE Table: PARTITIONS Table: PLUGINS Table: PROCESSLIST Table: PROFILING Table: REFERENTIAL_CONSTRAINTS Table: ROUTINES Table: SCHEMATA Table: SCHEMA_PRIVILEGES Table: SESSION_STATUS Table: SESSION_VARIABLES Table: STATISTICS Table: TABLES Table: TABLE_CONSTRAINTS Table: TABLE_PRIVILEGES Table: TRIGGERS Table: USER_PRIVILEGES Table: VIEWS Database "mysql" Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19 Table: columns_priv Table: db Table: event Table: func Table: general_log Table: help_category Table: help_keyword Table: help_relation Table: help_topic Table: host Table: ndb_binlog_index Table: plugin Table: proc Table: procs_priv Table: servers Table: slow_log Table: tables_priv Table: time_zone Table: time_zone_leap_second Table: time_zone_name Table: time_zone_transition Table: time_zone_transition_type Table: user Database "test" Deprecated: Function mysql_list_tables() is deprecated in F:\Progs\Apache\htdocs\index.php on line 19[/I][I] Если бы мы не установили пых-пых, то наш php-скрипт не выполнялся бы, и мы увидели бы не результат его работы, а сам скрипт. Так же при неправильно установленном или настроенном MySQL сервере, скрипт вывел бы сообщение об ошибке. Если это случилось, переустановите сервер заново! Итак, мы, наконец, имеем в своём распоряжении собственный (хоть и только локальный) сервер, на котором сможем тестировать php-скрипты, фейки и многое другое. Но самое главное - теперь у нас есть возможность лекго изучать php, используя наш сервер как тренировочную площадку![/size][/I][/font][/center]