| 
 
Что такое PHP? 
 PHP - это
                  скрипт-язык (scripting language), встраиваемый в HTML, который
                  интерпретируется и выполняется на сервере. Проще всего это
                  показать на примере:
 
 <html>
 <head>
 <title>Example</title>
 </head>
 <body>
 <?php echo "Hi, I'm a PHP script!";
                  ?>
 </body>
 </html>
 
 После
                  выполнения этого скрипта мы получим страничку, в которой будет
                  написано
 
 Hi, I'm a PHP script!
 
 Весьма просто и
                  бесполезно.
 
 Основное отличие от CGI-скриптов,
                  написанных на других языках, типа Perl или C - это то, что в
                  CGI-программах вы сами пишете выводимый HTML-код, а, используя
                  PHP - вы встраиваете свою программу в готовую HTML-страницу,
                  используя открывающий и закрывающий теги (в примере <?php и
                  ?>).
 
 Отличие PHP от JavaScript, состоит в том, что
                  PHP-скрипт выполняется на сервере, а клиенту передается
                  результат работы, тогда как в JavaScript-код полностью
                  передается на клиентскую машину и только там выполняется.
 
 Любители Internet Information Server найдут, что PHP
                  очень похож на Active Server Pages (ASP), а энтузиасты Java
                  скажут, что PHP похож на Java Server Pages (JSP). Все три
                  языка позволяют размещать код, выполняемый на Web-сервере,
                  внутри HTML страниц.
 
 Возможности PHP.
 
 В
                  нескольких словах - на PHP можно сделать все, что можно
                  сделать с помощью CGI-программ. Например: обрабатывать данные
                  из форм, генерировать динамические страницы, получать и
                  посылать куки (cookies).
 
 Кроме этого в PHP включена
                  поддержка многих баз данных (databases), что делает написание
                  Web-приложений с использованием БД до невозможности простым.
 
 Вот неполный перечень поддерживаемых БД:
 
 Adabas D
 InterBase
 Solid
 
 dBase
 mSQL
 Sybase
 
 Empress
 MySQL
 Velocis
 
 FilePro
 Oracle
 Unix dbm
 
 Informix
 PostgreSQL
 
 Вдобавок ко всему PHP понимает
                  протоколы IMAP, SNMP, NNTP, POP3 и даже HTTP, а также имеет
                  возможность работать с сокетами (sockets) и общаться по другим
                  протоколам.
 
 Краткая история PHP.
 
 Началом PHP можно считать осень 1994 года, когда
                  Rasmus Lerdorf решил расширить возможности своей Home-page и
                  написать небольшой движок для выполнения простейших задач.
                  Такой движок был готов к началу 1995 года и назывался Personal
                  Home Page Tools. Умел он не очень много - понимал простейший
                  язык и всего несколько макросов.
 
 К середине 1995 года
                  появилась вторая версия, которая называлась PHP/FI Version 2.
                  Приставка FI - присоединилась из другого пакета Rasmusa,
                  который умел обрабатывать формы (Form Interpritator). PHP/FI
                  компилировался внутрь Apache и использовал стандартный API
                  Apache. PHP скрипты оказались быстрее аналогичных CGI -
                  скриптов, так как серверу не было необходимости порождать
                  новый процесс. Язык PHP по возможностям приблизился к Perl,
                  самому популярному языку для написания CGI-программ. Была
                  добавлена поддержка множества известных баз данных (например,
                  MySQL и Oracle). Интерфейс к GD - библиотеке, позволял
                  генерировать картинки на лету. С этого момента началось
                  широкое распространение PHP/FI.
 
 В конце 1997 Zeev
                  Suraski и Andi Gutmans решили переписать внутренний движок, с
                  целью исправить ошибки интерпретатора и повысить скорость
                  выполнения скриптов. Через полгода, 6 июня 1998 года вышла
                  новая версия, которая была названа PHP 3.
 
 К лету 1999
                  года PHP 3 был включен в несколько коммерческих продуктов. По
                  данным NetCraft на ноябрь 1999 PHP использовался в более чем 1
                  млн. доменах.
 
 На сегодняшний день (декабрь 1999)
                  готовится к выпуску новая версия PHP 4, в которой внутренний
                  движок будет снова переписан (он имеет название Zend).
                  Предполагается, что производительность новой версии будет в
                  десятки раз выше чем у существующей.
 
 Почему нужно
                  выбирать PHP.
 
 Разработчикам Web-приложений нет
                  необходимости говорить, что web-страницы - это не только текст
                  и картинки. Достойный внимания сайт должен поддерживать
                  некоторый уровень интерактивности с пользователем : поиск
                  информации, продажа продуктов, конференции и т.п. Традиционно
                  все это реализовалось CGI-скриптами, написанными на Perl. Но
                  CGI- скрипты очень плохо масштабируемы. Каждый новый вызов
                  CGI, требует от ядра порождения нового процесса, а это
                  занимает процессорное время и тратит оперативную память. PHP
                  предлагает другой вариант - он работает как часть Web-сервера,
                  и этим самым похож на ASP от Microsoft.
 
 Синтаксис PHP
                  очень похож на синтаксис C или Perl. Люди, знакомые с
                  программированием, очень быстро смогут начать писать программы
                  на PHP. В этом языке нет строгой типизации данных и нет
                  необходимости в действиях по выделению/освобождению памяти.
 
 Программы, написанные на PHP, достаточно легкочитаемы.
                  Написанный PHP - код легко зрительно прочитать и понять, в
                  отличие от Perl-программ.
 
 Недостатки PHP.
 
 Основным недостатком PHP 3, есть то, что по свой
                  идеологии PHP изначально был ориентирован на написании
                  небольших скриптов. Несмотря на то, что движок несколько раз
                  переписывался, PHP 3 не пригоден для использования в сложных
                  проектах - при обработке больших скриптов производительность
                  системы резко падает (предчувствуя возмущение сторонников PHP
                  3, я скажу, что наличие такого недостатка подтверждает сам
                  разработчик Zeev Suraski). Однако этот недостаток будет
                  ликвидирован в движке PHP 4, который, по словам того же
                  разработчика, предназначен для работы в больших проектах.
 PHP является интерпретируемым языком, и, вследствие этого,
                  не может сравниться по скорости с компилируемым С. Однако при
                  написании небольших программ, что, в общем-то, присуще
                  проектам на PHP, когда весь проект состоит из многих небольших
                  страниц с кодом, вступают в силу накладные расходы на загрузку
                  в память и вызов CGI-программы, написанной на С.
 Не такая
                  большая база готовых модулей, как, например, СPAN у Perl. С
                  этим ничего нельзя поделать - это дело времени. В PHP 4
                  разработчики предусмотрели специальный репозиторий,
                  аналогичный CPAN, и я думаю, очень скоро будет написано
                  достаточное количество модулей для его наполнения.
 Нет
                  поддержки сессий (session), как, например, в ASP. В PHP 4 этот
                  недостаток будет устранен.
 
 Что такое MySQL.
 
 MySQL - компактный многопоточный сервер баз данных.
                  MySQL характеризуется большой скоростью, устойчивостью и
                  легкостью в использовании.
 
 MySQL был разработан
                  компанией TcX для внутренних нужд, которые заключались в
                  быстрой обработке очень больших баз данных. Компания
                  утверждает, что использует MySQL с 1996 года на сервере с
                  более чем 40 БД, которые содержат 10,000 таблиц, из которых
                  более чем 500 имеют более 7 миллионов строк.
 
 MySQL
                  является идеальным решением для малых и средних приложений.
                  Исходники сервера компилируются на множестве платформ.
                  Наиболее полно возможности сервера проявляются на
                  Unix-серверах, где есть поддержка многопоточности, что дает
                  значительный прирост производительности.
 
 На текущий
                  момент MySQL все еще в стадии разработки, хотя версии 3.22
                  полностью работоспособны.
 
 MySQL-сервер является
                  бесплатным для некоммерческого использования. Иначе необходимо
                  приобретение лицензии, стоимость которой составляет 190 EUR.
 
 Возможности MySQL.
 
 MySQL поддерживает
                  язык запросов SQL в стандарте ANSI 92, и кроме этого имеет
                  множество расширений к этому стандарту, которых нет ни в одной
                  другой СУБД.
 
 Краткий перечень возможностей MySQL.
 
 Поддерживается неограниченное количество
                  пользователей, одновременно работающих с базой данных.
 Количество строк в таблицах может достигать 50 млн.
 Быстрое выполнение команд. Возможно MySQL самый быстрый
                  сервер из существующих.
 Простая и эффективная система
                  безопасности.
 MySQL действительно очень быстрый сервер, но
                  для достижения этого разработчикам пришлось пожертвовать
                  некоторыми требованиями к реляционным СУБД. В MySQL
                  отсутствуют:
 
 Поддержка вложенных запросов, типа SELECT
                  * FROM table1 WHERE id IN (SELECT id FROM table2).
                  Утверждается, что такая возможность будет в версии 3.23.
 Не реализована поддержка транзакций. Взамен предлагается
                  использовать LOCK/UNLOCK TABLE.
 Нет поддержки внешних
                  (foreign) ключей.
 Нет поддержки триггеров и хранимых
                  процедур.
 Нет поддержки представлений (VIEW). В версии
                  3.23 планируется возможность создавать представления.
 По
                  словам создателей именно пункты 2-4 дали возможность достичь
                  высокого быстродействия. Их реализация существенно снижает
                  скорость сервера. Эти возможности не являются критичными при
                  создании Web-приложений, что в сочетании с высоким
                  быстродействием и малой ценой позволило серверу приобрести
                  большую популярность.
 
 Примеры использования
                  PHP.
 
 Работа с формами.
 
 В этом примере
                  показано как в PHP легко обрабатывать данные с HTML - форм.
 
 Создадим простой HTML файл.
 
 <HTML>
 <HEAD>
 <TITLE>Запрос
                  информации</TITLE>
 <BODY>
 <CENTER>
 Хотите больше знать о наших товарах?
 <P>
 <TABLE WIDTH = 400><TR><TD align =
                  right>
 <FORM ACTION="email.php3" METHOD="POST">
 Ваше имя:<BR>
 <INPUT TYPE="text" NAME="name"
                  SIZE=20 MAXLENGTH="30">
 <P>
 Ваш
                  email:<BR>
 <INPUT TYPE="text" NAME="email"
                  SIZE=20 MAXLENGTH="30">
 <P>
 Меня интересуют:
 <SELECT NAME="preference">
 <OPTION value =
                  "Яблоки">Яблоки
 <OPTION value =
                  "Апельсины">Апельсины
 </SELECT>
 <P>
 <INPUT TYPE="submit" VALUE="Отправить запрос!">
 </FORM>
 </TD></TR></TABLE></CENTER>
 </BODY>
 </HTML>
 
 Назовем этот файл
                  request.html. В нем мы указали, что данные формы будут
                  обрабатываться файлом email.php3. Приведем его содержание:
 
 <?
 /* Этот скрипт получает переменные из
                  request.html */
 PRINT "<CENTER>";
 PRINT "Привет,
                  $name.";
 PRINT "<BR><BR>";
 PRINT "Спасибо
                  за ваш интерес.<BR><BR>";
 PRINT "Вас
                  интересуют $preference. Информацию о них мы пошлем вам на
                  email: $email.";
 PRINT "</CENTER>";
 ?>
 
 Теперь, если пользователь вызовет request.html и
                  наберет в форме имя "Вася", email: vasya@pupkin.com и скажет,
                  что его интересуют "Яблоки", а после этого нажмет "Отправить
                  запрос!", то в ответ вызовется email.php3, который выведет на
                  экран примерно следующее:
 
 Привет, Вася
 
 Спасибо
                  за ваш интерес.
 
 Вас интересуют Яблоки. Информацию о
                  них мы пошлем вам на email: vasya@pupkin.com
 
 Теперь мы
                  должны сдержать обещание и выслать email.
 
 Для этого в
                  PHP есть функция MAIL.
 
 Синтаксис: void mail(string to,
                  string subject, string message, string add_headers);
 
 to - email адрес получателя.
 subject - тема
                  письма.
 message - собственно текст сообщения.
 add_headers - другие параметры заголовка письма
                  (необязательный параметр).
 
 Допишем в конец файла
                  email.php3 следующий код:
 
 <?
 mail($email,
                  "Запрос на информацию", "$name\n
 Спасибо за ваш интерес!\n
 Вас интересуют $preference\n
 Мы их распространяем
                  бесплатно. Обратитесь в ближайший филиал нашей компании и
                  получите ящик этого продукта.\n
 ");
 mail("administration@me.com",
 "Был запрос на
                  информацию.",
 "$name интересовали $preference\n
 email-адрес: $email. \n");
 ?>
 
 Вот теперь
                  пользователь будет получать письмо с более подробной
                  информацией о наших товарах. Также письмо получит и
                  администратор сайта.
 Когда интересующихся нашими товарами
                  станет очень много, мы захотим их как-то упорядочить и хранить
                  информацию о них в базе данных. Об этом в следующем примере.
 
 Работа с MySQL (сохранение данных в базе данных).
 
 Для начала создаем базу данных и таблицу. Входим в
                  MySQL, и выполняем команды:
 
 >CREATE DATABASE
                  products;
 
 >CREATE TABLE clients (name VARCHAR(25),
                  email VARCHAR(25), choise VARCHAR(8));
 
 Для общения с
                  MySQL из PHP понадобятся следующие функции.
 
 int
                  mysql_connect(string hostname, string username, string
                  password);
 
 Создать соединение с MySQL.
 
 Параметры:
 
 Hostname - имя хоста, на котором
                  находится база данных.
 Username - имя пользователя.
 Password - пароль пользователя.
 
 Функция возвращает
                  параметр типа int, который больше 0, если соединение прошло
                  успешно, и равен 0 в противном случае.
 
 int
                  mysql_select_db(string database_name, int link_identifier);
 
 Выбрать базу данных для работы.
 
 Параметры:
 Database_name - имя базы данных.
 link_identifier - ID
                  соединения, которое получено в функции mysql_connect.
                  (параметр необязательный, если он не указывается, то
                  используется ID от последнего вызова mysql_connect)
 
 Функция возвращает значение true или false
 
 int
                  mysql_query(string query, int link_identifier);
 
 Функция выполняет запрос к базе данных.
 
 Параметры:
 
 Query - строка, содержащая запрос
 link_identifier - см. предыдущую функцию.
 
 Функция
                  возвращает ID результата или 0, если произошла ошибка.
 
 int mysql_close(int link_identifier);
 
 Функция
                  закрывает соединение с MySQL.
 
 Параметры:
 
 link_identifier - см. выше.
 
 Функция возвращает
                  значение true или false
 
 Теперь наш файл email.php3
                  будет иметь след. вид:
 
 <?
 /* Этот скрипт
                  получает переменные из request.html */
 
 /* Некоторые
                  переменные */
 
 $hostname = "localhost";
 $username =
                  "myusername";
 $password = "mypassword";
 $dbName =
                  "products";
 
 /* Таблица MySQL, в которой хранятся
                  данные */
 $userstable = "clients";
 
 /* email
                  администратора */
 $adminaddress = "administration@me.com";
 
 /* создать соединение */
 MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не
                  могу создать соединение ");
 
 @mysql_select_db("$dbName") or die("Не могу выбрать
                  базу данных ");
 
 PRINT "<CENTER>";
 PRINT
                  "Привет, $name.";
 PRINT "<BR><BR>";
 PRINT
                  "Спасибо за ваш интерес.<BR><BR>";
 PRINT "Вас
                  интересуют $preference. Информацию о них мы пошлем вам на
                  email: $email.";
 PRINT "</CENTER>";
 
 /*
                  Отправляем email */
 mail($email, "Запрос на информацию",
                  "$namen\n
 Спасибо за ваш интерес!\n
 Вас интересуют
                  $preference\n
 Мы их распространяем бесплатно. Обратитесь в
                  ближайший филиал нашей компании и получите ящик этого
                  продукта.\n
 ");
 
 mail("administration@me.com",
 "Был запрос на информацию.",
 "$name интересовали
                  $preference\n
 email-адрес: $email. \n");
 
 /*
                  Вставить информацию о клиенте в таблицу */
 $query =
                  "INSERT INTO $userstable VALUES('$name','$email',
                  '$preference')";
 
 $result = MYSQL_QUERY($query);
 
 PRINT "Информация о вас занесена в базу данных.";
 
 /* Закрыть соединение */
 MYSQL_CLOSE();
 ?>
 
 Вот так легко можно работать с базой данных в PHP.
                  Теперь кроме письменных уведомлений, информация о клиенте и
                  его интересах будет заносится в таблицу MySQL.
 
 Работа с MySQL (получение данных из базы
                  данных).
 
 После занесения данных, нас иногда будет
                  интересовать вопрос так кого же из наших клиентов интересует
                  товар "Яблоки" (не путать с Apple Macintosh, по поводу Apple
                  Macintosh см. www.stealthcomp.com).
 
 Напишем скрипт
                  apple.php3
 
 <?/* Скрипт показывает клиентов, которые
                  яблоки любят больше чем апельсины */
 $hostname =
                  "localhost";
 $username = "myusername";
 $password =
                  "mypassword";
 $dbName = "products";
 
 /* Таблица
                  MySQL, в которой хранятся данные */
 $userstable =
                  "clients";
 
 /* создать соединение */
 MYSQL_CONNECT($hostname,$username,$password) OR DIE("Не
                  могу создать соединение ");
 
 @mysql_select_db("$dbName") or die("Не могу выбрать
                  базу данных ");
 
 /* Выбрать всех клиентов - яблочников
                  */
 $query = "SELECT * FROM $userstable WHERE choice =
                  'Яблоки'";
 
 $result = MYSQL_QUERY($query);
 
 /*
                  Как много нашлось таких */
 $number =
                  MYSQL_NUMROWS($result);
 
 /* Напечатать всех в красивом
                  виде*/
 $i = 0;
 
 IF ($number == 0) {
 PRINT
                  "<CENTER><P>Любителей яблок нет</CENTER>";
 } ELSEIF ($number > 0) {
 PRINT
                  "<CENTER><P>Количество любителей яблок:
                  $number<BR><BR>";
 WHILE ($i < $number){
 $name = mysql_result($result,$i,"name");
 $email =
                  mysql_result($result,$i,"email");
 PRINT "Клиент $name
                  любит Яблоки.<BR>";
 PRINT "Его Email: $email.";
 PRINT "<BR><BR>";
 $i++;
 }
 PRINT
                  "</CENTER>";
 }
 ?>
 
 Здесь мы
                  использовали две новых функции:
 
 int mysql_num_rows(int
                  result);
 
 Функция возвращает количество строк в
                  результате запроса.
 
 Параметр result - содержит ID
                  результата запроса.
 
 int mysql_result(int result, int
                  i, column);
 
 Функция возвращает значение поля в столбце
                  column и в строке i.
 
 Вот и все, коммерческий продукт
                  практически готов.
 
 
Комментарии
 
 |