[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита страницы, логин и пароль
Dark_Strannik
Здравствуйте уважаемые форумчане. Наткнулся на урок по защите страницы логином и паролем:

function loginPass(){
header('WWW-Authenticate: Basic realm="My Zone"');
header('HTTP/1.0 401 Unauthorized');
echo "<h1>Ошибка аутентификации</h1><p>Обратитесь к администратору для получения логина и пароля.</p>";
exit;
};

$login = "admin";
$password = "admin";

if (!isset($_SERVER['PHP_AUTH_USER'])) {
loginPass();
} else {
$auth_user = $_SERVER['PHP_AUTH_USER'];
$auth_pass = $_SERVER['PHP_AUTH_PW'];

if (($auth_user != $login) || ($auth_pass != $password)) {
loginPass();
};
};

echo "<h1>Добро пожаловать!</h1><p>Вы зашли по логину ",$auth_user," и паролю ",$auth_pass,".</p>";


Загружаю страницу, появляется окошко, ввожу логин ($login = "admin";) и пароль ($password = "admin";), жму "ок", окошко пропадает и тут же появляется - логин и пароль не верные. Что в коде, а может я сам делаю, не так?
Shuriken
Ты не правильно вводишь логин и пароль. У меня всё работает
inpost
Dark_Strannik
Не используй базовую аутентификацию. Лучше Храни идентификатор того, что человек ввёл логин и пароль правильно в СЕССИИ.

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

Почему?

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

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

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

user posted image
Dark_Strannik
Цитата (Shuriken @ 5.10.2012 - 05:02)
Ты не правильно вводишь логин и пароль. У меня всё работает

У меня стоит Zend Server CE, может ли быть в нем какой то глюк?
Dark_Strannik
Цитата (inpost @ 5.10.2012 - 12:47)
Dark_Strannik
Не используй базовую аутентификацию. Лучше Храни идентификатор того, что человек ввёл логин и пароль правильно в СЕССИИ.

Я новичок в PHP, так что ваш совет мне, к сожалению, не понятен. Может у вас есть ссылка на сайт, где я бы смог прочесть о том, как хранить логин и пароль в сессиях?
inpost
twin
Наверное лишь потому, что обычную проверку на существование легче понять новичку. Да и права в дальнейшем под разделы проще управлять, ведь всё вокруг одной проверки будет, а не разных.
Тут больше не как абсолютный запрет, а проще понять проверку на if(isset($_SESSION['access']))

Dark_Strannik
Авторизация
if($_POST['login'] == 'login' && $_POST['pass'] == 'pass') {
$_SESSION['access'] = true;
}


И далее на страницах проверку:
if(isset($_SESSION['access'])) {
echo 'Есть доступ к данным';
}


И всегда активируем сессиии:
session_start();


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

Почему?

Хотя бы, чтобы не поиметь геморроя с организацией кнопки "выход". Т.е. выход сделать можно, но не очевидно и через жопу.
Dark_Strannik
Вот так правильно?

header('Content-Type: text/html; charset=utf-8');
session_start();

function loginPass(){
header('WWW-Authenticate: Basic realm="My Zone"');
header('HTTP/1.0 401 Unauthorized');
echo "<h1>Ошибка аутентификации</h1><p>Обратитесь к администратору для получения логина и пароля.</p>";
exit;
};

$login = "admin";
$password = "admin";

if($_POST['login'] == 'login' && $_POST['pass'] == 'pass') {
$_SESSION['access'] = true;
}

if(isset($_SESSION['access'])) {
echo 'Есть доступ к данным';
}else{
loginPass();
}

echo "<h1>Добро пожаловать!</h1><p>Вы зашли по логину ",$auth_user," и паролю ",$auth_pass,".</p>";
inpost
Dark_Strannik
А смысл использовать и базовую и на сессии.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
killer8080
Цитата (Nikitian @ 6.10.2012 - 11:16)
Хотя бы, чтобы не поиметь геморроя с организацией кнопки "выход". Т.е. выход сделать можно, но не очевидно и через жопу.

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

session_start();

$login = 'root';// логин
$pass = '1234';// пароль

if(isset($_POST['submit'])){
//Получение введенных пользователем данных для аутентификации
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if(!empty($username) && !empty($password)){
if($username == $login && $password == $pass){
$_SESSION['access'] = true;
}
else{
echo 'Для входа в приложение необходимо ввести правильное имя и пароль';
}
}

else{
echo 'Для входа в приложение необходимо ввести имя и пароль';
}
}




<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<fieldset>
<legend>
Вход в приложение</legend>
<label
for="username">Имя пользователя:</label>
<input
type="text" id="username" name="username"/><br />
<label
for="password">Пароль:</label>
<input
type="password" id="password" name="password" />
</fieldset>
<input
type="submit" name="submit" value="Войти" />
</form>



Может кому то пригодится.
Быстрый ответ:

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