Программирование на стороне сервера
1/55
1.16M
Категория: ПрограммированиеПрограммирование

Программирование на стороне сервера

1. Программирование на стороне сервера

2. WEB-сервер

Веб-сервер — сервер,
принимающий HTTP-запросы от
клиентов, обычно веббраузеров, и выдающий им
HTTP-ответы, как правило,
вместе с HTML-страницей,
изображением, файлом,
медиа-потоком или другими
данными.
Веб-сервером называют как
программное обеспечение,
выполняющее функции вебсервера, так и непосредственно
компьютер, на котором это
программное обеспечение

3. Дополнительные функции WEB-сервера

Дополнительные функции WEBсервера
Веб-серверы могут иметь различные
дополнительные функции, например:
•автоматизация работы веб-страниц;
•ведение журнала обращений пользователей к
ресурсам;
•аутентификация и авторизация пользователей;
•поддержка динамически генерируемых страниц;
•поддержка HTTPS для защищённых соединений
с клиентами.
Часто на компьютере вместе с веб-сервером
устанавливается также и почтовый сервер.

4. Программное обеспечение

В настоящий момент наиболее распространённым веб-сервером,
является Apache — свободный веб-сервер, наиболее часто используемый в
UNIX-подобных операционных системах;
Некоторые другие известные веб-серверы:
•IIS от компании Microsoft, распространяемый с ОС семейства Windows
•nginx — свободный веб-сервер, пользующийся большой популярностью
на крупных сайтах

5. Технология распределенных серверов

6. Технология распределенных серверов

7. Стандартное WEB-приложение

8. Локальный WEB-сервер. WAMP-комплексы

Локальный WEB-сервер. WAMPкомплексы
WAMP — акроним от
«Windows, Apache, MySQL и
PHP». Данным сокращением
описывается комплектация
пакетов программ, под
соответствующую ОС,
обозначаемую первой
буквой. Данные пакеты в
основном используются для
веб-разработки.
Системы WAMP, MAMP и LAMP поставляются
в форме пакетов, связывающих упакованные
программы таким образом, чтобы их не нужно
было устанавливать и настраивать по
отдельности.

9. WAMP-комплексы


Open Server (рус.)
Денвер (рус.)
XAMPP
EasyPHP
WampServer
Bitnami

10. Серверный язык программирования PHP

11. Программирование на PHP. История развития.

1997 год - два
программиста Энди
Гутманс и Зив Сураски
взяли за основу идею
Расмуса и переписали
PHP с нуля. Название
"Personal Home Page"
было изменено на
Hypertext Preprocessor

12. Программирование на PHP. История развития.

• 2000 год – вышла 4-я версия PHP, ставшая стандартом для
Веб-разработки.
• 2004 год – вышла версия PHP5.
• PHP – это гибкий и легкий язык web-программирования,
обладающий широкими возможностями и неоспоримыми
преимуществами.
Изменения в PHP5 включают обновление ядра Zend (Zend Engine 2), что
существенно увеличило эффективность интерпретатора. Введена поддержка
языка разметки XML. Полностью переработаны функции ООП, которые стали
во многом схожи с моделью, используемой в Java. В частности, введён
деструктор, открытые, закрытые и защищённые члены и методы,
окончательные члены и методы, интерфейсы и клонирование объектов.
Нововведения, однако, были сделаны с расчётом сохранить наибольшую
совместимость с кодом на предыдущих версиях языка. На данный момент
последней стабильной веткой является PHP 5.6, которая содержит ряд
изменений и дополнений

13. PHP 7

В 2015 году было объявлено о выходе PHP версии 7.0.0.
Новая версия основывается на экспериментальной ветви PHP, которая
изначально называлась phpng (PHP Next Generation — следующее
поколение), и разрабатывалась с упором на увеличение
производительности и уменьшение потребления памяти.
В новой версии добавлена возможность указывать тип возвращаемых
из функции данных, добавлен контроль передаваемых типов для
данных, а также новые операторы.
Однако в седьмой версии была убрана устаревшая
функциональность, что привело к некоторым проблемам с обратной
совместимостью, затруднив перевод старых приложений на новую
версию.

14.

