PHP.

Возможно, вы обратили внимание, что HTML-код, отвечающий за меню сайта, дублируется на всех трех страницах. Если мы, например, захотим поменять название пункта меню "Страница со списком" на "Страница со списком фруктов", придется делать это три раза и следить, чтобы мы нигде не ошиблись. А что если страниц у нас не три, а триста? Кроме того, на большинстве сайтов есть списки статей, форумы, доски объявлений, новости, как все это поддерживать?

Здесь нам на помощь приходит серверный язык программирования. В этом обзоре я рассматриваю язык PHP, самый популярный в сети. Но в отличие от HTML, который один и используется везде, серверных языков много. Есть еще Perl (PHP и Perl поддерживаются на любом платном UNIX-хостинге), С#, Java (Windows-хостинг), вообще говоря, в качестве серверного языка может выступать любой язык программирования. Рассмотрим подробнее, как происходит взаимодействие между клиентом (проще говоря, браузером) и сервером. Когда вы обращаетесь к какому-то сайту, ваш браузер посылает ему запрос, например, такой:

код скопирован в буфер
  1. POST http://forum.scriptscript.ru/post/add/ HTTP/1.1
  2. Accept: */*
  3. Accept-Language: ru
  4. Accept-Encoding: gzip, deflate
  5. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
  6. Host: www.scriptscript.ru
  7. Connection: Keep-Alive
  8. topic_title=название темы&text=текст сообщения

Запрос в общем случае состоит из заголовков, которые идут каждый с новой строки и тела запроса, которое отделяется от заголовков пустой строкой. Заголовки содержат служебную информацию о том, какую именно ссылку мы открываем, браузере пользователя, cookie и т.д., в примере мы открываем ссылку http://forum.scriptscript.ru/post/add/. Тело содержит параметры запроса. Когда вы пишете сообщение на любом форуме и нажимаете "отправить", в тело вашего запроса попадает текст этого сообщения. Сейчас мы не будем подробно разбирать, что означают все заголовки и как формируется тело, ограничимся тем, что есть.

А вот пример ответа:

код скопирован в буфер
  1. HTTP/1.1 200 OK
  2. Server: nginx/0.7.67
  3. Date: Sun, 07 Nov 2010 15:57:05 GMT
  4. Content-Type: text/html
  5. Connection: keep-alive
  6. X-Powered-By: PHP/5.2.14
  7. Content-Length: 698
  8. <b>Ваше сообщение добавлено.</b>

Здесь тоже заголовки, содержащие уже служебную информацию сервера и самое главное – тело ответа, тот самый HTML-код страницы, которую мы запрашивали. Таким образом, браузер и сервер обмениваются сообщениями всякий раз, когда вы открываете страницу сайта или обновляете ее. Обмен происходит в течение нескольких секунд или даже долей секунды, после чего браузер сохраняет полученные данные в свой Кеш, а сервер забывает о вашем существовании до тех пор, пока вы снова не захотите повторить это действие. Так что страница, которую вы сейчас пролистываете находится не на сайте scriptscript.ru, а на жестком диске вашего компьютера. Именно поэтому сообщение на счетчиках статистики "online пользователей: 7" весьма условно, пользователь считается online-овым, если он просмотрел какую-то страницу сайта за последние несколько минут.

Чтобы показать, как работает php одного блокнота мало, во-первых, нужен хороший редактор с подсветкой. Веб-программисты обычно используют программу Macromedia Dreamweaver, подойдет также notepad2. Во-вторых, нужен виртуальный сервер (некая эмуляция веб-сервера, работающего на вашем компьютере), на котором мы сможем тестировать свой сайт. В качестве виртуального сервера в Рунете чаще всего используется "Денвер" Дмитрия Котерова. Скачайте его с сайта разработчика или с нашего сайта и установите. С версией Base_PHP5_2006-10-04_a1.3.33_p5.1.6_m4.1.16_pma2.6.1 у меня не возникало никаких проблем, поэтому я выкладываю ее, у разработчика, вы можете скачать более новую.

После установки виртуального сервера на вашем жестком диске должна появиться папка WebServers, а на рабочем столе – три значка, отвечающие за его запуск, остановку и перезапуск. Создайте файл с адресом …\WebServers\home\mysite.ru\www\index.php (папки mysite.ru и www тоже нужно создать). Запустите виртуальный сервер. Дальше отредактируйте созданный файл так, чтобы его текст был:

код скопирован в буфер
  1. <?php
  2. echo '<b>Здесь будет мой сайт.</b>';
  3. ?>

и сохраните.

Откройте ссылку http://www.mysite.ru/. Если все заработало, как нужно, в окне браузера вы увидите надпить жирным шрифтом "Здесь будет мой сайт." echo – это оператор вывода строки.

Перепишем наш минисайт на PHP с учетом полученных знаний. Создадим 4 файла: и поместим их в папку сайта …\WebServers\home\mysite.ru\www\.

index.php:

код скопирован в буфер
  1. <?php
  2. include 'menu.html';
  3. echo '<h1>Главная страница</h1><i>Это главная страница сайта.</i><br>Здесь пока ничего нет.';
  4. ?>

cat.php:

код скопирован в буфер
  1. <?php
  2. include 'menu.html';
  3. ?>
  4. <h1>Страница с кошкой</h1>
  5. <i>Это страница с кошкой.</i><br>
  6. А вот и сама кошка:<br>
  7. <img src="/cat.jpg">

list.php:

код скопирован в буфер
  1. <?php
  2. include 'menu.html';
  3. ?>
  4. <h1>Страница со списком</h1>
  5. <i>Это страница со списком, а вот и он:</i><br>
  6. <ul>
  7. <?php
  8. $fruits = array("Яблоко", " Груша", "Апельсин", 'Мандарин');
  9. for ($i=0;$i<count($fruits);$i++) echo '<li>'. $fruits[$i];
  10. ?>
  11. </ul>

menu.html:

код скопирован в буфер
  1. <a href="/">Главная страница</a> | <a href="/cat.php">Страница с кошкой</a> | <a href="/list.php">Страница со списком</a>

Файлы находятся в архиве, не забудьте скопировать вместе с ними и картинку. Опять откройте http://www.mysite.ru/, теперь там должен быть наш минисайт, выглядит он точно так же, как и в статическом варианте (когда мы копировали файлы index.html, cat.html, list.html). При написании файлов мы использовали стандартные конструкции PHP: include – подключение другого файла; array() – задание массива (стандартный объект в большинстве языков программирования); count()  – количество элементов в массиве; for() – цикл, в данном случае мы использовали его для того, чтобы перебрать все элементы массива; оператор "." (точка) – склеивает две строки.

Аналогичным образом при помощи PHP можно делать более сложные вещи. PHP не подменяет собой HTML, он динамически формирует его, HTML – это, как уже говорилось, язык разметки веб-страницы, а PHP – язык программирования. Отличие в том, что как бы мы не писали HTML-код: пропуская закрывающие теги, неверно указывая имена атрибутов – он все равно отобразится, и страницу мы увидим, пускай не так, как ожидаем. Если же мы допустим ошибку в PHP-коде, программа просто не сработает.

Хороший справочник функций и операторов PHP вы можете скачать с нашего сайта, вот он. Весь справочник расположен на одной html-странице, что очень удобно. Несмотря на то, что в нем описывается PHP4, все конструкции справедливы и для 5-й версии языка (у большинства хостеров стоит PHP5). Для начала работы с PHP этого вполне достаточно.

MySQL. Основной задачей PHP является формирования вывода в браузер пользователя. Например, в файле list.php мы сначала задали массив $fruits, а затем на основании входящих в него данных создали HTML-список. Время жизни этого массива ограничено временем выполнения сценария. А что если мы хотим задавать список фруктов в админке и показывать его пользователю? В этом случае логично записывать список в файл и считывать его, когда он понадобится, например так:

код скопирован в буфер
  1. <?
  2. // записываем в файл
  3. $f = fopen('fruits.txt', 'w'); // открытие дескриптора файла
  4. $str = "Яблоко\nГруша\nАпельсин\nМандарин"; // "\n" - переход на новую строку
  5. fwrite($f, $str); // запись строки $str в файл
  6. fclose($f); // закрытие файла
  7. // считываем из файла
  8. $fruits = file('fruits.txt'); // функция file считывает файл и разбивает его по строкам
  9. ?>

На веб-серверах существует стандартное хранилище данных, приспособленное для хранения подобных списков – это базы данных. В самом начале сценария мы подключаемся к базам данных, а потом уже с легкостью считываем и записываем в них, за счет чего взаимодействие осуществляется быстрее, чем при работе с файлами. Существует специальный язык для обращения с БД – SQL. На Unix-хостингах используется MySQL (он же входит и в комплект "Денвер"), на Windows – MSSQL (стандарт Microsoft), они отличаются незначительно друг от друга. Инструкцию по работе с MySQL, вы найдете, например, здесь, приведу лишь несколько простых примеров.

При запущенном "Денвере" откройте http://localhost/, там должна быть ссылка на MySQL, перейдите по ней. Это стандартная утилита для работы с MySQL на веб-серверах – phpMyAdmin, слева во фрейме выберите базу "test". Дальше справа выберите вкладку "SQL" и отправьте запрос:

код скопирован в буфер
  1. CREATE TABLE `fruits` (
  2.   `id` int(11) NOT NULL auto_increment,
  3.   `name` varchar(100) NOT NULL,
  4.   `count` int(5) NOT NULL,
  5.   PRIMARY KEY  (`id`)
  6. ) ENGINE=MyISAM;
  7. INSERT INTO `fruits` VALUES (1, 'Яблоко', 5);
  8. INSERT INTO `fruits` VALUES (2, 'Груша', 3);
  9. INSERT INTO `fruits` VALUES (3, 'Апельсин', 2);
  10. INSERT INTO `fruits` VALUES (4, 'Мандарин', 10);

Только что в базе test мы создали таблицу fruits (запрос CREATE TABLE) и заполнили ее данными (запросы INSERT INTO).  В таблице есть три поля, id – идентификатор записи, name – название фрукта, count – количество фруктов данного типа. Теперь отправим запрос:

код скопирован в буфер
  1. SELECT * FROM `fruits`

У нас отобразились все записи в таблице – все фрукты. А теперь этот запрос:

код скопирован в буфер
  1. SELECT `name`, `count` FROM `fruits` WHERE `count`>4

Видим все фрукты, количество которых больше четырех. Воспользуемся теперь функциями PHP для работы с запросами к БД.

код скопирован в буфер
  1. <?
  2. mysql_connect('localhost', 'root', '');
  3. mysql_select_db('test');
  4. echo 'Список фруктов:<br><ul>';
  5. $result = mysql_query("SELECT `name`, `count` FROM `fruits` WHERE `count`>4");
  6. while  ($arr = mysql_fetch_assoc($result)) echo '<li>'.$arr['name'].' ('. $arr['count'].')';
  7. echo '</ul>';
  8. ?>

Если вы запустите сейчас этот скрипт, в окне браузера отобразится список всех тех фруктов из нашей таблицы fruits, количество которых больше четырех.

JavaScript. Возможно, вы видели, что страницы некоторых сайтов видоизменяются динамически без их перезагрузки. Такое нельзя сделать голым HTML, для этого существует язык программирования Java Script. У него другая область применения, в отличие от PHP он выполняется не на сервере, а непосредственно в окне браузера, так же, как сам HTML. При помощи него можно менять вид элементов страницы, убирать их, работать с датой и временем, другими объектами, и даже динамически подгружать данные с сервера (см. технологию AJAX). Создайте на сайте страницу со следующим текстом:

код скопирован в буфер
  1. <input type="radio" name="hat" onclick="HideShowHat('hide')"> Убрать шляпу&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  2. <input type="radio" name="hat" onclick="HideShowHat('show')" checked="checked"> Показать шляпу<br>
  3. <img src="hat.jpg" id="HatImage">
  4. <script type="text/javascript">
  5. function HideShowHat(action)
  6. {
  7.     if (action == 'show') var display = '';
  8.     else var display = 'none';
  9.     document.getElementById('HatImage').style.display = display;
  10. }
  11. </script>

и скопируйте рисунок шляпы туда же.

Как видите, при выборе соответствующего пункта картинка убирается или вновь появляется на экране. А вот и справочник языка Java Script.

CMS. Для того, чтобы создать сайт, не обязательно учиться программировать. Для PHP и других языков существует много готовых решений, в том числе и бесплатных, позволяющих конструировать сайты без написания программного кода или делая это там, где необходимо. Такие программы называются CMS (Content management system – система управления контентом). Ни один современный сайт не может обходиться без CMS, правда используя готовую CMS, а не написанную специально для вашего сайта, вы определенным образом лишаетесь свободы маневра. В любом случае, какую бы систему управления контентом вы не выбрали, советую вам вооружиться хотя бы общим представлением о технологиях, на которых она основана, будь то PHP, Perl или Java. Если вы решили программировать сами, ознакомьтесь с примером программной структуры сайта, это позволит избежать некоторых ошибок, свойственных начинающим разработчикам.

Читать дальше...

Copyright © 2019 ScriptScript.ru, по всем вопросам пишите нам через форму обратной связи.
364319675