русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Построение электронного магазина.


Дата добавления: 2013-12-23; просмотров: 985; Нарушение авторских прав


Алгоритм авторизации.

Механизмы авторизации, регистрации и аутентификации.

Доступ к переменным, находящимся в ассоциативных массивах GET и POST.

Прием и обработка значений передаваемых параметров.

Данная процедура должна удовлетворять следующему алгоритму:

1. в виду того, что значение параметров передается в виде строки текста необходимо удалить ненужную часть.

 

Размер поля size=3 определяет длину поля в визуальном отображении.

$var=substr($var,0,n)

n – число требуемых символов.

 

2. проверить наличие запрещенных символов в текстовом выражении переменных: знаки арифметических операций, кавычки, знаки препинания (: ; ! ?), специальные символы (&) и так далее.

Данная процедура зависит от предполагаемого типа переменных. Для выполнения более сложного анализа переменных необходимо использовать механизм регулярных выражений.

Механизм регулярных выражений позволяет использовать следующие инструменты:

1. шаблоны искомого текста;

2. элементы шаблона, которые включают:

- специальные символы;

- модификаторы;

- квантификаторы;

- одиночные символы;

- групповые операции.

If (! ereg (“^[0123456789] {1,5} $”, $value))

{

$retval=0;

break;}

ereg – команда, которая позволяет выполнить регулярное выражение.

^ - начало строки

$ - конец строки

если последовательность не найдена, то 12В-ошибка.

Регулярное выражение:

$text=~/шаблон/ проверка поиска текстового выражения.

элементы шаблона:

\d – цифра \D – не цифра

\s – пробел \S – не пробел

\w – латинская буква \W – не латинская буква

^ - начало строки

$ - конец строки

. – любой символ.

Модификаторы поиска:

+ - шаблон встречается 1 или более раз в тексте;

* - шаблон встречается 0 или более раз;



{n} - шаблон встречается n раз;

{n,m} - шаблон встречается от n до m раз;

{,m} - шаблон встречается не более чем m раз.

Поиск из комбинации латинских символов (цифр) в нотации Perl:

If ($text=~m/^\d {1,5} $/){

Print “ok”;

}

/^\d{1,5}$/

// - граница регулируемого выражения;

^ - начало строки текста;

\d – любая цифра, которая встречается от 1 до 5 раз;

$ - граница окончания строки текста.

Не соответствует: 12В – есть буква, 1278910 должно быть минимум 5 цифр, 2А4 – есть буква.

Если изменить квантификатор на /\d+/, то будет происходить поиск символов из 1 более символов.

1. анализ метода передачи данных от клиента серверу:

if ($_SERVER [“REQUEST_METHOD”]==”GET”) {

$VAL=@S_GET [$name];

else {$val=@$_POST[$name];

}

Для разграничения прав доступа пользователей к страницам сайта используют механизмы авторизации, регистрации и аутентификации.

Регистрация – процедура присвоения пользователю системы уникального идентификатора имени и пароля для входа.

Авторизация – процедура проверки соответствия введенного имени пользователя и пароля.

При работе с страницей сайта необходимо принимать во внимание следующее: каждое отдельное окно обозревателя есть независимое приложения, поэтому данные, введенные в предыдущей странице никаким образом не влияют на работу вызываемого сценария.

 

В обычном компилирующем приложении переменные, которые в главной функции была помещена в область глобальной переменной остается доступна для всех вызываемых функций.

При работе с сценариями или web-приложении у каждого сценария своя область глобальной переменной:

Рассмотрим следующий алгоритм:

 

href=’secret.html?login=”root”&password=”123”‘

Для устранения несанкционированного доступа к секретной странице и постоянной идентификации пользователя необходимо использовать механизм сессий.

 

 

 


Лекция 8

Алгоритм работы с переменными сеанса следующий:

1. запуск сессии;

2. проверка установленной переменной сессией;

3. в случае, если переменная не установлена, запретить доступ к «секретной» странице;

4. в случае, если предоставить пользователю доступ.

 

session_start();

if (!Isset ($_SESSION [‘uid’])) {

{ $uri=”htpp:/127.0.0.1/~my/index.php”;

header (“Location:$uri”);

exit ();

}

Для доступа на закрытую страницу сайта пользователя необходимо идентифицировать по значению уникальные номера. Для этого создается база данных пользователя минимальной структурой:

 

uid Name Users login pswd
Идентификатор, внутренний номер ник Имя для входа в систему Пароль, подтверждающий право входа в систему

 

Дополнительно в таблице пользователей может быть указан профиль или список доступных привилегий пользователя относительно функций системы и относительно правам доступа к таблицам баз данных.

Регистрация переменной сессии происходит на этапе авторизации.

 

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”;

?>

 




<== предыдущая лекция | следующая лекция ==>
Запуск сценария с параметрами. | Требования, предъявляемые к организации Internet-магазинов.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.008 сек.