Сегодня РНР — это мощный
кроссплатформенный набор средств, который
располагается на сервере и предназначен для
обработки специального кода, встраиваемого
в HTML-страницу. Благодаря этому,
появляется возможность легко создавать
динамические сайты. Файлы, созданные таким
образом, хранятся и обрабатываются на
сервере, и когда посетитель запрашивает
документ с РНР, скрипт обрабатывается не
браузером посетителя, как, например, Java
Script, а сервером, и посетителю передаются
уже только результаты работы.

15.

РНР (Hypertext Preprocessor)— это серверный язык
создания сценариев, разработанный специально для
Web. В HTML-страницу можно внедрить код РНР,
который будет выполняться при каждом ее
посещении. Код РНР интерпретируется Web-сервером
и генерирует HTML или иной вывод, наблюдаемый
посетителем страницы.

16. Преимущества PHP

РНР обладает множеством преимуществ:
• Высокая производительность
• Наличие интерфейсов ко многим различным
системам баз данных
• Встроенные библиотеки для выполнения
многих общих задач, связанных с Web
• Низкая стоимость
• Простота изучения и использования
• Переместимость
• Доступность исходного кода

17.

18. Файл PHP.ini

Конфигурационный файл php.ini содержит в
себе настройки PHP, которые действуют на
сервере.
<?php
phpinfo();
?>

19. Hello, World!

<html>
<head>
<title>Пример</title>
</head>
<body>
<?php
echo “Hello, World!";
?>
</body>
</html>

20. Синтаксис и грамматика.

• Синтаксис
PHP
заимствован
непосредственно из C. Java и Perl также
повлияли на синтаксис данного языка.
• Cпособ выхода из HTML и перехода в
"режим PHP кода":
<?php … ?>

21. Разделение инструкций. Типы переменных.

• Инструкции разделяются также как в C - точкой
с запятой. Закрывающий тэг (?>) тоже
подразумевает конец утверждения, поэтому
следующие записи эквивалентны:
– <php echo "Это тест"; ?>
– <php echo "Это тест" ?>
• PHP поддерживает переменные типов:






integer - целое
double - число с дробной частью
string - строковая переменная
array - массив
object - объектная переменная
pdfdoc - PDF-документ (только при наличии
поддержки PDF)

22. Типы переменных.

• Тип переменной обычно не устанавливается
программистом;
вместо
этого,
он
определяется в зависимости от контекста, в
котором она используется. Чтобы указать тип
переменной непосредственно, используйте
инструкцию cast либо функцию settype(), но
учтите, что переменная может вести себя поразному, в зависимости от того, какой тип
определен для нее в данное время.
• Инициализация
переменной.
Для
инициализации переменной в PHP вы просто
присваиваете ей значение. Для массивов и
объектных переменных, однако, может
использоваться несколько иной механизм.

23. Инициализация массивов.

• Массив может инициализироваться одним из
двух
способов:
последовательным
присвоением значений, или посредством
конструкции array().
• При последовательном добавлении значений
в массив вы просто записываете значения
элементов массива, используя пустой индекс.
Каждое
последующее
значение
будет
добавляться в качестве последнего элемента
массива.
$names[] = "Jill";
$names[] = "Jack";
// $names[0] = "Jill"
// $names[1] = "Jack"
• Как в C и Perl, элементы массива нумеруются,
начиная с 0, а не с 1!

24. Инициализация объектов.

• Для инициализации объектной переменной
используйте
новое
предписание
для
сопоставления данного объекта объектной
переменной.
class a
{
function do_a ()
{ echo «Исполняем класс а» }
}
$bar = new a;
$bar -> do_a ();

25. Область переменной.

• Областью переменной является контекст, внутри
которого она определена. Любая переменная,
определенная внутри функции, по умолчанию
ограничена локальной областью функции. Например:
$a = 1; // глобальная область
Function Test ()
{
echo $a;
// ссылка на переменную локальной области
}
Test ();
• Этот скрипт ничего не выдаст на выходе, поскольку
инструкция echo относится к локальной версии
переменной $a, значение которой присваивается не
внутри этой области.

26. Область переменной.

