Наш чат в Telegram для обмена идеями, проектами, мыслями, людьми в сфере ИТ г.Ростова-на-Дону: @it_rostov

Лабораторные работы по PHP

Установка PHP

Для выполнения PHP и отладки PHP-программ необходим набор программных средств состящих из: Apach, PHP, MySql, эмулятор почтового сервера. Наиболее простое решение это пакет Open Server для Windows. Для написания и редакторования PHP-программ идеальным решением является PhpStorm. И если Open Server является совершенно бесплатным програмным продуктом, то PhpShtorm – это Trial-версия на 30 дней, после которых нужно или купить лицензию или погуглить, как продлить ещё на 30 дней.

Вам необходимо скачать и установить OpenServer и PhpStorm. Создать новый проект с названием new.r, создать файл index.php, добавить в него вывод на экран с помощью оператора echo текст "Это моя первая программа на PHP."

Элементы языка

  1. Написать программу, которая содержит не менее 5-и переменных. Присвоить им значения разных типов и с помощью функции gettype() вывести тип каждой переменной на экран браузера.
  2. Присвоить значения двум переменным. С помощью операторов сравнения проверить, удовлетворяет ли первая переменная слудующим условиям:
    • равна второй;
    • меньше второй;
    • меньше или равна второй;
    • больше второй.

Управление потоком

  1. C помощью инструкции if вывести на экран строку "Для молодежи", если переменная $age находится в диапазоне от 18 до 30. Если значение переменной вне этого диапазона, то вывести строку "Для всех возрастов".
  2. Сделать то же самое, но если переменная $age находится в диапазоне от 1 до 17, то вывести строку "Для детей".
  3. Написать цикл while, который будет выводить на экран все нечетные числа от 0 до 50.
  4. Сделать то же самое с помощью цикла for.

Массивы

  1. Создать массив, содержащий названия фильмов, организованных по жанрам. пусть это будет ассоциированный массив, в котором имена полей будут жанрами ("мелодрама", "боевик", "детектив" и пр.), а элементами – названия фильмов.
  2. Просмотреть созданный массив в цикле, выводя название жанра и связанные с ним фильмы на экран.

Функции

  1. Создать функцию, которая выводит текст с разным размером шрифта. Функция имеет два аргумента: текстовая строка и размер шрифта.
  2. Создать функцию, которая принимает четыре текстовые строки, а выводит html-код таблицы, где каждая из исходных строк расположена в отдельной ячейке.

Строки

  1. Проверить, содержит ли адрес электронной почты символ @, и выведите предупреждающее сообщение, если такого символа нет.
  2. Создать массив, состоящий из целочисленных и вещественных значений. Считать этот массив в цикле, преобразовывая все элементы в вещественные значения с точностью в два знака после запятой. Вывести значения нового массива в столбец с выравниванием по правому краю.

Объектное программирование

  1. Переработать класс Table http://htmlweb.ru/php/php6.php пример 3 для вывода в формате таблицы с тегами table, th, tr, td
  2. Добавить закрытие тегов tr, th, td в примере 6 http://htmlweb.ru/php/php6.php
  3. Создать класс с именем baseClass, в свойствах которого сохраняются два числа. Написать к нему метод calculate(), который выводит эти числа на экран.
  4. Создать класс с именем addCalc, производный от класса baseClass. Переопределить его метод calculate() так, чтобы он выводил на экран сумму чисел.
  5. Создать класс с именем minusCalc, производный от класса baseClass. Переопределить его метод calculate() так, чтобы он выводил на экран разность первого и второго чисел.
  6. Создать класс содержащий static метод _GetVar(id, свойство), который создает объект класса и возвращает значение свойтва переданного во втором параметре. Это задание на понимание различий статических и динамических методов. При обращении к static методу нужно создать(new) новый экземпляр класса получить у него свойство, переданное в качестве параметра и вернуть его.
  7. Создать класс в котором будут производиться запись и чтение любых свойств этого класса. Использовать массив со свойствами и методы-перехватчики __get, __set, __unset, __isset
    Отдокументровать 3 свойства с помощью @property phpDoc
  8. Определить волшебный метод Sum(a,b) - сумирования двух "волшебных" свойств переданных в параметре с помощью __call. Отдокументровать этот метод, определенный с помощью phpDoc

Формы

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

Файлы

  1. Написать программу, которая спрашивает у пользователя его имя и фамилию и сохраняет эти данные в файл dataFile.
  2. Написать программу, которая читает данные из файла dataFile и выводит на экран, разделив на пронумерованные строки.
  3. Необходимо реализовать блокировку на доступ к некоторым данным для двух параллельно запущенных процессов. Если один из процессов поставил блокировку, второй процесс не имеет доступа к данным пока блокировка не будет снята. Реализовать средствами работы с файлами PHP: test1.php и test2.php хотят:
    • получить доступ к файлу test.txt (установить блокировку)
    • прочитать содержимое (в каждой строчке записано число)
    • просуммировать все числа
    • записать сумму в конец файла
    • снять блокировку
    В случае если блокировка уже установлена, скрипт должен ждать снятия блокировки. Изначальное содержимое test.txt:
            1
            2
            3

