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 » Напишите за меня, пожалуйста » заставить пользователя вводить логин и пароль каждый раз

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

1. haotichni - 11 Декабря, 2012 - 08:23:44 - перейти к сообщению
Суть такова, необходимо, чтобы пользователь переходя на страницу всегда, вне зависимости от сессии вводил логин и пароль!

Сейчас, пользователь вводит логин и пароль всего 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. ?>
2. DeepVarvar - 11 Декабря, 2012 - 09:43:29 - перейти к сообщению
Как только вы получили от пользака все чего хотели, дергаете:
PHP:
скопировать код в буфер обмена
  1. unset($_SERVER['PHP_AUTH_USER']);
  2. unset($_SERVER['PHP_AUTH_PW']);

И его песенка спета...
3. likvidator - 11 Декабря, 2012 - 10:23:25 - перейти к сообщению
не выйдет,ибо: "данные перменные создаются из переменных окружения ПХП, то есть убив эту переменную она всеравно создастся в следующем запуске со всеми исходными значениями."
http://php.net/manual/ru/features.http-auth.php - второй пример
4. haotichni - 11 Декабря, 2012 - 10:43:30 - перейти к сообщению
likvidator пишет:
не выйдет,ибо: "данные перменные создаются из переменных окружения ПХП, то есть убив эту переменную она всеравно создастся в следующем запуске со всеми исходными значениями."
http://php.net/manual/ru/features.http-auth.php - второй пример


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


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


а можно как нибудь сделать проверку переменных, чтобы они сразу терялись?
5. likvidator - 11 Декабря, 2012 - 10:48:51 - перейти к сообщению
да я другого не пойму..а чем плохи сессии? куки? зачем такая авторизация?
6. haotichni - 11 Декабря, 2012 - 11:00:40 - перейти к сообщению
likvidator пишет:
да я другого не пойму..а чем плохи сессии? куки? зачем такая авторизация?


вообще суть задачи такова, есть список получаемый из БД, каждая строка свой филиал. вот и я подумал, что если бы при выборе филиала все время выдавался запрос пароля для входа, чтобы зайдя на страницу филиалов невозможно было выбрать другой. а как привязать пароль к отдельно взятому филиалу я не знаю.
7. likvidator - 11 Декабря, 2012 - 11:23:39 - перейти к сообщению
да я тебе вообще о другом! Я тебе о типе авторизации говорю. Ща у тебя через $_SERVER, а по мне так проще чз. куки или сессию,тогда просто удаляем куки или сессию => пользователю выходит авторизация
(Добавление)
попробуй послать такой заголовок:
8. haotichni - 12 Декабря, 2012 - 07:40:17 - перейти к сообщению
likvidator пишет:
да я тебе вообще о другом! Я тебе о типе авторизации говорю. Ща у тебя через $_SERVER, а по мне так проще чз. куки или сессию,тогда просто удаляем куки или сессию => пользователю выходит авторизация
(Добавление)
попробуй послать такой заголовок:


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

Теперь вопрос в следующем, нашел как сделать форму авторизации у товарища Попова, кажется так, все получилось, работает через сессии!

 

Powered by ExBB FM 1.0 RC1