• Здесь имеется отличие от языка C, в том, что
глобальные переменные в C автоматически
действуют и внутри функций, если только не
переписываются локальными определениями.
• В PHP глобальные переменные должны быть
продекларированы глобально внутри функции,
если предполагается их использование в
данной функции. Например:
$a = 1; $b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b; }
Sum (); echo $b;
• Этот скрипт выдаст значение "3".

27. Глобальные переменные

• Поскольку $a и $b декларируются глобально внутри
функции, ссылки на них трактуются как ссылки на их
глобальные версии.
• Вторым способом доступа к глобальным переменным
является использование определяемого PHP массива
$GLOBALS:
$a = 1; $b = 2;
Function Sum ()
{
$GLOBALS["b"]=$GLOBALS["a"]+$GLOBALS["b"];
}
Sum (); echo $b;
• Массив $GLOBALS является ассоциативным, в котором имя
глобальной переменной является ключом, а значение этой
переменной является значением элемента массива.

28. Статическая переменная

• Статическая переменная существует только в
локальной области функции, но она не теряет
своего значения, когда программа, при
исполнении, покидает эту область:
Function Test ()
{
static $a = 0;
echo $a;
$a++;
}
• При вызове функции Test() она будет выводить
значение $a и увеличивать его.

29. Статическая переменная

• Статические переменные также весьма
существенны, когда функции вызываются
рекурсивно. Рекурсивные функции - это те,
которые вызывают сами себя. Составлять
рекурсивную функцию нужно внимательно, т.к.
при неправильном написании можно сделать
рекурсию
неопределенной.
Следующая
простая функция рекурсивно считает до 10:
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) { Test (); }
$count--;
}

30. Изменяемые переменные.

• Иногда бывает удобно давать переменным
изменяемые имена. Такие имена могут изменяться
динамически. Изменяемая переменная берет некое
значение и обрабатывает его как имя переменной. В
примере значение hello может быть использовано
как имя переменной, посредством применения двух
записанных подряд знаков доллара, т.е.:
$a = "hello";
$$a = "world";
• Две переменных определены и сохранены в
символьном дереве PHP: $a с содержимым "hello" и
$hello с содержимым "world".

31. Переменные вне PHP.

• Когда
программой-обработчиком
формы
является PHP-скрипт, переменные этой формы
автоматически доступны для данного скрипта
PHP:
<form action="foo.php" method="post">
Name:<input type="text" name="name">
<br><input type="submit">
</form>
• При активизации формы PHP создаст переменную
$name, значением которой будет то содержимое,
которое было введено в поле данной формы.

32. Переменные вне PHP.

• PHP также воспринимает массивы в контексте
переменных формы, но только одномерные:
<form action="array.php" method="post">
Name:<input type="text”
name="personal[name]"><br>
Email:<input type="text”
name="personal[email]"><br>
City: <br>
<select multiple name=“city[]”>
<option value="warthog">Oryol
<option value="guinness">Moscow
</select>
<input type="submit">
</form>

33. Изменение типа.

• В PHP тип переменной определяется по
контексту, в котором она используется. Если
присвоить строковое значение переменной
var, var становится строкой. Если затем
присвоить переменной var значение целого
числа, то она станет целым.
• Примером автоматического преобразования
типа в PHP может служить оператор сложения
'+'. Если какой-либо из операндов является
числом типа double, то все операнды
оцениваются как double и результат будет
иметь тип double. Иначе, эти операнды будут
интерпретированы как integer и результат
будет integer. Отметим, что при этом НЕ
меняются типы операндов, меняется их
оценка.

34. Изменение типа.

• Примеры:
$foo = "0"; // $foo - строка (ASCII 48)
$foo++; // $foo - строка "1" (ASCII 49)
$foo += 1;
// $foo является целым (2)
$foo = $foo + 1.3;//$foo - double (3.3)
$foo = 5 + "10 Little Piggies";
// $foo является целым (15)
$foo = 5 + "10 Small Pigs";
// $foo является целым (15)
• Если вы желаете изменить тип переменной,
используйте settype().

35. Определение типов переменных.

• Поскольку
PHP
определяет
типы
переменных и преобразует их (в общем)
по мере необходимости, не всегда
очевидно какой тип данная переменная
имеет в какой-то отдельный момент.
Поэтому
PHP
включает
несколько
функций, которые позволяют определить
текущий тип переменной. Это функции
gettype(), is_long(), is_double(), is_string(),
is_array(), и is_object().