MySQL

  1. Создать БД с тремя полями:
    • адрес электронной почты (50 символов),
    • текст сообщения (250 символов),
    • дата и время отправления.
    Написать программу, с помощью которой пользователи могут заполнить эту БД.
  2. Написать программу, выводящую информацию из БД, созданной в предыдущем упражнении.
  3. Написать систему хранения книг в БД. Меня волнуют названия книг и авторы — больше ничего хранить не надо. Предложите структуру таблиц. Учтите, что книга может быть написана несколькими соавторами. Получите список книг, которые написаны 3-мя со-авторами. То есть получить отчет «книга — количество соавторов» и отфильтровать те, у которых со-авторов меньше 3х. Cделайте это одним SQL запросом.
  4. Есть база: фильмы и страны, у одного фильма может быть много стран производителей, надо построить базу. Нерадивый программист удалял фильмы, но не подчистил таблицу связи. Надо найти и удалить все мусорные записи которые остались в таблице связи.

Cookie

  1. Создать форму, с помощью которой пользователь может задать свой ник и выбрать цвет фона страниц сайта.
  2. Использовать cookie для того, чтобы приветствовать пользователя по имени на следующих страницах с заданным фоном.

Сессии

  1. Написать программу сохранения персональных настроек пользователя (ник и фон страниц) c использованием функций управления сессией.
  2. Написать программу, которая применяет функции управления сессией для запоминания того, какие страницы уже посещались пользователем. Вывести список ссылок на все посещенные страницы.

Дата, время

  1. Написать программу отсчета дней до дня рождения. Она должна содержать форму ввода дня, месяца и года и выводить сообщение о том, сколько дней, часов, минут и секунд осталось до дня рождения.
  2. Написать программу-календарь для любого месяца между 2000 и 2020 годом. Пользователь выбирает месяц и день из выпадающих списков, а даты для выбранного месяца выводятся в виде таблицы-календаря.

Математические функции

  1. Создать массив, наполнить его случайными значениями, найти максимальное и минимальное значение и поменять их местами.
  2. Файл содержит набор целых чисел, отделённых друг от друга произвольным количеством пробелов и переводов строк. Для каждого числа, начиная с последнего и заканчивая первым, в отдельной строке вывести его квадратный корень не менее чем с четырьмя знаками после десятичной точки.

Регулярные выражения

  1. Составить регулярное выражание для валидации даты в формате YYYY.mm.dd.
  2. C помощью регулярного выражения выделить из файла адреса электронной почты. Сохранить эти адреса в массиве и вывести на экран.

Дополнительно, если успеем:

Работа с почтой

  1. Составить регулярное выражание для валидации даты в формате YYYY.mm.dd.
  2. C помощью регулярного выражения выделить из файла адреса электронной почты. Сохранить эти адреса в массиве и вывести на экран.
  3. Прочитать по протоколу IMAP последние 10 заголовков писем и вывести Subject на экран.

Curl

  1. Авторизоваться на сайте htmlweb.ru, используя Ваши логин и пароль (адрес https://htmlweb.ru, POST name, password) и прочитать Ваш баланс на странице https://htmlweb.ru/user/balans.php. Выделить с помощью регулярного выражения сумму баланса и вывести ее на экран. Использовать:
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_filename);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_filename);

.htaccess

  1. Имеется php скрипт get.php, выводящий значения GET переменныx var1, var2 и var3 из строки запроса. Необходимо настроить апаче таким образом, чтобы при вводе в строку запроса index-var1-<значение>-var2-<значение>-var3-<значение>.html, запускался этот скрипт и выводил указанные значения. Использовать директивы модуля mod_rewrite и файл .htaccess.
  2. С помощь mod_rewrite если нет файла sitemap.xml, сделать вызов вместо sitemap.php

robots.txt, sitemap.xml

  1. Запретить интексацию папки /admin и /user для всех роботов. Исключить параметры ip и sid, чтобы страницы с этими параметрами и без них считались одной страницей. Указать путь к sitemap и основной домен без www и по протоколу http
  2. Добавить в карту сайта все html страницы, находящиеся в корневой папке сайта. Вернуть карту сайта в формате sitemap.xml

ZIP-Архивы

  1. Создать архив, добавить файл в архив с диска, создать папку, добавить файл в папку из строки, добавить комментарий к архиву.
  2. Открыть архив. Прочитать содержимое, распаковать все файлы с заданным расширением во временную папку.