Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Авторизация на Браузере
Форумы портала PHP.SU » PHP » Программирование на PHP » Авторизация на Браузере

Страниц (2): [1] 2 »
 

1. BoJlod9I - 07 Апреля, 2011 - 06:49:48 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. include("db.php");
  3. if (!isset($_SERVER['PHP_AUTH_USER']))
  4.  
  5. {
  6.        Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  7.        Header ("HTTP/1.0 401 Unauthorized");
  8.        exit();
  9. }
  10.  
  11. else {
  12.        if (!get_magic_quotes_gpc()) {
  13.                $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
  14.                $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
  15.        }
  16.        $query = "SELECT password FROM admins WHERE login='".$_SERVER['PHP_AUTH_USER']."'";
  17.        $lst = @mysql_query($query);
  18.  
  19.        if (!$lst)
  20.        {
  21.            Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  22.        Header ("HTTP/1.0 401 Unauthorized");
  23.        exit();
  24.        }
  25.        if (mysql_num_rows($lst) == 0)
  26.        {
  27.           Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  28.           Header ("HTTP/1.0 401 Unauthorized");
  29.           exit();
  30.        }
  31.        $pass =  @mysql_fetch_array($lst);
  32.        if ($_SERVER['PHP_AUTH_PW']!= $pass['password'])
  33.        {
  34.            Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  35.           Header ("HTTP/1.0 401 Unauthorized");
  36.           exit();
  37.        }
  38. }
  39. ?>

Вот скрипт авторизации работает хорошо... Но необходимо сделать logout я только не могу понять как его сделать! Прошу помощи в написании + создании кнопки. Но если такая авторизация не надежная прошу помощи в том что-бы предоставить нормальную авторизацию с выходом.
2. levchick - 07 Апреля, 2011 - 07:54:35 - перейти к сообщению
Создайте ссылку подобного вида: index.php?logout=1 и отрабатывайте выход:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include("db.php");
  4. if ($_GET['logout']==1)
  5. {
  6.        unset($_SERVER['PHP_AUTH_USER']);
  7.        unset($_SERVER['PHP_AUTH_PW']);
  8. }
  9. if (!isset($_SERVER['PHP_AUTH_USER']))
  10.  
  11. {
  12.        Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  13.        Header ("HTTP/1.0 401 Unauthorized");
  14.        exit();
  15. }
  16.  
  17. else {
  18.        if (!get_magic_quotes_gpc()) {
  19.                $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
  20.                $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
  21.        }
  22.        $query = "SELECT password FROM admins WHERE login='".$_SERVER['PHP_AUTH_USER']."'";
  23.        $lst = @mysql_query($query);
  24.  
  25.        if (!$lst)
  26.        {
  27.            Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  28.        Header ("HTTP/1.0 401 Unauthorized");
  29.        exit();
  30.        }
  31.        if (mysql_num_rows($lst) == 0)
  32.        {
  33.           Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  34.           Header ("HTTP/1.0 401 Unauthorized");
  35.           exit();
  36.        }
  37.        $pass =  @mysql_fetch_array($lst);
  38.        if ($_SERVER['PHP_AUTH_PW']!= $pass['password'])
  39.        {
  40.            Header ("WWW-Authenticate: Basic realm=\"Panel of Nad1n\"");
  41.           Header ("HTTP/1.0 401 Unauthorized");
  42.           exit();
  43.        }
  44. }
  45. ?>
  46.  
3. BoJlod9I - 07 Апреля, 2011 - 07:56:51 - перейти к сообщению
знал бы не спрашивал =)
4. levchick - 07 Апреля, 2011 - 07:59:33 - перейти к сообщению
Посмотрите внимательно на тот код, который я привел:


Вот отработка выхода:
PHP:
скопировать код в буфер обмена
  1.  
  2. ....
  3. if ($_GET['logout']==1)
  4. {
  5.        unset($_SERVER['PHP_AUTH_USER']);
  6.        unset($_SERVER['PHP_AUTH_PW']);
  7. }
  8. ....
  9.  