36. Приведение типа.

• Приведение типа работает в PHP во многом так же как в C:
название требуемого типа записывается в круглых скобках
перед переменной, которая должна быть приведена к
данному типу.
$foo = 10;
// $foo is an integer
$bar = (double) $foo;// $bar - double
• Допускается следующее приведение типов:
– (int), (integer) - приведение к целому
– (real), (double), (float) - приведение к типу double
– (string) - приведение к строке
– (array) - приведение к массиву
– (object) - приведение к объектной переменной.

37. Манипуляции с массивом.

• PHP поддерживает как скалярные, так и
ассоциативные массивы. Вы можете создать
массив, используя функции list() или array(), или
можно явно задать значение каждого элемента
массива.
$a[0] = "abc";
$a[1] = "def";
$b["foo"] = 13;
• Можно также создать массив просто добавляя в
него значения.
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world"

38. Манипуляции с массивом.

• Массив может сортироваться функциями
asort(), arsort(), ksort(), rsort(), sort(),
uasort(), usort(), и uksort() в зависимости от
типа желаемой сортировки. Подсчет
количества
элементов
массива
осуществляется
функцией
count().
Перемещаться по массиву позволяют
функции next() и prev(). Другим типовым
способом перемещения по массиву
является использование функции each()
или конструкции foreach().

39.

Создание массивов в PHP
Массив - это набор данных, которые объединены
под одним именем. Массив состоит из нескольких
элементов, которые имеют свой определенный
индекс.
Массивы создаются при помощи
оператора присвоения, также, как и переменная.
Имена массивов начинаются со знака $, после
которого следует произвольный идентификатор,
далее идут квадратные скобки: $arr[0] = "php";
Данная конструкция создает массив и
присваивает его элементу с индексом 0 значение
"php", после чего мы можем обращаться к этому
элементу как к обычной переменной: echo $arr[0].
В результате мы увидим слово php.
Также, мы можем добавить еще элементы к
массиву:
<?php $arr[1] = "html"; $arr[2] = "css"; ?>

40.

В качестве индекса элементов массива мы можем
использовать не только числа:
<?php
$arr["Kiev"] = 3000000;
$arr["Paris"] = 5000000;
$arr["LA"] = 15000000;
?>
В качестве значений индексов элементов и самих
элементов мы можем использовать одинаковые
типы данных одновременно!
Также существует сокращенная запись для
индексирования:
<?php
$arr[] = 3000000; $arr[] = 5000000; $arr[] =
15000000;
?>
В этом случае первый элемент (3000000) получит
индекс 0! Нужно иметь это ввиду.

41.

Для создания массива можно использовать
функцию array:
<?php
$arr = array("php", "html", "css");
?>
В этом случае первый элемент получит индекс 0. Если
нужно присвоить какой-то другой номер, то можно
воспользоваться конструкцией =>:
<?php
$arr = array(1 => "php", "html", "css"); ?>
Теперь элемент под номером 1 это "php", а не "html"!
Также, можно создать массив со строковым индексом:
<?php
$arr = array("first" => "php", "second" => "html", "third"
=> "css"); ?>
Начиная с версии PHP 5.4, массивы можно создать
через квадратные скобки:
<?php $arr = ["php", "laravel", "yii", "zend", "cakephp"]; ?

42.

Модификация элементов массива
в PHP
Есть массив:
<?php
$arr[0] = "PHP";
$arr[1] = "HTML";
$arr[2] = "CSS";
?>
Для того, чтобы изменить значение элемента
используем оператор присвоения:
<?php
$arr[1] = "JAVASCRIPT";
?>

43.

Для того, чтобы добавить новый элемент в конец
массива использует конструкцию:
<?php
$arr[] = "JQUERY";
?>
Для того, чтобы вывести на экран массив можно
использовать foreach:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
$arr[1] = "JAVASCRIPT"; $arr[] = "JQUERY";
foreach($arr as $key => $value) { // при переборе:
$key - индекс элемента массива, $value значение элемента массива
echo $value.'<br/>'; } ?>
Отображение в браузере:
PHP
JAVASCRIPT
CSS
JQUERY

