Дипломная работа: Автоматизация приема заявок на ремонт и модернизацию ПК (на примере аптечной сети "Ригла")

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
54
Работа над базой данных осуществляется всеми сотрудниками отдела
автоматизации. Ответственным сотрудником за поддержку базы назначается
старший инженер отдела. В его задачи входит обеспечение сохранности базы
данных, обучение вновь назначаемых сотрудников аптек, подготовка актов
на списание техники и прием-передачу, присвоение учетных номеров
техническим объектам, проведение инвентаризации.
2.11 База логинов и паролей для сотрудников аптек. Код для проверки
подключения
Кроме того, в обязанности сотрудников входит ввод данных о клиентах
с предоставлением им логинов и паролей.
На сервере MySQL создана таблица
CREATE TABLE “users_table”
(
“user_id”int(11) unsigned NOT NULL auto_increment,
“user_login”varchar(30) NOT NULL,
“user_password”varchar(32) NOT NULL,
“user_hash”varchar(32) NOT NULL default '',
“user_ip” int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`user_id`)
)
ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;
<?
// регистрации пользователя
// соединение с БД
$link=mysqli_connect("localhost", "mysql_user", "mysql_password", " users_table
");
if(isset($_POST['submit']))
{
$err = [];
55
//проверка логин
if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
{
$err[] = "Логин может состоять только из букв латинского алфавита и цифр";
}
if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)
{
$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
}
//проверка на наличие еще одного пользователя с таким именем
$query = mysqli_query($link, "SELECT user_id FROM users WHERE
user_login='".mysqli_real_escape_string($link, $_POST['login'])."'");
if(mysqli_num_rows($query) > 0)
{
$err[] = "Пользователь с таким логином уже существует в базе данных";
}
//Если нет ошибок, то добавляем в БД нового пользователя
if(count($err) == 0)
{
$login = $_POST['login'];
//убираем лишние пробелы и делаем двойное хеширование
$password = md5(md5(trim($_POST['password'])));
mysqli_query($link,"INSERT INTO users SET user_login='".$login."',
user_password='".$password."'");
header("Location: login.php"); exit();
}
else
{
print "<b>При регистрации произошли следующие ошибки:</b><br>";
foreach($err AS $error)
56
{
print $error."<br>";
} } }
?>
<form method="POST">
Логин <input name="login" type="text" required><br>
Пароль <input name="password" type="password" required><br>
<input name="submit" type="submit" value="Зарегистрироваться">
</form>
2.12 Разработка html-формы и кодов запросов на php к базе данных со
стороны сотрудников аптек
Сотрудники аптек, а также сотрудники отдела автоматизации могут
зайти на сервер ООО «Ригла» (рисунок 44) для того чтобы соединиться с
базой данных под своим логином и паролем
При регистрации в базу данных записывается логин пользователя и
пароль в двойном md5 шифровании.
Все сведения о пользователях хранятся в таблице user_table
user_id int(11) unsigned NOT NULL auto_increment,
user_login varchar(30) NOT NULL,
user_password varchar(32) NOT NULL,
user_hash varchar(32) NOT NULL default '',
user_ip int(10) unsigned NOT NULL default '0',
PRIMARY KEY (user_id)
57
Рисунок 44. Форма входа для сотрудника
//соединение с БД
$link=mysqli_connect("localhost","mysql_user","mysql_password","user_table");/
if(isset($_POST['submit']))
{
//поиск в БД записи с логином равным введенному
$query = mysqli_query($link,"SELECT user_id, user_password FROM users
WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."'
LIMIT 1");
$data = mysqli_fetch_assoc($query);
//сравнение паролей
if($data['user_password'] === md5(md5($_POST['password'])))
{
//генерируем случайное число и шифруем его
$hash = md5(generateCode(10));
if(!empty($_POST['not_attach_ip']))
{
// привязка к IP
//переводим IP в строку
$insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
58
}
//записываем в БД новый хеш авторизации и IP
mysqli_query($link, "UPDATE users SET user_hash='".$hash."' ".$insip."
WHERE user_id='".$data['user_id']."'");
//храним куки
setcookie("id", $data['user_id'], time()+60*60*24*30);
setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true);
//переадресовываем браузер на страницу проверки скрипта
header("Location: check.php"); exit();
}
else{
print "Вы ввели неправильный логин/пароль";
} } ?>
Сотрудники аптеки должны иметь возможность составить заявку
(рисунки 45,46,47), изменить ранее составленную заявку, и, в случае
затруднений, заказать обратный звонок (приложение 1).
Рисунок 45. Форма выбора
Код формы, без таблицы стилей
<html>
<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="stylesotrud.css">
Источник: https://baza.diplomsite.ru/previewfile/1927