5. BoJlod9I - 07 Апреля, 2011 - 08:00:47 - перейти к сообщению
в index вкинул
echo '<a href="index.php?logout=1">logout</a>';
Незнаю может я долго не спал но меня выбрасывает но если я открываю новую вкладку и захожу обратно в админку меня пускает. А с той стр. там где вышел уже не могу зайти =(
6. levchick - 07 Апреля, 2011 - 08:03:15 - перейти к сообщению
Хм, мб браузер запоминает логин с паролем?
(Добавление)
Попробуйте вот так вот:

PHP:
скопировать код в буфер обмена
  1. if ($_GET['logout']==1)
  2. {
  3.        unset($_SERVER['PHP_AUTH_USER']);
  4.        unset($_SERVER['PHP_AUTH_PW']);
  5.        session_destroy();
  6. }
7. BoJlod9I - 07 Апреля, 2011 - 08:06:40 - перейти к сообщению
Хорошо меня рассоеденяет если пароль не сохранять!
Но единственное НО оно меня бесит =) я жму на LogoUt и остаюсь на ссылке index.php?logout=1 тоесть зайти обратно с тойже вкладки на Опера я не могу как решить такую маленьку проблему? Тоесть идет перенаправление на index.php?logout=1 и сразуже на index.php просто
8. levchick - 07 Апреля, 2011 - 08:09:16 - перейти к сообщению
Откровенно сказать, не понял вопроса.. Сформулируйте, пожалуйста, более четко и, желательно, со знаками препинания..
9. BoJlod9I - 07 Апреля, 2011 - 08:11:29 - перейти к сообщению
Если я logout делаю таким способом
PHP:
скопировать код в буфер обмена
  1. if ($_GET['logout']==1)
  2. {
  3.        unset($_SERVER['PHP_AUTH_USER']);
  4.        unset($_SERVER['PHP_AUTH_PW']);
  5.        session_destroy();
  6. }

то у меня сразу пишет
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in W:\home\nadin\WWW\admin\start.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at W:\home\nadin\WWW\admin\start.php:7) in W:\home\nadin\WWW\admin\start.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at W:\home\nadin\WWW\admin\start.php:7) in W:\home\nadin\WWW\admin\start.php on line 13
10. levchick - 07 Апреля, 2011 - 08:12:29 - перейти к сообщению
Уберите тогода - session_destroy();
11. BoJlod9I - 07 Апреля, 2011 - 08:12:37 - перейти к сообщению
я имею ввиду сессия остаётся. Если открыть новую ВКЛАДКУ в опере то я обратно буду авторизован
12. levchick - 07 Апреля, 2011 - 08:14:23 - перейти к сообщению
BoJlod9I пишет:
Хорошо меня рассоеденяет если пароль не сохранять!



....
13. BoJlod9I - 07 Апреля, 2011 - 08:14:33 - перейти к сообщению
если убераю session_destroy();
при нажатии Logout мне выдаёт таблицу с авторизацией но незакрывая браузер а просто открывая новую вкладку я обратно авторизван
(Добавление)
НЕ РАССОЕДЕНЯЕТ МЕНЯ
14. levchick - 07 Апреля, 2011 - 08:17:27 - перейти к сообщению
Отключите все запоминалки паролей в браузере. Поместите этот код в admin\start.php в самое самое начало.

PHP:
скопировать код в буфер обмена
  1.  
  2. if ($_GET['logout']==1)
  3. {
  4.        unset($_SERVER['PHP_AUTH_USER']);
  5.        unset($_SERVER['PHP_AUTH_PW']);
  6.        session_unset();
  7.        session_destroy();
  8. }
  9.  
15. BoJlod9I - 07 Апреля, 2011 - 08:25:18 - перейти к сообщению
При использовании такого
PHP:
скопировать код в буфер обмена
  1. if ($_GET['logout']==1)
  2. {
  3.        unset($_SERVER['PHP_AUTH_USER']);
  4.        unset($_SERVER['PHP_AUTH_PW']);
  5.        session_unset();
  6.        session_destroy();
  7. }
  8.  


Пишет ошибки
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in W:\home\nadin\WWW\admin\start.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at W:\home\nadin\WWW\admin\start.php:8) in W:\home\nadin\WWW\admin\start.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at W:\home\nadin\WWW\admin\start.php:8) in W:\home\nadin\WWW\admin\start.php on line 14

 

Powered by ExBB FM 1.0 RC1