X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Как сделать разавторизацию?
sc2r2bey
sc2r2bey
Topic Starter сообщение 30.12.2009, 11:16; Ответить: sc2r2bey
Сообщение #1


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

[php]<?php
///////////////////////////////////////////////////
// Система авторизации HTTP-Basic авторизации
// 2003-2005 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
///////////////////////////////////////////////////
// Устанавливаем соединение с базой данных
require_once("config.php");
// Если пользователь не авторизовался - авторизуемся
if(!isset($_SERVER['PHP_AUTH_USER']))
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
// Утюжим переменные $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'],
// чтобы мышь не проскочила
if (!get_magic_quotes_gpc())
{
$_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
}
$_SERVER['PHP_AUTH_USER'] = str_replace("'","`",$_SERVER['PHP_AUTH_USER']);
$_SERVER['PHP_AUTH_PW'] = str_replace("'","`",$_SERVER['PHP_AUTH_PW']);

$query = "SELECT pass FROM userlist WHERE name='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
// Если ошибка в SQL-запросе - выдаём окно
if(!$lst)
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если такого пользователя нет - выдаём окно
if(mysql_num_rows($lst) == 0)
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
// Если все проверки пройдены, сравниваем хэши паролей
$pass = @mysql_fetch_array($lst);
if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
{
Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header("HTTP/1.0 401 Unauthorized");
exit();
}
}
?>[/php]


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 3.1.2010, 0:51; Ответить: ZiTosS
Сообщение #2


sc2r2bey, попробуй просто удалить глобальные переменные.
[php]if ( выход )
{
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
}[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 13.3.2010, 4:09; Ответить: gaaarfild
Сообщение #3


или даже еще проще. session_destroy();
Эффект такой же, как если закрыть браузер. =)

А, ну да. Здесь нет сессий. =) Тогда Unset. =)

Но лучше сессии. =) Они безопаснее, ибо их сложнее подменить.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 13.3.2010, 12:34; Ответить: sc2r2bey
Сообщение #4


в общем с разахивизацией здесь ничего не выйде - утопия :P


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
phpuser
phpuser
сообщение 13.3.2010, 14:22; Ответить: phpuser
Сообщение #5


Делай с помощью сессий и всё у тебя получится.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 13.3.2010, 18:49; Ответить: sc2r2bey
Сообщение #6


как?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 14.3.2010, 0:09; Ответить: ZiTosS
Сообщение #7


sc2r2bey,
1) Пользователь вводит логин и пароль, его отправляют на проверку
2) Если такой пользователь присутствует в базе, создаём сессию:
2.1) Вначале скрипта обязательно надо инициализировать сессии
[php]session_start();[/php]
2.2) Затем нужно создать переменные сессии, к примеру так
[php]$_SESSION['login'] = "логин";
$_SESSION['password'] = "пароль";[/php]
3) При обращении к странице, надо проверять наличие переменных в сессии, и если их нет отправлять на авторизацию, а если есть, лучше повторно проверить
4) Выход из авторизованной зоны осуществляется удалением сессии
[php]session_destroy();[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 14.3.2010, 0:44; Ответить: sc2r2bey
Сообщение #8


а насколько оправданное логин и пароль хранить в сессии?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 14.3.2010, 1:09; Ответить: ZiTosS
Сообщение #9


sc2r2bey, логин и пароль хранить оправдано тем, что данные хранятся не у пользователя, а на сервере. Доступ к ним может получить только скрипт по ID-сессии. А вот ID-сессии хранится в куках у пользователя, или передаётся в GET-параметре между страницами.
В HTTP данные передаются по незашифрованному каналу, так что получить некие данные можно будет и при общении пользователя со скриптом. Сам этим не практиковался...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BaCo
BaCo
сообщение 18.3.2010, 18:43; Ответить: BaCo
Сообщение #10


Можно шифровать пароль с помощью функции md5().
Тогда его долго придется расшифровывать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как в пушсетках покупают по 100-200 тысяч кликов за день?
2 Boymaster 666 Сегодня, 17:52
автор: Boymaster
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
151 adw-kupon.ru 19835 Вчера, 13:52
автор: Vmir
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
20 uahomka 3461 Вчера, 11:54
автор: Skyworker
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
30 freeax 5030 20.4.2024, 16:49
автор: Liudmila
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
13 Boymaster 2032 20.4.2024, 15:06
автор: Boymaster


 



RSS Текстовая версия Сейчас: 24.4.2024, 22:39
Дизайн