
http://ru.html.net/tutorials/php/lesson1.php
Урок 1: Что такое PHP
Первые вопросы, возникающие при изучении РНР: Что такое PHP и как это работает?
Именно этими вопросами мы и займёмся в данном уроке. Очень важно разобраться с этими вопросами, прежде чем начинать создавать собственные РНР-страницы. Понимание этого значительно ускорит изучение.
Итак, начнём!
Что такое PHP?
PHP это первоначально аббревиатура для Personal Home Pages (Личные Домашние Страницы), но в настоящее время это рекурсивный акроним для PHP: Hypertext Preprocessor (Гипертекстовый Препроцессор).
PHP был разработан датским гренландцем Rasmus Lerdorf, а затем дорабатывался как открытый код. PHP это не вэб-стандарт, а технология с открытым кодом. PHP это и не язык программирования, и не вэб-стандарт, но он позволяет использовать т. н. скриптинг в ваших документах.
При описании РНР-страницы вы может сказать, что это файл с расширением .php, содержащий комбинацию HTML-тэгов и скриптов, запускаемых для выполнения на вэб-сервере.
Как работает PHP?
Лучший способ объяснить, как работает PHP - сравнить его со стандартным HTML. Предположим, вы печатаете адрес HTML-документа (например, http://www.mysite.com/page.htm) в адресной строке браузера. При этом вы запрашиваете HTML-страницу. Вот пример:
Вы видите, что сервер просто высылает HTML-файл клиенту. Но если вы напечатаете http://www.mysite.com/page.php - то есть запросите PHP-страницу - сервер начинает работать:
Сервер сначала читает PHP-файл и смотрит, нет ли задач, которые необходимо выполнить. Только после выполнения серверной работы результат отсылается клиенту. Важно понимать, что клиент видит только результат работы сервера, а не реальные инструкции.
Это означает, что, если вы нажимаете в браузере "view source/просмотреть исходный код" PHP-страницы, вы увидите не PHP-коды, а лишь тэги HTML. То есть вы не сможете с помощью "view source" увидеть, как создаётся PHP-страница. Необходимо изучать РНР другими способами, например, читая данный учебник.
Вы этой книге вы научитесь создавать команды для сервера!
Итак, первое, что нужно ... это сервер! Но не волнуйтесь - вам не нужно покупать новый компьютер. Просто установите определённое программное обеспечение, которое заставит его работать в качестве сервера. Кроме того, понадобится вэб-сайт на сервере-хосте, поддерживающий работу с PHP. Ну и, наконец, вы должны быть онлайн, когда кодируете.
Следующий урок посвящён тому, как сделать из вашего компьютера сервер.
Урок 2: Серверы
PHP это серверная/server-side технология. Следовательно, для работы РНР вам нужен сервер. Но вам для этого не придётся дополнительно раскошеливаться.
Поскольку вам нужно выбрать лишь один вариант из нескольких, этот урок мы разделили на три части. Сначала даётся обзор разных опций (просто выберите одну, подходящую). Если сервер уже имеется и работает, см. Урок 3 - создание вашей первой РНР-страницы.
Вариант 1: Вб-сайт на сервере-хосте
Вы можете иметь сайт на сервере-хосте, поддерживающем РНР.
Проверьте, поддерживает ли ваш хост-сервер работу с РНР.
Если у вас ещё нет вэб-сайта на сервере-хосте, можете создать бесплатную учётную запись на 000webhost.com, который поддерживает PHP.
Вариант 2: Установить PHP на ваш компьютер
Не так-то просто установить РНР на ваш комп. Этот вариант рекомендуется только для опытных пользователей, но можно выбрать и его. Вот ссылки для загрузки и установки:
Windows Installation Guide
Mac Installation Guide
Linux Installation Guide
Вариант 3: XAMPP
XAMPP это программа упрощает для нас, простых смертных, работу с РНР прямо на нашем компе без необходимости устанавки.
Как установить XAMPP
Урок 3: Ваша первая рнр-страница
На уроках 1 и 2 вы уже немного познакомились с PHP и настроили сервер (или получили к нему доступ). Теперь мы готовы к созданию первой РНР-страницы. Это будет легко и просто, но после этого урока вы уже будете знать о РНР намного больше.
Как правило PHP-файл представляет собой текстовый файл с расширением .php, состоящий из:
Текста
HTML-тэгов
PHP-скриптов
Вы уже знакомы с текстом и HTML-тэгами. Теперь остановимся на РНР-скриптах.
PHP-скрипты
PHP
Documentation Group выпустила подробную
документацию
.
По всему данному учебнику даётся
множество ссылок на эту документацию.
Цель - чтобы вы привыкли искать ответы
на ваши вопросы. PHP настолько обширен,
что его невозможно охватить в этом
учебнике. Но PHP достаточно прост! Более
того, язык PHP часто весьма похож на
обычный английский.
Давайте начнём конструирование вашей первой РНР-страницы.
Пример: Hello World!
Начнём создание обычного HTML-документа, но назовём файл page.php и поместим его в корневую директорию сайта. Если вы используете XAMPP (см. Урок 2), путь к файлу на вашем компьютере (который теперь является сервером) будет "c:\xampp\htdocs\page.php".
HTML-код должен выглядеть примерно так:
<html>
<head>
<title>Моя первая PHP-страница</title>
</head>
<body>
</body>
</html>
Как вы помните, вероятно, из первого урока, PHP даёт команды серверу. Так что давайте напишем команду серверу.
Сначала мы должны указать серверу, где код PHP начинается и заканчивается. В PHP тэги <?php и ?> используются для обозначения начала и конца блоков РНР-кода, которые сервер должен исполнять (на большинстве серверов достаточно использовать <? в качестве стартового тэга, но <?php будет более корректно при первом использовании PHP.)
Попробуем теперь добавить такой блок кода в ваш HTML-код:
<html>
<head>
<title>Моя первая PHP-страница</title>
</head>
<body>
<?php
echo "<h1>Hello World!</h1>";
?>
</body>
</html>
Если просмотреть этот PHP-документ в браузере, то он будет выглядеть примерно так:
Но интересно будет просмотреть HTML-код в браузере (выбрав "view source"):
PHP-коды исчезли! Из первого урока, вы помните, что только сервер может видеть PHP-коды - клиент (программа-браузер) видит только результат!
Посмотрим, что происходит. Мы просим сервер написать <h1> Hello World!</h1>. Говоря более техническим языком, мы используем строковую функцию echo для написания клиенту специализированной строки, где точка с запятой обозначают конец команды. Но не волнуйтесь! В этом учебнике мы постараемся использовать техническую терминологию по-минимуму.
Наш первый пример, очевидно не особо впечатляющ. Но не спешите! Теперь будет всё интереснее. Рассмотрим другой пример.
Пример: Now!
Заставим сервер написать что-нибудь ещё. Мы можем, например, попросить его вывести текущие дату и время:
<html>
<head>
<title>Моя первая PHP-страница</title>
</head>
<body>
<?php
echo date("r");
?>
</body>
</html>
В браузере мы увидим:
Соответствующий HTML-код:
Стало уже немного интереснее, не правда ли?
Сервер отображает дату и время при отображении РНР-страницы. Заметьте, что при обновлении страницы в браузере, отобразится новое время. Сервер выводит текущие дату и время всякий раз при отправке страницы клиенту.
Отметим также, что HTML-содержит только дату и время, но не РНР-коды. Следовательно, этот пример не зависит от того, какой браузер используется. В реальности вся функциональность выполняется серверными технологиями и всегда работает во всех браузерах!
И вновь отметим точку с запятой в конце строки кода. Этот разделитель очень важен - при его отсутствии скрипт работать не будет.
В этом примере мы использовали date, функцию, которая возвращает текущие дату и время сервера.
Попробуем расширить пример, записав строку/string и функцию/function, разделив их символом "." (точка) - примерно так:
<html>
<head>
<title>Мой первый PHP-документ</title>
</head>
<body>
<?php
echo "<p>Текущие дата и время: " . date("r") . "</p>";
?>
</body>
</html>
В браузере это выглядит так:
А вот соответствующих код HTML:
В следующем уроке мы поближе познакомимся с функцией date и различными форматами представления даты и времени.
Урок 4: Работа с датой и временем
В этом уроке мы попытаемся рассмотреть различные опции работы с датой и временем в PHP. На предыдущем занятии мы видели очень простые примеры того, что собой представляет РНР. В этом уроке мы более внимательно рассмотрим функцию date.
Функции даты и времени
В PHP имеется ряд функций для работы с датами и временем. В этом уроке разберём наиболее важную из этих функций: date.
Принимая различные параметры, функция date может возвращать дату/время в различных форматах. Вот наиболее часто используемые параметры:
date("y")
Возвращает текущий год даты - на сегодня возвращает: 13
date("m")
Возвращает текущий месяц даты - на сегодня возвращает: 02
date("F")
Возвращает текущий месяц даты - на сегодня возвращает: February
date("d")
Возвращает текущее число месяца даты - на сегодня возвращает: 26
date("l")
Возвращает название для недели даты - на сегодня возвращает: Tuesday
date("w")
Возвращает текущий день недели даты - на сегодня возвращает: 2
date("H")
Возвращает текущий час - в данное время возвращает: 15
date("i")
Возвращает текущую минуту - в данное время возвращает: 56
date("s")
Возвращает текущую секунду - в данное время возвращает: 30
Следующий пример иллюстрирует использование функции date:
<html>
<head>
<title>Время и дата</title>
</head>
<body>
<?php
echo "<p>Сегодня " . date("l") . "</p>";
?>
</body>
</html>
Отображение примера
Текущее время: 1361890590
Теперь держитесь крепче... немного притормозим! Функция time() возвращает текущее время в виде количества секунд, прошедших после 1 января 1970 года, 12:00 PM, GMT.
<html>
<head>
<title>Время и дата</title>
</head>
<body>
<?php
echo "<p>Сейчас ровно " . time() . " секунд после January 1, 1970, 12:00 PM, GMT </ p> ";
?>
</body>
</html>
Отображение примера
Отображение в виде количества секунд после January 1, 1970, 12:00 PM GMT называется "timestamp/штамп времени" (UNIX timestamp), который весьма употребителен при работе с датой/временем будущего или прошлого.
По умолчанию функция date использует текущий timestamp (т. е. текущее значение time()). но с помощью дополнительного параметра вы можете специфицировать другой штамп времени и таким образом работать с прошлым или будущим. В следующем примере мы установим timestamp на 0 секунд после January 1, 1970 12:00 PM, GMT. Тогда можно узнать, каким днём недели было 1 января 1970 года.
<html>
<head>
<title>Время и дата</title>
</head>
<body>
<?php
echo "<p>1 января 1970 года - " . date("l",0) . "</p>";
?>
</body>
</html>
Отображение примера
Если вы не гений-математик, вам будет нелегко быстро перевести количество секунд после January 1, 1970 в в конкретное время прошлого или будущего. Но здесь вам поможет ещё одна функция: mktime, выполняющая вычисления за вас.
Синтаксис функции mktime таков (hour, minute, second, month, day, year). Следующий пример - конвертация первой фазы луны (July 21, 1969, 02:56):
<html>
<head>
<title>время и дата</title>
</head>
<body>
<?php
echo mktime (2,56,0,7,21,1969);
?>
</body>
</html>
Отображение примера
Заметьте, что возвращается отрицательное число, поскольку это дата ранее January 1, 1970.
Теперь можно объединить это с функцией date и определить, какой тогда был день недели.
<html>
<head>
<title>Время и дата</title>
</head>
<body>
<?php
echo date("l", mktime(2,56,0,7,21,1969));
?>
</body>
</html>
Отображение примера
Для чего это можно использовать?
Всё это пока что может показаться несколько отвлечённым. Кроме того, для чего ещё модно в этой жизни использовать функцию вроде time()? И что ещё важнее: когда наконец вы узнаете что-то реально необходимое для ваших вэб-страниц?
Ответ: всё, что вы здесь изучаете - строительные блоки, и единственное, что может ограничивать вас, это ваше собственное творческое воображение! Рискну утверждать, что вы уже знаете больше, чем предполагаете. Например, вы в курсе, что можете сделать сайт с различными фоновыми изображениями для каждого дня недели и что это будет работать в любом браузере?
Это действительно правда! Посмотрите на пример:
<html>
<head>
<title>Время и дата</title>
</head>
<body background="background_<?php echo date("w"); ?>.png">
</body>
</html>
Отображение примера
Этот пример, с динамическим фоновым изображением, требует наличия семи изображений, именованных background_1.png, background_2.png, background_3.png, etc.
Если пользователь входит на ваш сайт во вторник, фоновым будет изображение background_2.png, на следующий день - background_3.png. Легко и просто!
На следующем уроке вы узнаете о о новых строительных блоках, которые можно использовать для создания циклов и повторов вашего кода.
PHP увлекателен, вы не находите?
Урок 5: Циклы
В PHP имеется возможность управлять выполнением скриптов с помощью различных управляющих структур. В этом уроке мы рассмотри циклы. Циклы могут использоваться для повторения частей скриптов указанное число раз или до выполнения определённого условия.
Циклы "while"
Синтаксис цикла while таков:
while (условие) {
Оператор
}
Этот синтаксис можно перевести непосредственно на нормальный язык: while/пока условие соблюдается, делать что-то.
Рассмотрим простой пример:
<html>
<head>
<title>Циклы</title>
</head>
<body>
<?php
$x = 1;
while ($x <= 50) {
echo "<p>Этот текст повторяется 50 раз</p>";
$x = $x + 1;
}
?>
</body>
</html>
Отображение примера
В этом примере используется переменная/variable "$x". Как вы могли заметить, имена переменных в РНР всегда начинаются с символа "$". Поначалу это легко забыть, но это абсолютно необходимо запомнить, иначе скрипт не будет работать.
Помимо прочего, пример почти всегда говорит сам за себя. Сначала переменная $x получает значение 1. Затем цикл запрашивает у сервера повторение текста, пока $x не станет меньше или равна 50. При каждом проходе цикла значение переменной $x уменьшается на 1.
Циклы "for"
Другой способ создания цикла - с использованием for:
for (Инициализация; Условие; Шаг) {
Оператор
}
Оператор повторяется, пока 'Инициализация' + 'Шаг' удовлетворяют 'Условию'. Если это непонятно, взгляните на пример:
<html>
<head>
<title>Циклы</title>
</head>
<body>
<?php
for ($x=0; $x<=50; $x=$x+5) {
echo '<p>variable $x теперь = ' . $x . '</p>';
}
?>
</body>
</html>
Отображение примера
В вышеприведённом примере $x увеличивается на 5 при каждом проходе цикла. Цикл продолжается, пока $x меньше или равна 50. Обратите также внимание, как значение $x используется в качестве части этого выражения.
Вот другой пример:
<html>
<head>
<title>Циклы</title>
</head>
<body>
<?php
for ($ x=1; $x<=6; $x=$x+1) {
echo "<h" . $x . ">Уровень заголовка " . $x . "</h" . $x . ">";
}
?>
</body>
</html>
Отображение
примера
Всё ли понятно? Сначала мы устанавливаем $x равной 1. Затем при каждом проходе цикла мы поднимаем уровень заголовка на $x (h1, h2, h3, etc.), пока $x не будет равна 6.
Вложенные циклы
В принципе нет никаких ограничений на использование циклов. Например, вы можете размещать циклы внутри других циклов и создавать таким образом много повторений.
Но будьте осторожны! PHP работает медленнее со сложными и большими скриптами. Например, в следующем примере с тремя циклами мы можем записать более 16 миллионов цветов!
Чтобы не замедлять работу страницы, мы должны значительно урезать это число, сделав шаг равным 30 и ограничив количество цветов числом 512.
<html>
<head>
<title>Циклы</title>
</head>
<body>
<?php
for ($intRed=0; $intRed<=255; $intRed=$intRed+30) {
for ($intGreen=0; $intGreen<=255; $intGreen=$intGreen+30) {
for ($intBlue=0; $intBlue<=255; $intBlue=$intBlue+30) {
$StrColor = "rgb(" . $IntRed . "," . $IntGreen . "," . $IntBlue . ")";
echo "<span style='color:" . $StrColor . "'>" . $ StrColor . "</span>";
}
}
}
?>
</body>
</html>
Отображение примера
В этом примере каждый из трёх основных цветов может (red, green и blue) может иметь значение от 0 до 255. Любое сочетание этих трёх цветов создаёт цвет в форме rgb(255,255,255). Этот код цвета используется как color в тэге <span>.
Циклы станут более применимыми, если вы научитесь ещё кое чему. Если вы в принципе поняли, что такое циклы, можете перейти к следующему уроку, где мы разберёмся с условием.
Урок 6: Условия
Условия используются для выполнения части скрипта, только если некоторые предопределённые требования (условия/conditions) выполняются. Например, условие может требовать, чтобы дата была после January 1, 2012, или чтобы переменная была больше 7.
If...
Первый тип условия, который мы рассмотрим, называется if, и оно имеет такой синтаксис:
if (условие) {
оператор
}
Этот синтаксис, опять-таки близок нормальному языку: If\если условие соответствует, то выполняется ещё что-то. Рассмотрим простой пример:
<html>
<head>
<title>Циклы</title>
</head>
<body>
<?php
$x = 2;
if ($x > 1) {
echo "<p>переменная $x больше 1</p>";
}
?>
</body>
</html>