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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: заставить пользователя вводить логин и пароль каждый раз

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
haotichni
Отправлено: 11 Декабря, 2012 - 08:23:44
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2011  
Откуда: Беларусь, Брест


Помог: 0 раз(а)




Суть такова, необходимо, чтобы пользователь переходя на страницу всегда, вне зависимости от сессии вводил логин и пароль!

Сейчас, пользователь вводит логин и пароль всего 1 раз и все, и это очень, ну очень плохо!

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. header("Expires: Thu, 01 Jan 1970 00:00:01 GMT");
  4.  
  5.         // Соед. с БД
  6.         $conn = @OCILogon('ty', '*', "***");
  7.  
  8.         if (!$conn) // Соединение не установлено
  9.         {
  10.                 $msg = OCIError();
  11.                 $error = "Ошибка подключения к БД. " . $msg['message'];
  12.                 tmpl_set($template, "error", $error);
  13.                 echo tmpl_parse($template);
  14.                 exit;
  15.         }
  16.  
  17.        
  18.        
  19.         // Заставляем пользователя аутентифицироваться
  20.         if (!isset($_SERVER['PHP_AUTH_USER']))
  21.         {
  22.                 header('Content-Type: text/plain; charset=windows-1251');
  23.                 header('WWW-Authenticate: Basic realm="Ежедневные отчеты"');
  24.                 header('HTTP/1.0 401 Unauthorized');
  25.  
  26.                 // Выбрал Cancel
  27.                 echo 'Доступ запрещен! Пройдите авторизацию';
  28.                 exit;
  29.         }
  30.  
  31.         // Ввёл данные
  32.  
  33.         // Ищем пользователя с таким именем и паролем
  34.         $stmt_user = OCIParse($conn, "SELECT * FROM users
  35.                                                                 WHERE lower(login) = lower(:auth_user)
  36.                                                                         AND lower(pwd) = lower(:auth_pw)");
  37.         OCIBindByName($stmt_user, ":auth_user", $_SERVER['PHP_AUTH_USER']);
  38.         OCIBindByName($stmt_user, ":auth_pw", $_SERVER['PHP_AUTH_PW']);
  39.         OCIExecute($stmt_user);
  40.  
  41.         // Такой пользователь есть?
  42.         if (!OCIFetch($stmt_user))
  43.         {
  44.                 // Нет - заставляем вводить данные пока не введут верные
  45.                 header('Content-Type: text/plain; charset=windows-1251');
  46.                 header('WWW-Authenticate: Basic realm="Ежедневные отчеты"');
  47.                 header('HTTP/1.0 401 Unauthorized');
  48.                 echo 'Доступ запрещен! Пройдите авторизацию.';
  49.                 exit;
  50.         }
  51.  
  52.  
  53.         $stmt = OCIParse($conn, "alter session set NLS_NUMERIC_CHARACTERS = '. '");
  54.         OCIExecute($stmt, OCI_DEFAULT);
  55.  
  56.  
  57. ?>
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Декабря, 2012 - 09:43:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Как только вы получили от пользака все чего хотели, дергаете:
PHP:
скопировать код в буфер обмена
  1. unset($_SERVER['PHP_AUTH_USER']);
  2. unset($_SERVER['PHP_AUTH_PW']);

И его песенка спета...

(Отредактировано автором: 11 Декабря, 2012 - 09:44:02)

 
 Top
likvidator
Отправлено: 11 Декабря, 2012 - 10:23:25
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


не выйдет,ибо: "данные перменные создаются из переменных окружения ПХП, то есть убив эту переменную она всеравно создастся в следующем запуске со всеми исходными значениями."
http://php.net/manual/ru/features.http-auth.php - второй пример

(Отредактировано автором: 11 Декабря, 2012 - 10:34:21)

 
 Top
haotichni
Отправлено: 11 Декабря, 2012 - 10:43:30
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2011  
Откуда: Беларусь, Брест


Помог: 0 раз(а)




likvidator пишет:
не выйдет,ибо: "данные перменные создаются из переменных окружения ПХП, то есть убив эту переменную она всеравно создастся в следующем запуске со всеми исходными значениями."
http://php.net/manual/ru/features.http-auth.php - второй пример


что то второй пример я совсем не понял!
(Добавление)
haotichni пишет:
likvidator пишет:
не выйдет,ибо: "данные перменные создаются из переменных окружения ПХП, то есть убив эту переменную она всеравно создастся в следующем запуске со всеми исходными значениями."
http://php.net/manual/ru/features.http-auth.php - второй пример


что то второй пример я совсем не понял!


а можно как нибудь сделать проверку переменных, чтобы они сразу терялись?
 
 Top
likvidator
Отправлено: 11 Декабря, 2012 - 10:48:51
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


да я другого не пойму..а чем плохи сессии? куки? зачем такая авторизация?
 
 Top
haotichni
Отправлено: 11 Декабря, 2012 - 11:00:40
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2011  
Откуда: Беларусь, Брест


Помог: 0 раз(а)




likvidator пишет:
да я другого не пойму..а чем плохи сессии? куки? зачем такая авторизация?


вообще суть задачи такова, есть список получаемый из БД, каждая строка свой филиал. вот и я подумал, что если бы при выборе филиала все время выдавался запрос пароля для входа, чтобы зайдя на страницу филиалов невозможно было выбрать другой. а как привязать пароль к отдельно взятому филиалу я не знаю.
 
 Top
likvidator
Отправлено: 11 Декабря, 2012 - 11:23:39
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


да я тебе вообще о другом! Я тебе о типе авторизации говорю. Ща у тебя через $_SERVER, а по мне так проще чз. куки или сессию,тогда просто удаляем куки или сессию => пользователю выходит авторизация
(Добавление)
попробуй послать такой заголовок:
 
 Top
haotichni
Отправлено: 12 Декабря, 2012 - 07:40:17
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Февр. 2011  
Откуда: Беларусь, Брест


Помог: 0 раз(а)




likvidator пишет:
да я тебе вообще о другом! Я тебе о типе авторизации говорю. Ща у тебя через $_SERVER, а по мне так проще чз. куки или сессию,тогда просто удаляем куки или сессию => пользователю выходит авторизация
(Добавление)
попробуй послать такой заголовок:


Про сессии Вы были правы, потому что с этим повозился и ничего не получилось!

Теперь вопрос в следующем, нашел как сделать форму авторизации у товарища Попова, кажется так, все получилось, работает через сессии!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB