[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: форма авторизации и lock.php
Страницы: 1, 2
GreenJo
Есть файл lock.php


<?php
if(empty($_SERVER['PHP_AUTH_USER']))
{
header("WWW-Authenticate: Basic realm=\"Administrative resource\"");
header("HTTP/1.0 401 Unauthorised");

}
include 'auth.php';
$key = false;
foreach($admins as $admin => $password)
if($_SERVER['PHP_AUTH_USER'] === $admin && md5($_SERVER['PHP_AUTH_PW']) === $password)
$key = true;
else {
echo "Доступ закрыт";
exit();
}
if(empty($key))
{
header ('WWW-Authenticate: Basic realm="Admin Page"');
header ('HTTP/1.0 401 Unauthorized');

}


Подскажите как привязать форму авторизации?
inpost
GreenJo
Авторизация ПОПОВА? Если да, то никак. Учи другие способы авторизации smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
twin
Это моя)) Только это не авторизация, а аутентификация.

А loсk, это всего навсего "замок" и к г-ну Попову не имеет отношения.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
И чё это никак... Вполне даже как:
<?php

if(empty($_SERVER['PHP_AUTH_USER']))
{
header("WWW-Authenticate: Basic realm=\"Administrative resource\"");
header("HTTP/1.0 401 Unauthorised");
exit();
}

include 'auth.php';
$key = false;

if(isset($admins[$_SERVER['PHP_AUTH_USER']]) &&
md5($_SERVER['PHP_AUTH_PW']) === $admins[$_SERVER['PHP_AUTH_USER']])
$key = true;

if(empty($key))
{
header ('WWW-Authenticate: Basic realm="Admin Page"');
header ('HTTP/1.0 401 Unauthorized');
exit();
}

session_start();
$_SESSION['user'] = $_SERVER['PHP_AUTH_USER'];

echo 'Привет, '. htmlspecialchars($_SESSION['user']);


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
GreenJo
inpost да что он тебе сделал такого что ты его так сильно ненавидешь?
user posted image

twin
Можно подробнее, я понимаю надо сделать сессии в форме ?
twin
Цитата (GreenJo @ 5.06.2014 - 03:16)
twin
Можно подробнее, я понимаю надо сделать сессии в форме ?

Чтобы сделать поподробнее, нужно уяснить, что есть аутентификация, а что авторизация.

Аутентификация, это проверка подлинности. Другими словами пара - замок-ключ. Есть пароль (ключ) - заходи.

Авторизация, это доступ к определенной части данных ресурса, владельцем или автором которой является пользователь. Другими словами мало просто зайти, нужно определить кто именно зашел и что ему разрешить. А для этого нужно где то сохранить идентификатор вошедшего и потом его проверять. Лучшим способом хранения является сессия. А что в ней хранить, логин или ID юзера - дело разработчика.

Я показал самый простой пример, как на основе базовой аутентификации сделать элементарную авторизацию. Вообще обычно такие вещи для пользователей практикуются редко. Как сделать полноценную авторизацию - огромная тема с кучей подводных камней.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
GET
А вы знаете, что в php 5.5 появилась password_hash/password_verify - использую ее, вкусная штука. smile.gif

http://docs.php.net/manual/ru/function.password-hash.php
http://docs.php.net/manual/en/function.password-verify.php

особенно приятно то, что хэш не статичный, а плавающий.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GreenJo
ABC

Мне до такого еще далеко, преодолеваю щас путь назат (после попова), а надо ведь еще мозг прокачивать в нужное направление.

twin - мне сойдет самая простая авторизация.(или как там его правильно аунтенфикация (надеюсь ошибок не сделал))
То есть просто сделать форму с сессией и прикрепить
$_SESSION['user'] = 'пользователь'

Я правильно понял
kjdgh
По ходу дела
        header("WWW-Authenticate: Basic realm=\"Administrative resource\""); 
header("HTTP/1.0 401 Unauthorised");

эти заголовки и должны вызвать окно ввода логина и пасса, поэтому форма здесь не нужна.

_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



GreenJo
kjdgh
Я понимаю, появление этой темы породил вопрос, а есть ли возможность сделать окно авторизации вот под этот скрипт
inpost
GreenJo
А где ненависть? Я просто сказал, что никак.
Проблема в том, что в 2003 году, когда вышел его курс - всё замечательно работало. Сегодня 2014 год. Закачай с php.net самую последнюю версию ПХП. Твои скрипты работать не будут... (не этот, а другие).

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
GreenJo
inpost я его не защищаю и не оправдываю, просто странно все так против него, я не все уроки его беру за основы, да и php знаю в базовых чертах. А про года то это понятно , вспомните ie6 там мало что работало, время идет и все меняется.

По данному скрипту понятно одно, что отдельного окна авторизации он не поддерживает.

twin что то так и не понял я, при запуске данный скрипт имеет ряд ошибок
kjdgh
Цитата (GreenJo @ 5.06.2014 - 13:55)
kjdgh
Я понимаю, появление этой темы породил вопрос, а есть ли возможность сделать окно авторизации вот под этот скрипт

Это?

<?

if($_POST['submit']){
$_SERVER['PHP_AUTH_USER'] = $_POST['log'];
$_SERVER['PHP_AUTH_PW'] = $_POST['passwd'];
}else{
echo'<form method="post">
лог: <input type="text" name="log">
пасс: <input type="password" name="passwd">
<input type="submit" name="submit" value="OK">
</form>'
;
exit();
}

/*
if(empty($_SERVER['PHP_AUTH_USER']))
{
header('WWW-Authenticate: Basic realm="Administrative resource"');
header("HTTP/1.0 401 Unauthorised");
exit();
}
*/

//include './auth.php';

$admins = array(
'root' => '63a9f0ea7bb98050796b649e85481845', // root => root
'admin' => 'e10adc3949ba59abbe56e057f20f883e', );

$key = false;

if(isset($admins[$_SERVER['PHP_AUTH_USER']]) &&
md5($_SERVER['PHP_AUTH_PW']) === $admins[$_SERVER['PHP_AUTH_USER']])
$key = true;

if(empty($key))
{
echo'неверный логин/пароль или чет типо того...';
exit();

}
// ***** debug *****
echo 'даров, '.$_SERVER['PHP_AUTH_USER'].'. Введенный пароль: '.$_SERVER['PHP_AUTH_PW'];

?>


_____________
Новичек в программировании и вообще не разбираюсь в этом, так что не вините.



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.