Реализация регистрации на сайте на PHP+MySQL

Сегодная мы попробуем реализовать простую регистрацию на сайте с помощью PHP + MySQL.

Реализация регистрации на сайте на PHP+MySQL.

1. Начнем с создания таблицы users в базе. Она будет содержать данные пользователя (логин и пароль). Зайдем в phpmyadmin. Создаем таблицу users.

Нажимаем “сохранить”. Итак, таблица у нас есть.
2. Необходимо соединение с этой таблицей. Создадим файл bd.php:

mysql_connect ("ваш MySQL сервер","логин к этому серверу","пароль к этому серверу");
mysql_select_db ("имя базы, к которой подключаемся");
?>

3. Создаем форму для регистрации – файл reg.php:



Регистрация



//new_user.php - это адрес обработчика. То есть, после нажатия на кнопку "Зарегистрироваться", данные из полей отправятся на страничку save_user.php методом post














4. Создаем файл, который будет заносить данные в базу и сохранять пользователя new_user.php:

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$login = trim($login);
$password = trim($password);
include ("bd.php"); // подключаемся к базе
// проверка на существование пользователя с таким же логином
$check = mysql_query("SELECT id FROM users WHERE login='$login'");
$row = mysql_fetch_array($check);
if (!empty($row['id'])) {
exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
}
// если такого нет, то сохраняем данные
$save = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
// Проверяем, есть ли ошибки
if ($save=='TRUE')
{
echo "Вы успешно зарегистрированы!";
}
else {
echo "Ошибка! Вы не зарегистрированы.";
}
?>

5. Далее необходимо сделать форму для входа на сайт зарегистрированным пользователям index.php:

session_start(); // вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички
?>


Главная страница


// Проверяем, пусты ли переменные логина и id пользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты, то мы выводим форму для входа
echo "Вы вошли на сайт, как гость. Необходимо авторизация.
";
echo '


// testreg.php - это адрес обработчика. То есть, после нажатия на кнопку "Войти", данные из полей отправятся на страничку testreg.php методом post













Зарегистрироваться


';
}
else
{
// Если не пусты, то мы выводим информацию - секретный контент, который доступен лишь зарегистрированным пользователям.
echo "Вы вошли на сайт, как ".$_SESSION['login'];
}
?>

6. Остался файл с проверкой введенного логина и пароля testreg.php:

session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$login = trim($login);
$password = trim($password);
include ("bd.php"); // подключаемся к базе
$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
$row = mysql_fetch_array($result);
if (empty($row['pass']))
{
//если пользователя с введенным логином не существует
exit ("Извините, введённый вами login или пароль неверный.");
}
else {
//если существует, то сверяем пароли
if ($row['pass']==$password) {
//если пароли совпадают, то запускаем пользователю сессию
$_SESSION['login']=$row['login'];
$_SESSION['id']=$row['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
echo "Вы успешно вошли на сайт";
}
else {
//если пароли не сошлись
exit ("Извините, введённый вами логин или пароль неверный.");
}
}
?>

Ну вот и все!

Реализовать систему регистрации на сайте при помощи сессий + PHP + MySQL – ВЫПОЛНЕНО! =)

]]>

Добавить в закладки

]]>

Теги: , , , , , юзабилити

13 комментариев по “Реализация регистрации на сайте на PHP+MySQL”

  1. ]]> Privet ]]> сказал:
    ноября 11, 2009 в 23:53

    otlo4no! spasibo

  2. ]]> Ультрас ]]> сказал:
    декабря 16, 2009 в 04:39

    Супер, очень помогло

  3. ]]> Anna ]]> сказал:
    января 10, 2010 в 03:25

    Большое спасибо , очень помогло!!!!

  4. ]]> Чайник ]]> сказал:
    февраля 8, 2010 в 10:13

    Круть! Так держать Анатолий!

  5. ]]> Технолог ]]> сказал:
    февраля 25, 2010 в 07:27

    Спасибо вам и успехов вам!

  6. ]]> ]]> сказал:
    марта 23, 2010 в 22:01

    йцу

  7. ]]> Павел ]]> сказал:
    марта 30, 2010 в 20:26

    50109727 – моя ася помогите

  8. ]]> Павел ]]> сказал:
    марта 31, 2010 в 17:06

    Спасибо все ок. Анатолий подправьте в testreg.php
    if (empty($row['pass'])) на if (empty($row['password']))
    и еще в файле соединения с бд надо прировнять

    иначе в testreg.php пишет не опознаную переменную $db тут
    $result = mysql_query(“SELECT * FROM users WHERE login=’$login’”,$db);

  9. ]]> Mark ]]> сказал:
    марта 31, 2010 в 17:24

    1)Warning: mysql_query() expects parameter 2 to be resource, null given in Z:\home\bms\www\testreg.php on line 17

    2)Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in Z:\home\bms\www\testreg.php on line 18

    Вот строки:
    17)$result = mysql_query(“SELECT * FROM users WHERE login=’$login’”,$db); //извлекаем из базы все данные о пользователе с введенным логином
    18)$row = mysql_fetch_array($result);
    if (empty($row['pass']))
    Извините, введённый вами login или пароль неверный.

  10. ]]> Mark ]]> сказал:
    марта 31, 2010 в 17:47

    Извините, вот эти строки:
    17)$result = mysql_query(“SELECT * FROM users WHERE login=’$login’”,$db); //извлекаем из базы все данные о пользователе с введенным логином
    18)$row = mysql_fetch_array($result);

  11. ]]> Mark ]]> сказал:
    марта 31, 2010 в 18:12

    Всё уже ОК, сам посидел, разобрался. Большое за контент вашего сайта-настоящее практическое пособие для начинающих

  12. ]]> killswitch ]]> сказал:
    апреля 20, 2010 в 02:54

    Люди, подскажите почему у меня не пашет=(
    Я поменял в файле testreg.php:
    строку if (empty($row['pass']))
    на if (empty($row['password']))
    и
    в файле bd.php:
    строку mysql_connect (“MySQL сервер”,”логин”,”пароль”);
    на $db = mysql_connect (…);

    Регистрируется иправно (заносит пользователя в базу данных), а вот при попытке зайти пишет:
    Извините, введённый вами логин или пароль неверный.
    Помогиет плиз, я еще совсем чайник в php и sql=(

  13. ]]> serega29rus ]]> сказал:
    мая 7, 2010 в 22:01

    не особо скрипт =( если вписывать его в индекс из – за команды exit останавливается ВЕСЬ скрипт! после подключения модуля…

Оставьте комментарий: