И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
schizoid
- подполковник
- Сообщения: 3228
- Зарегистрирован: 2007-03-03 17:32:31
- Откуда: Украина, Чернигов
-
Контактная информация:
Непрочитанное сообщение
schizoid » 2009-10-29 12:47:52
Народ, сильно не пинайте, я в php почти никак.
Есть внутренний сайт, в нем система авторизации вот таким вот образом:
Код: Выделить всё
if (!isset($_SERVER['PHP_AUTH_USER']))
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
else {
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']);
}
$query = "SELECT pass,user,name FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
$lst = @mysql_query($query);
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 ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
{
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
Header ("HTTP/1.0 401 Unauthorized");
exit();
}
}
как в таком случае прикрутить к сайту кнопку "Выход", что б не закрывая броузер можно было залогиниться под другим пользователем?
ядерный взрыв...смертельно красиво...жаль, что не вечно...
schizoid
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
schizoid
- подполковник
- Сообщения: 3228
- Зарегистрирован: 2007-03-03 17:32:31
- Откуда: Украина, Чернигов
-
Контактная информация:
Непрочитанное сообщение
schizoid » 2009-10-29 13:05:22
т.е. нужно переделывать систему авторизации?
если да, то какая нужна?
и какая у меня сейчас...

ядерный взрыв...смертельно красиво...жаль, что не вечно...
schizoid
-
paradox
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Непрочитанное сообщение
paradox » 2009-10-29 13:07:57
Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
наскоко я понимаю это авторизация апача
и после ее прохода
обратно уже никак (хотя может я не знаю чего)
что бы было нормально на основе всяких логаут
то нужно делать авторизацию по сессиями в php
и отслеживать их
paradox
-
schizoid
- подполковник
- Сообщения: 3228
- Зарегистрирован: 2007-03-03 17:32:31
- Откуда: Украина, Чернигов
-
Контактная информация:
Непрочитанное сообщение
schizoid » 2009-10-29 13:33:33
аха. лады. пошел гуглить
ядерный взрыв...смертельно красиво...жаль, что не вечно...
schizoid
-
paradox
- проходил мимо
- Сообщения: 11620
- Зарегистрирован: 2008-02-21 18:15:41
Непрочитанное сообщение
paradox » 2009-10-29 13:41:51
мой биллинг можешь скачать там по сессиям
правда я делал еще в 2004 году
так что может уже что устарело
или php чего поддерживать перестал
paradox
-
Sla
- мл. сержант
- Сообщения: 73
- Зарегистрирован: 2008-08-19 15:09:19
Непрочитанное сообщение
Sla » 2009-10-29 14:30:39
а посылая
Header ("HTTP/1.0 401 Unauthorized");
разве не происходит логаут?
Sla
-
schizoid
- подполковник
- Сообщения: 3228
- Зарегистрирован: 2007-03-03 17:32:31
- Откуда: Украина, Чернигов
-
Контактная информация:
Непрочитанное сообщение
schizoid » 2009-10-29 15:42:38
та вот что-то не получается с ним.
уже собсна почти написал авторизацию через сессии
ядерный взрыв...смертельно красиво...жаль, что не вечно...
schizoid
-
zg
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Непрочитанное сообщение
zg » 2009-10-29 21:29:33
schizoid писал(а): 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']);
}
ты где этого нахватался?
schizoid писал(а):как в таком случае прикрутить к сайту кнопку "Выход"
у меня сделано так
Код: Выделить всё
<?
// Стартуем сессию
if ( !session_id() ) session_start();
// Разлогирование и повторный запрос пароля
if ( isset($_SESSION['LOGOUT']) && $_SESSION['LOGOUT'] === true )
{
$_SESSION['LOGOUT'] = false;
sendAuthHeaders();
}
// Проверка на "вшивость"
if ( !isset($_SERVER['PHP_AUTH_USER']) || !$_SERVER['PHP_AUTH_USER'] ) sendAuthHeaders();
if ( !isset($_SERVER['PHP_AUTH_PW' ]) || !$_SERVER['PHP_AUTH_PW' ] ) sendAuthHeaders();
// Авторизуем пользователя
if ( !authUser($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) ) sendAuthHeaders();
// Авторизация прошла успешно!
return true;
/**
* Функция авторизует пользователя и сохраняет его в сессии
*
* @param string $login
* @param string $password
* @return bool
*/
function authUser($login, $password)
{
// Если в сессии есть значения
if ( isset($_SESSION['PW_USER']) )
{
/* @var $user User */
$user = $_SESSION['PW_USER'];
// Проверяем пользователя в сессии
if ( $user->login === $login && $user->password === $password )
{
// Данные пользователя в сессии совпали, пользователь уже авторизован
return true;
}
else
{
// Пользователь в сессии не совпал, нужна новая авторизация
unset($_SESSION['PW_USER']);
return false;
}
}
// Пользователь
$user = new User();
// Проверяем непосредственно логин и пароль
if ( $user->loadByLoginPassword($login, $password) )
{
// Пользователь успешно авторизован
// Сохраняем его в сессии
$_SESSION['PW_USER'] = $user;
return true;
}
// Авторизация провалилась
return false;
}
// Авторизация
function sendAuthHeaders()
{
header('WWW-Authenticate: Basic realm="Enter login and password please"');
header('HTTP/1.0 401 Unauthorized');
?>
<h1>Вы не авторизованы</h1>
<p>Пожалуйста, повторите запрос и введите логин и пароль.</p>
<script type="text/javascript">location.href="/";</script>
<?
exit;
}
// Выход из сессии
function logout($redirect)
{
$_SESSION['LOGOUT'] = true;
unset($_SESSION['PW_USER']);
session_commit();
header('Location: '. $redirect);
exit();
}
?>
когда мне надо сделать логаут, то просто
zg
-
denys
- проходил мимо
Непрочитанное сообщение
denys » 2013-10-25 16:26:13
Я так понимаю по видео-урокам Попова учился ? забудь всё и начни с начала
denys