В чем проблема?
В админке движка есть возможность установки способа авторизации в админку - путем cookies или http авторизация.
Если был установлен способ авторизации через cookies то после установки в админке другого способа - http происходит logout из админки
setcookie('admin','', time() -3600);
header("location: ./index.html");
и далее войти в нее можно будет путем http авторизации.
Если же вход в админку был выполнен путем http авторизации то при смене способа авторизации на куки желательно-бы также выйти из админки и войти в нее уже через куки.
Но проблема в том, что если вход в админку был выполнен через http то движок остается в админке до закрытия браузера.
Можно ли выйти из админки не закрывая браузер?
Спасибо.
Спустя 1 час, 15 минут, 42 секунды (17.08.2010 - 22:39) UnWind написал(а):
При HTTP авторизации создаются две переменные
Соответственно выход можно произвести при помощи удаления значений переменных
Выход после cookie авторизации, осуществляется заменой существуещего, на cookie с пустым значением
Ну и в конце каждого примера вставляем переадресацию на "./index.php"
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']
Соответственно выход можно произвести при помощи удаления значений переменных
unset($_SERVER['PHP_AUTH_USER']);
unset($_SERVER['PHP_AUTH_PW']);
Выход после cookie авторизации, осуществляется заменой существуещего, на cookie с пустым значением
setcookie('admin', 0);
Ну и в конце каждого примера вставляем переадресацию на "./index.php"
header("Location: ./index.php");
Спустя 53 минуты, 25 секунд (17.08.2010 - 23:32) brdm написал(а):
Спасибо. Уже ближе.
Дело в том, что
не работает.
Они удаляются только после закрытия браузера.
Очевидно нужно послать еще какой то заголовок или еще какая-то хитрость...
Дело в том, что
unset($_SERVER['PHP_AUTH_USER']);unset($_SERVER['PHP_AUTH_PW']);
не работает.
Они удаляются только после закрытия браузера.
Очевидно нужно послать еще какой то заголовок или еще какая-то хитрость...
Спустя 6 минут, 6 секунд (17.08.2010 - 23:39) brdm написал(а):
Попробовал.
Не получается.
Не получается.
Спустя 1 минута, 58 секунд (17.08.2010 - 23:40) UnWind написал(а):
Цитата |
Попробовал. Не получается. |
Да я ошибся, по этому и пост удалил - сплю уже на 50%.
Сейчас чего нибудь придумаю.
Спустя 11 минут, 18 секунд (17.08.2010 - 23:52) UnWind написал(а):
brdm
Странно, мне почему то кажеться, что реализуется это вот так
ну и второй вариант
Попробуй второй вариант, если не получиться - отпишись, завтра на свежую голову попробую вспомнить да ответить.
Странно, мне почему то кажеться, что реализуется это вот так
unset($_SERVER['PHP_AUTH_PW'], $_SERVER['PHP_AUTH_USER'])
ну и второй вариант
session_unset ();
session_destroy ();
Попробуй второй вариант, если не получиться - отпишись, завтра на свежую голову попробую вспомнить да ответить.
Спустя 9 минут, 12 секунд (18.08.2010 - 00:01) brdm написал(а):
Попробовал.
Пока не работает.
Пока не работает.
Спустя 2 минуты, 55 секунд (18.08.2010 - 00:04) UnWind написал(а):
brdm
Хм. Ладно, оставим этот вопрос на завтра.
Спокойной ночи.
Офф.
Хм. Ладно, оставим этот вопрос на завтра.
Спокойной ночи.
Офф.
Спустя 4 минуты, 58 секунд (18.08.2010 - 00:09) UnWind написал(а):
brdm
P.S.:> Может заместо выхода использовать неправильную аунтефикацию ?
Т.е. не правильный логин и пароль, пусть даже вместо них будут значения NULL.
По мойму у http аунтефикации нет достойного варината выхода.
Во всяком случае я только на такие посты и натыкаюсь в google, в учебнике тоже 0 про выход.
Хотя может у экспертов найдётся более разумный способ, я просто не пользовал данный вид аунтефикации, поэтому помоч тут мало чем могу.
P.S.:> Может заместо выхода использовать неправильную аунтефикацию ?
Т.е. не правильный логин и пароль, пусть даже вместо них будут значения NULL.
По мойму у http аунтефикации нет достойного варината выхода.
Во всяком случае я только на такие посты и натыкаюсь в google, в учебнике тоже 0 про выход.
Хотя может у экспертов найдётся более разумный способ, я просто не пользовал данный вид аунтефикации, поэтому помоч тут мало чем могу.
Спустя 7 часов, 26 минут, 17 секунд (18.08.2010 - 07:35) twin написал(а):
Вся беда в том, что эти переменные
хранятся на стороне клиента. И unset() их никак не достанет, так как он может уничтожить только серверные переменные.
прямого выхода из базовой авторизации нет, в этом её большой недостаток. Однако можно сделать это через сессии.
Вот тут есть вариант.
$_SERVER['PHP_AUTH_PW']
$_SERVER['PHP_AUTH_USER']
хранятся на стороне клиента. И unset() их никак не достанет, так как он может уничтожить только серверные переменные.
прямого выхода из базовой авторизации нет, в этом её большой недостаток. Однако можно сделать это через сессии.
Вот тут есть вариант.
Спустя 4 часа, 8 минут, 38 секунд (18.08.2010 - 11:44) brdm написал(а):
Спасибо.
С помощью сессий вроде получается.
У меня движок на текстовых базах. Пароль и логин в админку хранится в settings.php
Прежде вход на любую страницу админки проверялся на совпадение $_SERVER['PHP_AUTH_PW'] $_SERVER['PHP_AUTH_USER'] с паролем и логином.
Теперь же придется проверять просто наличие $_SESSION['login'] = true
Правильно ли это в части безопасности?
С помощью сессий вроде получается.
У меня движок на текстовых базах. Пароль и логин в админку хранится в settings.php
Прежде вход на любую страницу админки проверялся на совпадение $_SERVER['PHP_AUTH_PW'] $_SERVER['PHP_AUTH_USER'] с паролем и логином.
Теперь же придется проверять просто наличие $_SESSION['login'] = true
Правильно ли это в части безопасности?
Спустя 1 час, 59 минут, 22 секунды (18.08.2010 - 13:43) twin написал(а):
Нормально