Система регистрации пользователей на сайте

      Комментарии к записи Система регистрации пользователей на сайте отключены

Главная Форумы Программирование Веб программирование Система регистрации пользователей на сайте

Помечено: ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 4 мес. назад.

  • Автор
    Сообщения
  • #3690

    Хочу рассказать, как сделать систему регистрации пользователей на сайте с помощью php и MySQL. Это очень полезная штука, после нее думаю опубликовать, как делать всякие чаты и форумы, так как уже будет проще, если вы уже научитесь, как делать регистрацию и авторизацию на вашем сайте.

    Ну что приступим?

    1. Создадим базу данных mysite
    2. Зальем дамп таблицы users (код дампа ниже)
    3. Сделаем форму регистрации и обработчик на PHP
    4. Сделаем форму входа и обработчик
    5. Сделаем мини-профиль после логина

    Итак, начнем по плану. Делаем в PhpMyAdmin базу данных mysite. Если вы не знаете, как это делается, то прочтите статью База данных mysql и СУБД PhpMyAdmin.

    Теперь сделайте импорт этого кода в вашу базу (также, если не знаете, как делать дамп в БД прочтите статью «Работа с mysql на php«):

    CREATE TABLE  `users` (
     `id` INT( 5 ) NOT NULL AUTO_INCREMENT ,
     `login` VARCHAR( 200 ) NOT NULL ,
     `password` VARCHAR( 400 ) NOT NULL ,
     `name` VARCHAR( 200 ) NOT NULL ,
     `surname` VARCHAR( 200 ) NOT NULL ,
     `city` VARCHAR( 200 ) NOT NULL ,
    PRIMARY KEY (  `id` )
    );

    После создания БД и таблицы в ней, вам нужно сделать вот такую структуру файлов в корневой папке сайта. У меня это папка localhost/reg:

    Установите http-сервер, например Денвер (именно он будет обрабатывать запросы пользователей).

    Теперь по очереди будем вставлять код. Так как везде в скриптах присутствуют комментарии, описывать их не буду. Напишу лишь алгоритм работы :

    1. Если в сессии пользователя (кукисы) есть переменные логин и айди, то отображаем его профиль
    2. Если таковые отсутствуют, то отображаем форму регистрации и входа

    Итак, вот такие скрипты содержатся в файлах которые вы создали.

    index.php:

    <html>
    
    <title>Система регистрации на PHP</title>
    
    <head>
    </head>
    
    <body>
    <?php
    //Запускаем сессию для работы с кукис файлами
    session_start();
    //Если отсутствуют логин и айди,
    //отображаем форму входа и регистрации
    if(!isset($_SESSION['login']) || !isset($_SESSION['id']))
    {
    ?>
    <center>
    <form action="register.php" method="POST">
    <h3>Регистрация</h3>
    Логин: <br> <input type="text" name="login">
    <br>
    Пароль: <br> <input type="password" name="password">
    <br>
    Имя: <br> <input type="text" name="name">
    <br>
    Фамилия: <br> <input type="text" name="surname">
    <br>
    Город: <br> <input type="text" name="city">
    <br>
    <input type="submit" value="Зарегистрироваться">
    </form>
    
    <form action="login.php" method="POST">
    <h3>Вход</h3>
    Логин: <br> <input type="text" name="login">
    <br>
    Пароль: <br> <input type="password" name="password">
    <br>
    <input type="submit" value="Вход">
    </form>
    </center>
    <?php
    }
    //Если сессия запущена, то есть присутствуют файлы 
    //кукис, и в них есть логин и айди
    //то отображаем профиль пользователя
    //Для этого достаем из базы все данные по логину
    //и выводим их на странице
    if(isset($_SESSION['login']) && isset($_SESSION['id']))
    {
    
    	include("bd.php");
    	$user=$_SESSION['login'];
    	$res=mysql_query("SELECT * FROM `users` WHERE `login`='$user' ");
    	$user_data=mysql_fetch_array($res);
    
    	echo "<center>";
    	echo "Ваш логин: <b>". $user_data['login']."</b><br>";
    	echo "Ваше имя: <b>". $user_data['name']."</b><br>";
    	echo "Ваша фамилия: <b>". $user_data['surname']."</b><br>";
    	echo "Место жительства: <b>". $user_data['city']."</b><br>";
    	echo "<a href='exit.php'>Выход</a>";
    	echo "</center>";
    }
    ?>
    </body>
    
    </html>

    register.php:

    <?php
    
    //Проверяем пришли ли данные
    if(isset($_POST['login']) && isset($_POST['password']))
    {
    //Записываем все в переменные
    	$login=htmlspecialchars(trim($_POST['login']));
    	$password=htmlspecialchars(trim($_POST['password']));
    	$name=htmlspecialchars(trim($_POST['name']));
    	$surname=htmlspecialchars(trim($_POST['surname']));
    	$city=htmlspecialchars(trim($_POST['city']));
    
    //Проверяем на пустоту
    	if($login=="" || $password=="" || $name=="" || $surname=="" || $city=="")
    	{
    		die("Заполните все поля!");
    	}
    
    //Подключаем базу данных
    	include("bd.php");
    
    //Достаем из БД информацию о введенном логине
    	$res=mysql_query("SELECT `login` FROM `users` WHERE `login`='$login' ");
    	$data=mysql_fetch_array($res);
    
    //Если он не пуст, то значит такой уже есть
    	if(!empty($data['login']))
    	{
    		die("Такой логин уже существует!");
    	}
    
    //Проверяем длину пароля
    	if(strlen($password)<7)
    	{
    		die("Длина пароля не может быть меньше 7 символов!");
    	}
    
    //Вставляем данные в БД 
    	$query="INSERT INTO `users` (`login`,`password`,`name`,`surname`,`city`) VALUES('$login','$password','$name','$surname','$city') ";
    	$result=mysql_query($query);
    
    //Если данные успешно занесены в таблицу
    	if($result==true)
    	{
    		echo "Вы успешно зарегистрированы! <br><a href='index.php'>На главную</a>";
    	}
    //Если не так, то выводим ошибку
    	else
    	{
    		echo "Error! ----> ". mysql_error();
    	}
    }
    ?>

    login.php:

    <?php
    
    //Если пришли данные на обработку
    if(isset($_POST['login']) && isset($_POST['password']))
    {
    //Подключаемся к базе данных
    	include("bd.php");
    
    //Записываем все в переменные
    	$login=htmlspecialchars(trim($_POST['login']));
    	$password=htmlspecialchars(trim($_POST['password']));
    
    //Достаем из таблицы инфу о пользователе по логину
    	$res=mysql_query("SELECT * FROM `users` WHERE `login`='$login' ");
    	$data=mysql_fetch_array($res);
    
    //Если такого нет, то пишем что нет
    	if(empty($data['login']))
    	{
    		die("Такого пользователя не существует!");
    	}
    //Если пароли не совпадают
    	if($password!=$data['password'])
    	{
    		die("Введенный пароль неверен!");
    	}
    //Запускаем пользователю сессию
    	session_start();
    
    //Записываем в переменные login и id
    	$_SESSION['login']=$data['login'];
    	$_SESSION['id']=$data['id'];
    //Переадресовываем на главную
    	header("location: index.php");
    }
    
    ?>

    exit.php:

    <?php
    //Запускаем сессию для работы с куками
    session_start();
    //Так как пользователь хотел выйти,
    //удаляем ему логин и id из кукисов
    unset($_SESSION['login']);
    unset($_SESSION['id']);
    
    //Переадресовываем на главную
    header("location: index.php");
    ?>

    bd.php:

    <?php
    //Подключаемся к mysql серверу
    //имя - localhost
    //юзер - root
    //пароль - нету
    $mysql_connect=mysql_connect("localhost","root","");
    //Выбираем базу данных mysite
    $db=mysql_select_db("mysite");
    ?>

    Вот теперь, когда вы все скопировали, можете запустить и сами посмотреть как все работает.

Для ответа в этой теме необходимо авторизоваться.