- <?
- session_start(); //Начинаем сессию для проверки и хранения данных о логине и пароле пользователя
- require_once('funcs.php'); //Подключаем файл с функциями, в то время как в этом файле будет исключительно логика работы сайта
- initMySQL(); //Обращаемся к функции подключения к MySQL базе данных
- //Проверяем, авторизован ли уже пользователь, и если нет, то выполняем код в блоке ниже
- if(!isAuthorized()) {
- //Есть ли что-нибудь в массиве $_POST (была лы нажата кнопка "Войти") и было ли введено что-либо в поле name ("Логин")
- if(count($_POST) && $_POST['name']) {
- //Перекладываем данные о логине и пароле из формы в переменные для более удобного использования
- $name = $_POST['name'];
- $pass = $_POST['pass'];
- //Если на сервере отключено автоматическое добавление слешей, то нужно сделать это вручную
- if(!get_magic_quotes_gpc()) {
- $name = addslashes($name);
- $pass = addslashes($pass);
- }
- //Проверяем, удастся ли нам авторизоваться по введенным логину и паролю
- if(checkAuthorization($name, $pass)) {
- //Авторизация прошла успешно, надо записать введенные данные в сессию
- storeAuthorization($name, $pass);
- //Отправляем пользователя на ту же самую страницу и завершаем исполнение программы
- header('Location: ?');
- die();
- } else {
- //Авторизация не удалась, запишем текст ошибки для вывода на странице
- $error = 'Пара Логин-Пароль введены не верно';
- }
- }
- //Выводим верхнюю часть сайта, кусок html кода с формой авторизации и нижнюю часть сайта. После этого останавливаем исполнение программы
- include('html/top.php');
- include('html/login.php');
- include('html/bottom.php');
- die();
- }
- //В этому моменту мы уже проверили, авторизовано ли пользователь и можно начать выполнять обычную логику работы сайта
- //Переменная act из $_GET массива служит указателем того, какое действие нужно выполнить
- $act = $_GET['act'];
- //Выбираем что делать, в зависимости от значения act
- switch($act) {
- //Если act имеет значение list или любое другое, которого нет в возможных вариантах (default)
- case 'list':
- default: //...то выводим список студентов
- //Записываем переменные года и группы из $_GET массива для использования их в шаблоне и выбора студентов из базы данных
- $year = $_GET['year'];
- $group = $_GET['group'];
- //Получаем список лет
- $years = getYears();
- //Если уже выбран год
- if($year) {
- //Получаем список групп исходя из выбранного года
- $groups = getGroups($year);
- //Если уже выбрана группа
- if($group) {
- //Запрашиваем из базы данных список студентов по выбранному году и группе
- $students = getStudentsFiltered($year, $group);
- //Логика того, что нужно выводить на страницы определена внутри конкретного шаблона. В данном случае это html/list.php
- }
- }
- //Страница со списком студентов и выпадающими списками в левой колонке
- $current_page = 'list.php';
- break;
- case 'student':
- //Получаем переменную id из $_GET массива, которая является номером студента в базе данных, обернув ее в функцию превращения в целое число
- $id = intval($_GET['id']);
- //Получаем массив с данными студента из базы данных
- $student = getStudent($id);
- //Страница подробных данных о студенте
- $current_page = 'student.php';
- break;
- case 'admin': //Административная часть, в которой идет редактирование списка студентов
- //Если пользователь не является администратором (см. isAuthorized() в funcs.php), то закончить выполнение программы с сообщением "Доступ закрыт"
- if(!$logged_user['is_admin']) die('Доступ закрыт');
- //По аналогии с переменной act, получаем переменную what, которая будет определять, что делать внутри административной части
- $what = $_GET['what'];
- switch($what) {
- case 'list': //И снова, если what стоит на list или на любое, которое не описано внутри этого блока switch
- default: //...то выводим список студентов для админки
- $students = getStudents(); //Вызываем функцию получения (всех) студентов
- //Эта страница - список студентов, на ней выведем только что полученных студентов
- $current_page = 'admin.php';
- break;
- case 'add': //Выводим форму добавления нового студента
- //Если массив $_POST имеет размер, то значит что мы отправили форму и нужно из данных формы создать новую запись
- if(count($_POST)) {
- //Вызываем функцию создания нового студента и отправляем в нее весь $_POST массив
- createStudent($_POST);
- //Отправляем пользователя на главную страницу админки и завершаем выполнение программы
- header('Location: ?act=admin');
- die();
- }
- //Страница с формой
- $current_page = 'admin_add.php';
- break;
- case 'edit': //Выводим форму редактирования студента
- //Получаем переменную id из $_GET массива, которая является номером студента в базе данных, обернув ее в функцию превращения в целое число
- $id = intval($_GET['id']);
- //Если массив $_POST имеет размер, то значит что мы отправили форму и нужно из данных формы обновить запись
- if(count($_POST)) {
- //Вызываем функцию редактирования студента и отправляем в нее id студента и весь $_POST массив
- editStudent($id, $_POST);
- //Отправляем пользователя на главную страницу админки и завершаем выполнение программы
- header('Location: ?act=admin');
- die();
- }
- //Запрашиваем данные о редактируемом студенте
- $student = getStudent($id);
- //Страница с формой
- $current_page = 'admin_edit.php';
- break;
- case 'del': //Удаляем запись о студенте и сразу же возвращаем пользователя на список админки
- //Получаем переменную id из $_GET массива, которая является номером студента в базе данных, обернув ее в функцию превращения в целое число
- $id = intval($_GET['id']);
- //Вызываем функцию удаления студента по его id
- deleteStudent($id);
- //Отправляем пользователя на главную страницу админки и завершаем выполнение программы
- header('Location: ?act=admin');
- die();
- break;
- }
- break;
- case 'logout': //Выход из системы
- //Вызываем функцию, очищающую сессию
- doLogout();
- //Отправляем пользователя на начальную страницу (где он снова увидит форму авторизации)
- header('Location: ?');
- die();
- break;
- }
- //Выводим верх и низ сайта и текующую страницу, значение которой мы получили выше
- include('html/top.php');
- include('html/'.$current_page);
- include('html/bottom.php');
- ?>