Сессии. аудентификации админа. Ничего я не пропустил?

CORSAiR

Новичок
Сессии. аудентификации админа. Ничего я не пропустил?

Сегодня начал разбираться с сессиями. Ипользую для аудентификации админа... посмотрите plz, на сколько это безопасно и в ту ли сторону двигаюсь =)

то, что получилось:

файл login.php
PHP:
<?php
// Пытаемся обнулись идентификатор
unset($GLOBALS[_SESSION][$autorized]);
$_SESSION["autorized"] = 0;

  // Соединяемся с базой данных
  require_once("../config.php");

  $loginname = str_replace("'","`",$_POST['login']);
  $magic = md5(trim(str_replace("'","`",$_POST['magic'])));

  // Формируем SQL-запрос на поиск админа
  
  $query="SELECT * FROM tr_members WHERE loginName='$loginname' AND passwd='$magic' AND status='admin'";
  
  // Ищем
  if($res = mysql_query($query))
  {
  	while($row=mysql_fetch_array($res, MYSQL_ASSOC))
  	if($magic <> $row['passwd']) 
     {// На всякий случай проверяем еще раз, если пароли не совпали то выходим
      header("Location: index.php");
      exit();
     } else { // Если нашли админа, то стартуем сессию и направляем дальше
	  		 session_start();
			 session_register("autorized");
             $_SESSION["autorized"] = 1;
      header("Location: news/index.php");
      exit();
            }
  } else { // Если пользователя не найдено то выходим
      header("Location: index.php");
      exit();
  }
?>

теперь... в начале, в каждом админовском скрипте (файле) пишу:

PHP:
<?php
session_start();
if($_SESSION['autorized']<>1)
{
 header("Location: ../index.php");
 exit;
}

Не проглядел ли я чего ? И еще.. для админа хочу выделить определенное количество времени. Потом все по новой.
 

SID

ReadOnlyТеаm
в приведенном тобой реплайсе особой необходимости нет, можно убрать.
не хватает экранирования переменных в запросе.

не понятно зачем нужен цикл
while($row=mysql_fetch_array($res, MYSQL_ASSOC))
после запроса к БД делаем что то вроде следующего:
если count($res) равно 1 то открываем доступ к системе (старт сессии) иначе редирект на форму регистрации.

в общем у тебя много лишнего кода.
 

kruglov

Новичок
PHP:
unset($GLOBALS[_SESSION][$autorized]); 
$_SESSION["autorized"] = 0;
_SESSION и так суперглобальный.
что такое [$autorized] ?

p. s. Все это будут выдавать кучу нотисов.
 
Сверху