Пишем систему пользователей сайта на PHP. Часть 3. Пишем залогинивание пользователей

С этим постом я припозднился, но лучше поздно, чем никогда :) . Теперь перейдём к делу. Сначала код формы для отправки данных. Его можно будет вставить в любое нужное вам место на сайте. И так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
  <head>
    <title>Вход для пользователя</title>
  </head>
  <body>
    <table>
      <tr><td>
        <form action= "login.php" method="post">
          Логин: <input type = "text" name = "login">
          Пароль: <input type = "text" name = "pass">
          <input type = "checkbox" name = "zap" value= "yes"> Запомнить
          <input type = "submit" value = "Вход">
        </form>
      </td></tr>
    </table>
  </body>
</html>

При вставке в php-код и выводе через функцию echo () не забывайте экранировать кавычки обратным слешем (). Обрабатывает входящие данные файл login.php. Структура таблицы пользователей была описана в предыдущем посте.

Теперь код самого login.php (код прокомментирован):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
 // Здесь введите адрес своего сайта, он используется для ограничения доступа по URL к кукам  
 $host = "www.panel.demo.ru";
  // Получим входные данные
  $login = $_POST ['login'];
  $pass = $_POST ['pass'];
  $zap = $_POST['zap'];
  // Проверим входящие данные
  // Проверка вводимых данных на корректность
  if(!preg_match("/[A-Za-z0-9]/",$login))
    {
      include "error.php"; // Здесь и далее можно поставить урл на свою страницу ошибки
      exit();
    }
  if(!preg_match("/[A-Za-z0-9]/",$pass))
    {
      include "error.php";
      exit();
    }
  if(!($zap == "yes") && !($zap ==""))
    {
      include "error.php";
      exit ();
    }
  // Найдём хеш пароля
  $pass = md5 ($pass);
  // Найдём пользователя с введённым логином
  // Составим запрос
  $query = "SELECT `user`,`pass` FROM `user` WHERE login = "$login"";
  // Приконнектимся к БД
  include "config.php";
  // Произведём запрос
  $ath = mysql_query ($query, $dbdeskriptor);
  // Проверим выполненость запроса
  if (!$ath)
    {
      mysql_close ($dbdeskriptor);
      include "error.php";
      exit ();
    }
  // Извлечём результаты запроса
  $result = mysql_fetch_assoc ($ath);
  // Проверим наличие логина
  if (!isset($result ['login']))
    {
      mysql_close ($dbdeskriptor);
      include "error.php";
      exit ();
    }
  // Если логин есть проверим правильность пароля
  if (!($pass == $result ['pass']))
    {
      mysql_close ($dbdeskriptor);
      include "error.php";
      exit ();
    }
  // Если пароль правильный, то производим запись в куки в зависимости от того, будет запоминание пользователя или нет
  if ($zap == "yes")
    {
      setcookie ("l","$login", time () + 172800, "/", $host);
      setcookie ("p","$pass", time () + 172800, "/", $host);
    }
  else
    {
      setcookie ("l","$login", 0, "/", $host);
      setcookie ("p","$pass", 0, "/", $host);
    }
  // Выводим сообщение об успешности залогинивания
  echo "Логин и пароль приняты системой";
?>

Вместо простого вывода сообщения об успешности залогинивания, можно сделать вывод сообщения с редиректом на прошлую страницу. Если интересно как это сделать — отпишите в комментариях, в следующем посте опубликую решение. На сегодня пока всё.

____________________________________________________________________

Постовый.
Полубомж написал на тему паления тем. Достаточно давно я тоже писал на эту тему.
Бесколёсный вернулся!. Жду новых интересных постов от него.

__________________________________________________________
P.S.
Съездил на Московский автосалон Мотор Экспо 2008. Выставка проходила в Крокус Экспо и была просто шикарной. Самые лучшие стенды имхо были у Ауди, Мерседеса и БМВ. Во многом благодаря большой концентрации отличных тачек на квадратный метр стенда. Думаю не стоит объяснять, почему на их стендах было очень много народу :) . Даже машину себе выбрал. По соотношению цена/качество/стиль/мощность/практичность мне понравился Mitsubishi Lancer Evolution X. Думаю начать копить на неё :) . Не, ну правда красавица:

Метки: , , ,
Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

6 thoughts


  1. > Вместо простого вывода сообщения об успешности залогинивания, можно сделать вывод сообщения с редиректом на прошлую страницу. Если интересно как это сделать — отпишите в комментариях, в следующем посте опубликую решение

    напишите, очень интересно!

Напишите комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *