Slides PHP
Slides PHP
на PHP/MySQL
Глава 1. Основы языка PHP
Язык программирования PHP - это самый популярный язык для создания
сайтов и веб-сервисов. Рейтинг можно посмотреть здесь:
https://www.wappalyzer.com/categories/programming-languages
1.1 Установка среды PHP-express
1. Скопировать файл PHP-express.zip в папку c:\Prog
2. Распаковать файл PHP-express.zip в папку c:\Prog
3. Запустить файл c:\Prog\UwAmp\UwAmp.exe
● Geany
● Kompozer
● UwAmp
Интернет (TCP/IP)
Сети
Компьютеры
Всемирная паутина
Всемирная паутина World Wide Web (WWW) - это система
размещения гипертекстов с общемировым доступом.
PHP
Язык PHP позволяет создавать эти гипертексты динамически, то
есть гипертекст создается при обращении к сайту.
https://progtips.ru/kursy#i
Клиент Сервер
Запрос
Ответ
Как устроен HTTP
Протокол HTTP (HyperText Transfer Protocol, протокол передачи гипертекста)
использует модель “запрос-ответ”.
Каждый тег обозначается некоторым кодом и имеет начало и конец. Каждый тег
начинается знаком "<код параметры>" и заканчивается знаком "</код>".
Например, текст, выровненный влево, выглядит так:
index.html
index.php
Минимальная веб-страница на HTML
<html> <html> - страница
<head> <head> - данные для браузера
<title>Заголовок страницы</title> <title> - заголовок
</head> <body> - тело страницы
<body> <p> - параграф
<p>Текст страницы</p>
</body>
</html>
<html>
<head>
<title>Заголовок страницы</title>
</head>
<body>
<p>Текст страницы</p>
<?php
print "Сегодня - ".date("d-m-Y",time());
?>
</body>
</html>
Среда разработки Geany
Для разработки PHP-программ самыми популярными средами разработки
являются Notepad++ и Geany.
<?php
print "Начало"; // Однострочный комментарий
/*
Первая строка комментария
Вторая строка комментария
*/
print "Конец"; # Комментарий в стиле Unix
?>
Комментарии в HTML
<!-- комментарий -->
Подготовка к уроку
Перед каждым уроком нужно убедиться:
1. Сервер UwAmp запущен и работает.
2. Исходный текст сайта для урока скопирован в папку
C:\Prog\UwAmp\www
3. Исходный текст урока открыт в программе Geany.
4. В браузере открыт localhost.
2.2 Переменные и функции
Имена переменных обозначаются знаком $.
print "a=$a<br>"."b=$b<br>";
echo "a=$a<br>","b=$b<br>";
Вывод документа
print <<<END
Для вывода большого текста с подстановкой переменных $a используется
синтаксис "режим документа".
Закрывающий идентификатор должен располагаться в отдельной строке!
END;
Аргументы
функции
function MaxNumber($x, $y)
{
if ($x>$y) return $x; Возвращаемое
else return $y; значение
}
<html>
index.php <head>
<title>Заголовок</title>
<?php </head>
require "header.php"; <body>
print "Сборная веб-страница";
require "footer.php";
footer.php
?>
<br>© Company, 2018.
</body>
</html>
function GetXY()
{
...
}
function FindMax()
{
GetXY(); function MaxNumber()
MaxNumber(); {
ShowMax(); …
} }
function ShowMax()
{
...
}
Организация вызова функций
index.php main.php
Тип boolean имеет всего два значения — TRUE (истина) и FALSE (ложь). Эти два
значения являются константами и регистронезависимы.
$found = TRUE;
$error = false;
Логический тип обычно используется в условном операторе:
if ($found)
{
print "Найдено";
}
else
{
print "Не найдено";
}
Целый тип
Тип integer представляет целое число со знаком размером в 32 бита (от -2 147 483
648 до 2 147 483 647).
$a = 5;
$b = -6;
$a1 = 1.56;
$a2 = 2.43e4; // Это означает 2.43 умноженное на десять в четвертой степени
Строки
Тип string - это последовательность символов внутри кавычек: "Привет!". В отличие
от Си, строки могут содержать в себе также и нулевые символы, что никак не
повлияет на программу. Иными словами, строки можно использовать для хранения
бинарных данных. Максимальный размер строки составляет 2 Гбайт, но по
умолчанию на PHP-скрипт выделяется 128 Мб.
Применение ООП в PHP затруднено, так как ООП требует стиль “водопада” для
реализации проекта, при котором сначала разрабатываются базовые классы,
потом они наследуются, а потом уже реализуется конечный функционал.
array $a = array $a =
( ( [
key1 => value1, "роза" => "цветок", "один" => "первое",
key2 => value2, "цветок" => "роза", "два" => "второе",
key3 => value3, ); "три" => "третье",
... ];
)
key может быть либо типа
integer, либо типа string.
value может быть любого
типа.
Виды массивов
Массивы могут быть нумерованными или ассоциативными, одномерными или
многомерными.
// Пустой массив
$a1 = array();
Доступ к массиву:
print $cars[0][0].", год выпуска - ".$cars[0][1].", цвет - ".$cars[0][2]."<br>";
Многомерный ассоциативный массив
$a = array(
"Иван" => array("Фамилия"=>"Иванов", "Возраст"=>"34", "Должность"=>"инженер"),
"Петр" => array("Фамилия"=>"Петров", "Возраст"=>"29", "Должность"=>"вебмастер"),
"Сидор" => array("Фамилия"=>"Сидоров", "Возраст"=>"37", "Должность"=>"программист"));
Иванов 34 инженер
Петров 29 вебмастер
Сидоров 37 программист
Доступ к массиву:
print "Фамилия: ".$a["Петр"]["Фамилия"]."Должность: ".$a["Петр"]["Должность"]."<br>";
Для точного указания на элемент массива можно использовать фигурные скобки {}.
Приведение типов
В PHP можно использовать явное приведение типов.
(int), (integer) - приведение к integer, например
(bool), (boolean) - приведение к boolean
(float), (double), (real) - приведение к float
(string) - приведение к string
(array) - приведение к array
(object) - приведение к object
(unset) - приведение к NULL
Например, Wordpress
https://ru.wordpress.org/
имеет следующие стандартные папки:
wp-admin - админка сайта
wp-content - содержание сайта
wp-includes - отображение сайта
Юнит - это часть программы, которую можно включить и выключить без влияния на
работоспособность программы в целом. Если юнит разработан внешним
разработчиком, то он называется плагин.
Например:
<script>alert('ok');</script>
Метод GET передает данные в строке браузера. Это удобно, потому что можно
сохранить эту строку и потом опять вызывать со всеми параметрами. Недостаток в
том, что данные открыты.
- Вычитание != Неравно
Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной
$value должен предшествовать знак &. В этом случае значение будет присвоено по
ссылке.
3.3 Язык описания стилей CSS
CSS является аббревиатурой от английского Cascading Style Sheets, что в
переводе на русский значит "каскадные таблицы стилей".
1. В теге HTML
<body style = "background-color: #FF0000;">
2. В заголовке страницы
<style>
body { background-color: #FF0000; }
</style>
Применение CSS к сайту
Третий и рекомендуемый способ использования CSS - это единая таблица стилей
для всего сайта.
CSS-файл - это текстовый документ, который содержит описание стилей для всех
элементов сайта.
Меню
Подвал
3.5 Работа со строками
В силу важности обработки строк при программировании сайта PHP содержит
большой диапазон средств работы со строками.
http://ru.php.net/manual/ru/book.strings.php
$n = 1234.56;
print number_format($n, 2, ".", " ");
1 234.56
Официальный сайт:
www.mysql.com
Расширение MySQL Improved
Важное замечание!
Описание расширения
http://php.net/manual/ru/book.mysqli.php
С точки зрения программиста все базы, поддерживающие язык SQL, одинаковы. Нужно
только узнать, как именно передавать запросы к БД и дальше работать только через
SQL-запросы.
Практический совет
Если некоторую функцию можно реализовать или в PHP, или через SQL-запрос, то
нужно учитывать, что SQL-запрос будет работать намного быстрее.
Схема работы с БД
Таблица “Сотрудники” Поле “Оклад”
Запись “Петров”
№ Фамилия Оклад Год рождения
Официальный сайт:
www.phpmyadmin.net
$db = mysqli_connect(
'localhost', // Хост (если серверы php и mysql на одном ПК, то localhost)
'user', // Имя пользователя
'password', // Пароль
'test'); // Имя БД
4.4 Реляционные базы данных
Реляционные базы данных - это БД, в которых таблицы связаны через ключевые
поля.
1 Электроника Иванов
Первичный Вторичный Внешний
ключ ключ ключ 2 Бытовая Петров
техника
1 Телевизор 20000 1
2 Холодильник 45000 2
Виды ключевых полей
Первичный ключ - это поле со значениями, уникальными во всей таблице. По
первичному ключу можно однозначно установить нужную запись. Первичный ключ в
таблице может быть только один.
Вторичный ключ - это поле с уникальными значениями, но не совпадающее с
первичным ключом. Вторичных ключей может быть несколько.
Внешний ключ - это поле, по которому можно однозначно установить связанную
запись в другой таблице.
Для обращения к полю конкретной таблицы нужно использовать полное имя поля,
которое состоит из имени таблицы, точки и имени поля.
Товары.`Товар`
Работа с данными:
SELECT - выборка данных
INSERT – вставка новых записей
UPDATE – обновление записей
DELETE – удаление записей
Типы данных
Тип Описание
SELECT
SUM(Оклад) AS Сумма,
AVG(Оклад) AS [Средний оклад]
FROM Сотрудники
Постраничный вывод
Оператор LIMIT задает максимальное число возвращаемых записей. Может
использоваться с оператором OFFSET для указания сдвига первого значения.
SELECT *
FROM Товары
LIMIT 5 OFFSET 5
Оператор INSERT
Оператор INSERT вставляет новые строки в таблицу.
UPDATE Выплаты
SET Месяц = "Август", Год = 2018
UPDATE Сотрудники
SET Оклад = 50000
WHERE [Код сотрудника]=1
Оператор DELETE
Оператор DELETE удаляет записи из таблицы:
http://php.net/manual/ru/function.header.php
date("d.m.y"); // 20.12.18
date("Y-m-d H:i:s"); // 2018-12-20 11:17:19 (формат MySQL DATETIME)
Обращение к элементам времени
Функция getdate() возвращает ассоциативный массив (array), содержащий
информацию о дате и времени.
http://php.net/manual/ru/function.getdate.php
http://php.net/reserved.variables.server
Клиент Сервер БД
Запрос
Ответ
Установка куки
setcookie("name", "Вася"); // Хранится до закрытия браузера.
setcookie("test 1", "куки на час", time() + 3600); // 3600 - количество секунд в часе
Получение куки
print 'Привет, ' . htmlspecialchars($_COOKIE["name"]) . '!';
Удаление куки
setcookie("name");
Недостатки куки
Использование куки недостаточно для серьезной работы:
● Ограничение по формату: можно сохранить только пару: имя и значение.
● Ограничение по использованию: куки легко запретить и стереть.
● Низкая безопасность: куки легко посмотреть и подменить.
// Получаем хэш
$hash = password_hash("secretword", PASSWORD_DEFAULT);
// Проверяем хэш
if (password_verify('secretword', $hash))
print 'Пароль правильный!';
else
print 'Пароль неправильный!';
Использование “соленых” паролей
Существует метод взлома хэшей по “словарю”. В этом случае создаются
“радужные” таблицы, в которых содержатся самые распространенные пароли и
их хэши.
Вход в систему
login.php
Работа в системе
index.php
// Линия
ImageLine ( pic, x1, y1, x2, y2, color )
// Прямоугольник
ImageRectangle (pic, x1, y1, x2, y2, color )
ImageFilledRectangle (pic, x1, y1, x2, y2, color )
// Эллипс
ImageEllipse(pic, x, y, width, height, color)
ImageFilledEllipse(pic, x, y, width, height, color)
6.3 Текст и трансформации
Для вывода текста служат функции:
ImageString() - вывод горизонтального текста
ImageStringUp() - вывод вертикального текста
ImageString ( resource $image , int $font , int $x , int $y , string $string , int $color )
IMG_FLIP_HORIZONTAL По горизонтали.
IMG_FLIP_VERTICAL По вертикали.
IMG_FLIP_BOTH По горизонтали и вертикали.
6.6 Совмещение изображений
Для совмещения изображений служит функция
В строке
$db = mysqli_connect("localhost","root","root","test");
внесите изменения:
"root" - замените на имя БД,
"root" - замените на пароль к БД,
"test" - замените на имя БД.
Создание таблиц
Зайдите в файл index.php
В строке
//InitDB();
уберите знаки комментария “//”
Рекомендуемые шаги:
1. Сделать бесплатный сервис.
2. Смотреть статистику и отзывы.
3. Добавить платные функции.
4. Работать по найму
Здесь многое зависит от нанимателя. Следите, чтобы проект был
современный. Тогда вы можете многому научиться.