Алгоритм авторизации.
1. ввод login и пароля;
2. проверка существующего login;
3. проверка пароля login;
5. проверка регистрации блока сессии;
6.сообщение об успешной авторизации, смена стиля шаблона страницы;
7. если переменная не зарегистрирована, он считается анонимом.
Можно сформировать запрос: выбрать все, если есть соответствие:
SELECT *
FROM users
WHERE login=”login” and pswd=”pswd”.
Чтобы исключить SQL инъекции необходимо выполнить запрос:
SELECT *
FROM users
WHERE login=”login”
Значение пароля из текущего набора данных сохраняем в переменную и сравниваем с введенным значением.
Logout:
<?php
#--------------------------Запуск сессии-------------------------
session_start ();
#-------------------------Установка соединения с сервером MSSQL----
/*
@ $conn=mssql_connect($DBHost, $DBUser, $DBPassword);
if (!#conn) {
include “./inc/top.php”; # прорисовать стандартный верх
echo “<table> <tr><td>”;
echo “Ошибка соединения с сервером базы данных!!!”;
echo “</td></tr></table>”;
exit ();
#----------------Выбор активной БД----------
mssql_select_db ($DB_ST);
#-------------------------------
$ui=”none”;
if (isset ($_SESSION[‘uid’])) {
$ui=$_SESSION[‘uid’];
}
$ip=”none”;
if (isset ($_SERVER[‘REMOTE_ADDR’])) {
$ip=$_SERVER[‘REMOTE_ADDR’];
}
# $str_sql=”exec pr_log_out ‘ “.$ui.” ‘ “;
# $data_set=mssql_query($str_sql); */
#-----------------------Удалить переменную сессии-----------
unset ($_SESSION[‘uid’]);
unset ($_SESSION[‘nam’]);
unset ($_SESSION[‘kod_podr’]);
include “./inc/top.php”; # прорисовать верх
include “./inc/main.php”; # прорисовать главную страницу
include “./inc/bottom.txt”; # прорисовать низ
?>
Login:
<?
#--------------Запуск сессии--------------
session_start();
#-------------------Загрузить файл настроек-------------
include “./inc/config.php”;
#---------------------
# если была нажата кнопка входа для деканатов
if (isset ($bt_auth)) {
# если не существуют
if (!isset ($login) l l !isset ($pswd)
include “./inc/top.php”; # прорисовать верх
include “./inc/main.php”; # прорисовать главную страницу
include “./inc/bottom.txt”;
exit ();
}
$login=trim ($login);
$pswd=trim ($pswd);
$login=substr ($login,0,12);
$pswd=substr($pswd,0,12);
# если пустое имя или пароль
if (empty ($login) l l empty ($pswd)) {
include “./inc/top.php”; # прорисовать верх
include “./inc/main.php”; # прорисовать главную страницу
include “./inc/bottom.txt”;
exit ();
}
# проверка строки пароля на вшивость
/* $spec=” \ ” ‘ \\{} [] () ! ? l - + = . * , ; ~ @ # $ % ^ & “;
if (ereg (“ [“.$spec.”]”, $pswd)) {
include “./inc/top.php”; # прорисовать верх
include “./inc/main.php”; # прорисовать главную страницу
include “./inc/bottom.txt”;
exit ();
} */
#-------------Установка соединения с сервером MySQL
@ $conn=mssgl_connect ($DBHost, $DBUser, $DBPassword);
if (!$conn) {
include “./inc/top.php”; # прорисовать стандартный верх
echo “<table> <tr><td>”;
echo “Ошибка соединения с сервером базы данных!!!”;
echo “</td></tr></table>”;
include “.inc/bottom.txt”;
exit ();
}
#---------------Выбор активной БД----------
mssql_select_db($DB_ST);
#---------------------Аутентификация пользователей----------
if (($login) &&($pswd)) {
$str_sql=”SELECT * FROM users WHERE login=’ “.$login.” ‘ “;
$data_set=mssql_query ($str_sql);
$spec=” \ “ ‘ \\ {} [] () ! ? l - + = . * , . ; ~ @ # $ % ^ & “;
if ($data_set) {
$rst=mssql_fetch_array ($data_set); # получить данные о пользователе
if ($rst) {
if (($rst[‘pswd’]==$pswd) &&!ereg (“[“.$spec.”]”, $pswd)) {
unset ($_SESSION[‘uid’]); #удалить переменную сессии
unset ($_SESSION[‘nam’]); # удалить переменную сессии
unset ($_SESSION[‘kod_podr’]); # удалить переменную сессии
# регистрация переменной сессии
$_SESSION[‘uid’]=$rst[‘uid’];
($_SESSION[‘kod_podr’]=$rst[‘kod_podr’];
$_SESSION[‘nam’]=$rst[‘nam’].” “.$rst[‘fam’];
}
}
}
#------------сохраняем все логины---
$file_log=”./logs/users.log”;
@ $fp=fopen ($file_log, “a”);
if ($fp) {
#result=”ok”;
if (!isset ($_SESSION[‘uid’])) {
$result=”error”;
}
$outstring.=”[“.date(“L M-d H:i:s Y”). ”] “;
$forward=getenv (“HTTP_X_FORWARDED_FOR”);
$ip=$_SERVER[“REMOTE_ADDR”];
if (($forward!=NULL)&&($forward!=$_SERVER [“REMOTE_ADDR”])) {
$outstring.=”[“.$login.”] “;
$outstring.=”[“.$pswd.”] “;
$outstring.=”[“.$result.”] “;
$outstring.= “\n”;
fwrite($fp, $outstring);
fclose($fp);
} # if ($fp) {
}
} # if ($bt_auth) {
# проверяем результаты авторизации
$top_page=”top_u.php”;
$main_page=”main.php”;
# если пользователь не прошел авторизацию
if (!isset ($_SESSION[‘uid’])) {
$top_page=”top.php”;
$main_page=”log_err.php”;
}
include “./inc/”.$top_page; # прорисовать верх
include “./inc/”/$main_page; # прорисовать главную страницу
include “./inc/bottom.txt”;
?>
Дата добавления: 2015-08-26; просмотров: 1013;