Перейти к содержимому



Нужен код защиты админки.

#11 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8
0

Отправлено 23 Апрель 2010 - 16:09

gaaarfild, ты когда-нибудь пробовал обращаться к переменным, которые не объявлены? Вот тут и вылезут ошибки, если их не подавить.
Хоть они и не фатальные, но перенаправить тебя уже никуда не перенаправит.

phpuser,

К какой странице ты обращаешься напрямую к welcome?

К той, в которой у тебя обработчик, который авторизует доступ к админке. Как раз к странице, в которой у тебя написан вышеприведенный код.
  • 0

#12 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Апрель 2010 - 16:16

Ну это не ошибка. Это предупреждение. Согласен. С ними надо бороться.
я бы тогда все равно сократил, сделав преобразование в хэш в самой проверке уже. Гораздо экономнее. =)
  • 0

#13 phpuser

phpuser
    Topic Starter
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 16:37

Кодом плиз! ;)

Если POST не пустой, то он равен POST, если пустой, то он пустой! :lol:


if (isset($_POST['pass'])) {$pass = $_POST['pass'];}
if (isset($_POST['user'])) {$user = $_POST['user'];}


У меня это защита от хоста, не все же поддерживают глобальные переменные.

Так ты нигде вообще не задал переменную $_SESSION['user']. =)


У меня в коде заданна данная переменная, видимо я скинул сырой вариант, т.к. действительно нет смысла проверять переменную которой нет :rolleyes:
  • 0
Вникаю в тему создания сайтов...


#14 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Апрель 2010 - 17:04

Дык я и не говорю про register_globals; =) Не дай бох! =)

Я про то, что прямо самими глобальными и пользоваться.

А вот код.

$user = isset($_POST['user']) ? md5($_POST['user']) : ""; // если передан логин, то используем его, если он не передан, то пустая строка
$pass = isset($_POST['pass']) ? md5($_POST['pass']) : ""; // если передан пароль, то используем его, если он не передан, то пустая строка


Вообще, вот так бы написал ее. )

<?php
session_start();

$lock_user = "5435cfddc7e1cd3c1d703f230e2113ba";
$lock_pass = "09c33dbae155019000672fbf4ed7702f";

$user = (isset($_POST['user'])) ? md5($_POST['user']) : "";
$pass = (isset($_POST['pass'])) ? md5($_POST['pass']) : "";

if ( $lock_pass != $pass || $lock_user != $user )
{
session_destroy();
header("location: index.php?bad=1");
} else {
$_SESSION['logged'] = 1;
header("Location: welcome.php");
}

?>

  • 0

#15 phpuser

phpuser
    Topic Starter
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 17:20

Дело привычки :rolleyes:
Я учился по книгам и на примерах, значит мне данный вариант где то повстречался.
  • 0
Вникаю в тему создания сайтов...


#16 phpuser

phpuser
    Topic Starter
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 24 Апрель 2010 - 13:13

Кстати если я этот код инклудом прописываю во всех других страница в админке, то мне по идее в нём нужно проверять существует ли переменная $_SESSION['user'].

Т.е. код уже будет выглядеть так:
<?php
session_start();
if ($_SESSION['user'] == null || $_SESSION['user'] < 1)
{
session_destroy();
header("Location: index.php");
exit();
}

if (isset($_POST['pass'])) {$pass = $_POST['pass'];}
if (isset($_POST['user'])) {$user = $_POST['user'];}

$user = md5($user);
$pass = md5($pass);

$lock_user = "5435cfddc7e1cd3c1d703f230e2113ba";
$lock_pass = "09c33dbae155019000672fbf4ed7702f";

if ( $lock_pass != $pass || $lock_user != $user )
{
session_destroy();
header("location: index.php?bad=1");
exit();
}
else
{
$_SESSION['user'] = $user;
}
header("Location: welcome.php");
exit();

?>

  • 0
Вникаю в тему создания сайтов...



Оформление форума – IPBSkins.ru