Квест PHP 1

Задание 1

Создание многошаговой формы Создайте произвольную форму с двенадцатью элементами управления. Напишите такой PHP код, чтобы посетитель мог заполнять форма частями по 3-4 элемента. Т.е. должно быть 4 или 3 шага заполнения.

Результат: task1.php

Код: https://pastebin.com/CfMdYuNM

Задание 2.

Создание формы логина

Создайте форму для ввода логина и пароля. Параметры полей должны называться login и psw. Если логин и пароль вводятся правильно (значения «admin» и «Fs~j4Ms|Go») — выводить «секретное» меню для менеджера сайта, иначе сообщение о некорректном вводе

Это тренировочное задание: оно не требует работы с сессиями или базой. Пароль при вводе не должен быть виден в поле ввода

Используйте для работы Bootstrap

Укажите метод POST в элементе form

Форма должна отправляться на саму себя

Для удобства проверки решения, поместите логин и пароль в константы (admin: Fs~j4Ms|Go, psw: Fs~j4Ms|Go)

Секретное меню представляет собой 4 гиперссылки, которые должны быть видны только при условии правильного ввода логина/пароля

Результат:task2.php

Код:https://pastebin.com/mEK7dsDN

Задание 3

Проверка полей формы Напишите скрипт, который по заданному многомерному массиву создаст разметку формы с полями внутри. А при обработке пробежит по всем элементам массива и отфильтрует данные в зависимости от их типа. Например, для PHP массива $elements:

$elements = [
						 [
						   "element" => "input",
						   "htmltype" => "text",
						   "name" => "firstname",
						   "type" => "string",
						   "placeholder" => "Введите имя"
						 ],
						 [
						   "element" => "input",
						   "htmltype" => "text",
						   "name" => "age",
						   "type" => "integer",
						   "placeholder" => "Введите возраст"
						 ],
						 [
						   "element" => "input",
						   "htmltype" => "radio",
						   "name" => "gender",
						   "type" => "boolean",
						   "value" => "male",
						   "label" => "мужской"
						 ],
						 [
						   "element" => "input",
						   "htmltype" => "radio",
						   "name" => "gender",
						   "value" => "female",
						   "type" => "boolean",
						   "label" => "женский"
						 ],
						 [
						   "element" => "input",
						   "htmltype" => "submit",
						   "value" => "Отправить"
						 ],
						];
				
Нужно получить HTML форму приблизительно такого содержания:


				

После выполнения задания и проверки его мной, поиграйтесь с набором ключей массива и вариантами вывода формы После отправки формы, в полях должны оставаться отправленные значения При нажатии на label радиокнопка должна отмечаться (вспомните как это сделать на чистом HTML)

Результат: task3.php Код: https://pastebin.com/Y1pgWikH

Задание 4

Нахождение частоты встречаемости слов

Создайте форму из textarea и input type="submit". При вводе произвольного текста и отправки формы, скрипт обработки должен выводить ниже список слов в порядке уменьшения частоты встречаемости каждого слова. Например, так



					
						

При обработке формы и выводе таблицы исходный текст в textarea должен сохраняться.

Изначально в поле тоже должен содержаться текст: 100 слов из lorem

Результат: task4.php

Код: https://pastebin.com/P3gZVVWs

Задание5

Напишите PHP-код сортировки массива с использованием анонимной функции (https://www.youtube.com/watch?v=IhPkWLRCjvQ)

массив должен быть отсортирован по любому ключу

[ [ «title» => «Lenovo», «price» => 9e3, «reviews» => 107, «rating» => 11], [ «title» => «iPhone», «price» => 9e4, «reviews» => 120, «rating» => 12], [ «title» => «Samsung», «price» => 5e4, «reviews» => 110, «rating» => 14], [ «title» => «Lenovo», «price» => 2e4, «reviews» => 130, «rating» => 15], [ «title» => «Xiaomi «, «price» => 7e3, «reviews» => 110, «rating» => 13], ]

Результат: task5.php

Код: https://pastebin.com/H6n5snm8

Задание 6

Разработка постраничного разбиения Рано или поздно вы столкнётесь с необходимостью вывода большого количества материала с разбиением его на отдельные страницы/фрагменты. Pagination — термин, который используется для обозначения ссылок на наборы товаров или материалов на странице. Напишите PHP код, который реализует постраничное разбиение материала. (http://htmllab.ru/php-pagination/) выведите массив данных так, чтобы на каждой странице показывалось три товара массив данных [ [ «title» => «Lenovo», «price» => 9e3, «reviews» => 107, «rating» => 11], [ «title» => «iPhone», «price» => 9e4, «reviews» => 120, «rating» => 12], [ «title» => «Samsung», «price» => 5e4, «reviews» => 110, «rating» => 14], [ «title» => «Lenovo», «price» => 2e4, «reviews» => 130, «rating» => 15], [ «title» => «Xiaomi «, «price» => 7e3, «reviews» => 110, «rating» => 13], ] посмотрите как реализовано постраничное разбиение в Яндекс и Гугл

Результат:task5.php

Код: https://pastebin.com/6bbB0rGG

Задание 7

Работа с пространством имен

Познакомьтесь с понятием пространства имён в PHP (http://htmllab.ru/php-namespace/) и напишите свою реализацию функции print_r(), которая будет выводить содержимое сразу в pre

Результат:http://r40271.hostde13.fornex.org/php1-quest/task7.php

Код: https://pastebin.com/XQ94P1sS

Задание 8: Создание PHP-приложения

Создайте PHP-приложение так, чтобы основной точкой входа в приложение был файл index.php.

Рядом с index.php создайте папку pages с HTML и PHP страницами

Подключайте страницы в зависимости от входного параметра q

Настройте работу чистых ссылок и проверьте, что в зависимости от URL адресной строки подключаются различные файлы

Примечание: вспомните работу с .htaccess и посмотрите функцию file_exists()