PHP в деталях



         

Пароль на страницу. Часть 4. Печенюшки


DL
26.6.2001

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

Рисуем форму и делаем файл, который получает логин и пароль (защиту от подборки я уде описывал, допишите её сюда сами).

// обработка строки с логином

$login = str_repalce("'", "", $login);

$login_result = mysql_query("SELECT id FROM user WHERE login='$login' AND pass='". md5($pass). "'");

if (!mysql_error() && @mysql_num_rows($login_result)==1) {

/* выдача кук. Имена кук и путь лучше во избежание путаницы определять в едином подключаемом файле. */

setcookie($COOKIE_LOGIN_NAME, $login, time()+3600, $COOKIE_PATH);

  setcookie($COOKIE_PASSW_NAME, $pass, time()+3600, $COOKIE_PATH);

/* Сразу же после входа пользователя перенаправляют на закрытый паролем адрес. */

  header("Location: /somepath/");

  exit;

  }

elseif (!mysql_error()) {

/* вывод сообщения об ошибке и формы для повторного ввода */

  print ("Неправильный логин или пароль.");

  }

else

  print (mysql_error());

Все закрытые страницы вызывают файл, в котором проверяется правильность пароля, полученного из куки:

$login = str_repalce("'", "", $HTTP_COOKIE_VARS[$COOKIE_LOGIN_NAME]);

$login_result = mysql_query("SELECT id FROM user WHERE login='$login' AND pass='". md5($HTTP_COOKIE_VARS[$COOKIE_PASSW_NAME]). "'");

if (!mysql_error() && @mysql_num_rows($login_result)!=1) {

/* Если такой строки в таблице нет, пользователь перенаправляется на страицу входа в систему. */

  header("Location: /login.php");

  exit;

  }

else

  print (mysql_error());

Имена кук будут использоваться в нескольких местах, поэтому лучше заранее поместить их в одном месте (например, объявив константы), чтобы потом не исправлять по нескольку раз.




Содержание  Назад  Вперед