44.

Удаление элементов массива в PHP
Если нам нужно удалить один из элементов
массива, то для этого мы должны использовать
функцию unset
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
unset($arr[1]);
foreach($arr as $key => $value)
{ echo $value.'<br/>'; }
?>

45.

Перебор элементов массива в PHP
Кроме использования цикла for для вывода
всех элементов массива на экран мы
можем использовать функцию print_r,
которая выведет все элементы массива
вместе с их индексами.
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] =
"CSS"; print_r($arr);
?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )

46.

Также в PHP присутствует специальный цикл для
обработки массивов - цикл foreach
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
foreach($arr as $value)
{
echo $value, "<br>";
}
?>
Отображение в браузере:
PHP
HTML
CSS

47.

Для вывода индекса элемента нужно
использовать второй вариант синтаксиса
цикла foreach
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
foreach($arr as $key => $value)
{
// $key - индекс эл.массива, $value - значение
эл.массива echo "[{$key}] => {$value} <br/>";
}
?>
Отображение в браузере:
[0] => PHP
[1] => HTML
[2] => CSS

48.

Сортировка массивов в PHP
Очень часто нужно отсортировать массив по индексу его
элементов, по алфавиту его элементов, по возрастанию,
по убыванию и т. д. В PHP для этого существуют
Функция - sort, которая сортирует массив по возрастанию
функции.
значений его элементов, при этом изменяя индекс после
сортировки:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
sort($arr);
print_r($arr);
?>
Отображение в браузере:
Array ( [0] => CSS [1] => HTML
[2] => PHP )

49.

Функция - rsort, которая сортирует массив по
убыванию значений его элементов, при этом
изменяя индекс после сортировки:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
rsort($arr);
print_r($arr);
?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )

50.

Третья функция - ksort, которая сортирует массив по
ключам, сохраняя отношения между ключами и
значениями:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
ksort($arr);
print_r($arr); ?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )

51.

Функция - krsort, которая сортирует массив по
убыванию индексов его элементов:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] =
"CSS";
krsort($arr);
print_r($arr);
?>
Отображение в браузере:
Array ( [2] => CSS [1] => HTML
[0] => PHP )

52.

Навигация по массива дает возможно узнать
текущий , следующий, предыдущий, последний
элемента массива.
Навигация по массивам в PHP
Текущий элемент массива определяет
функция current:
<?php echo "Now is: ", current($arr), "<br>"; ?>
Следующий элемент массива определяет
функция next:
<?php echo "Next is: ", next($arr), "<br>"; ?>
Предыдущий элемент массива определяет
функция prev:
<?php echo "Previously is: ", prev($arr), "<br>"; ?>
Последний элемент массива определяет
функция end:
<?php echo "The end is: ", end($arr), "<br>"; ?>
Для определения первого (возврата указателя)

53.

Пример навигации по массивам:
<?php $arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] =
"CSS";
echo "Тек_элемент: ", current($arr), "<br>";
echo "След_элемент: ", next($arr), "<br>";
echo "Предыдущ_элемент: ", prev($arr), "<br>";
echo "Последний_элемент: ", end($arr), "<br>";
echo "Первый_элемент: ", reset($arr), "<br>";
?>
Отображение в браузере:
Тек_элемент: PHP
След_элемент: HTML
Предыдущ_элемент: PHP
Последний_элемент: CSS
Первый_элемент: PHP

54.

Преобразование строк в массивы и
наоборот
PHP умеет преобразовывать данные из строки в
массив и наоборот, для этого в PHP есть
функция implode и explode.
implode - формирует строку из массива.
explode - формирует массив из строки.
Использование функции implode:
<?php
$arr[0] = "PHP"; $arr[1] = "HTML"; $arr[2] = "CSS";
$string = implode(", ", $arr);
echo $string;
?>
Отображение в браузере:
PHP, HTML, CSS

55.

Использование функции explode:
<?php
$string = "PHP, HTML, CSS";
$arr = explode(", ", $string);
print_r($arr);
?>
Отображение в браузере:
Array ( [0] => PHP [1] => HTML [2] => CSS )
English     Русский Правила