Пишем систему пользователей сайта на PHP. Часть 3. Пишем залогинивание пользователей
2 сентября 2008 | KalimdorС этим постом я припозднился, но лучше поздно, чем никогда
. Теперь перейдём к делу. Сначала код формы для отправки данных. Его можно будет вставить в любое нужное вам место на сайте. И так:
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. Думаю начать копить на неё
. Не, ну правда красавица:

Похожие записи:
6
Комментарии (6):
> Ну просто красавица
Да не то слово =).
Спасибо за скрипт! Было интересно изучить данный способ!
> Вместо простого вывода сообщения об успешности залогинивания, можно сделать вывод сообщения с редиректом на прошлую страницу. Если интересно как это сделать — отпишите в комментариях, в следующем посте опубликую решение
напишите, очень интересно!
Огромное спасибо за тутор, все подробно описано что и как!)
а ты видать давний задрот WOW,судя по названию сайта))
Ну просто красавица, я тоже влюблен в лансер =)