3.2. Реализация GUI преподавателя На главной странице есть кнопка входа, если внести данные для определенного преподавателя, то откроется личный кабинет.
Система авторизации описана ниже.
include($_SERVER['DOCUMENT_ROOT']."/script-php/link-connect.php");
//Функиция Авторизации $inp_log_auth = $_POST['inp_log_auth'];
//Проверка Данных пользователя { $sql_auth_proverka = "SELECT * FROM `users` WHERE `login` = '$inp_log_auth'"; $result_auth = mysqli_query($conn, $sql_auth_proverka); $result_auth_array = mysqli_fetch_array($result_auth);
//проверка Логина if(isset($result_auth)) {
//Проверка Пароля $inp_pass_auth = $_POST['inp_pass_auth']; $pass_hash = $result_auth_array['pass']; if (password_verify($inp_log_auth, $pass_hash)) {
//Запись в сессию уникального id session_start(); $_SESSION['action'] = $result_auth_array['id_users'];
echo "good"; } else echo "Неверный Пароль!".$pass_hash; } else { echo "Неверный Логин!"; } }
На главной странице преподавателя есть три кнопки меню: редактировать тест, создать новый, а также посмотреть статистику.
Рисунок 3.3. Главная страница преподавателя.
Страница редактирования теста показана на рис (3.4).
Рисунок 3.4. Редактирование теста.
Запись теста в базу данных. Формирование его в массив для отправки показан в листинге 2.
Работа на стороне браузера(js), описана в листинге 3.
3.3. Реализация GUI Администратора
Администратор может управлять предметами и преподавателями, а так
Изменять главную информацию на сайте с помощью редактора текста на js.
Рисунок 3.4. Панель редактирования.
Так же есть возможность менять главную картинку на сайте с помощью данного кода:
include($_SERVER['DOCUMENT_ROOT']."/script-php/link-connect.php");
// Название $input_name = 'file';
// Разрешенные расширения файлов. $allow = array();
// Запрещенные расширения файлов. $deny = array( 'phtml', 'php', 'php3', 'php4', 'php5', 'php6', 'php7', 'phps', 'cgi', 'pl', 'asp', 'aspx', 'shtml', 'shtm', 'htaccess', 'htpasswd', 'ini', 'log', 'sh', 'js', 'html', 'htm', 'css', 'sql', 'spl', 'scgi', 'fcgi', 'exe' );
// Директория куда будут загружаться файлы. //$path = $_SERVER['DOCUMENT_ROOT']."/"; $path = $_SERVER['DOCUMENT_ROOT']."/src/";
$error = $success = '';
if (!isset($_FILES[$input_name])) { $error = 'Файл не загружен.'; } else { $file = $_FILES[$input_name];
// Проверим на ошибки загрузки. if (!empty($file['error']) || empty($file['tmp_name'])) { $error = 'Не удалось загрузить файл.'; } elseif ($file['tmp_name'] == 'none' || !is_uploaded_file($file['tmp_name'])) { $error = 'Не удалось загрузить файл.'; } else { // Оставляем в имени файла только буквы, цифры и некоторые символы. $pattern = "[^a-zа-яё0-9,!@#%^-_\$\?\(\)\{\}\[\]\.]"; $name = mb_eregi_replace($pattern, '-', $file['name']); $name = mb_ereg_replace('[-]+', '-', $name); $parts = pathinfo($name);
if (empty($name) || empty($parts['extension'])) { $error = 'Недопустимый тип файла'; } elseif (!empty($allow) && !in_array(strtolower($parts['extension']), $allow)) { $error = 'Недопустимый тип файла'; } elseif (!empty($deny) && in_array(strtolower($parts['extension']), $deny)) { $error = 'Недопустимый тип файла'; } else { // Перемещаем файл в директорию. if (move_uploaded_file($file['tmp_name'], $path . $name)) { // Далее можно сохранить название файла в БД и т.п. mysqli_query($conn, "UPDATE `content` SET `img_content`= '$name' WHERE `id`='1'"); $success = ' Файл «' . $name . '» успешно загружен. '; } else { $error = '3Не удалось загрузить файл.'; } } } }
// Вывод сообщения о результате загрузки. if (!empty($error)) { $error = ' ' . $error . ' '; }
$data = array( 'error' => $error, 'success' => $success, 'img_name' =>$name, );
header('Content-Type: application/json'); echo json_encode($data, JSON_UNESCAPED_UNICODE); exit();
?>
Основной функционал администратора расписан в листингах 4-5.
|