Контакты NewHost

Создание регистрации на сайте на PHP + MySQL

Приветствую Вас! Сейчас мы попробуем реализовать самую простую регистрацию на сайте с помощью PHP + MySQL. Для этого на вашем компьютере должен быть установлен Apache. Принцип работы нашего скрипта изображен ниже.

1. Начнем с создания таблички users в базе. Она будет содержать данные пользователя (логин и пароль). Зайдем в phpmyadmin (если вы создаете базу на своем ПК http://localhost/phpmyadmin/). Создаем таблицу users, в ней будет 3 поля.

Я создаю ее в базе mysql, вы можете создавать в другой базе. Далее устанавливаем значения, как на рисунке:

Нажимаем «сохранить». Итак, таблица у нас есть.

2. Необходимо соединение с этой таблицей. Давайте создадим файл bd.php. Его содержание:

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

В моем случае это выглядит так:

<?php
$db = mysql_connect («localhost»,»user»,»1234″);
mysql_select_db («mysql»,$db);
?>

Сохраняем bd.php.
Отлично! У нас есть таблица в базе, соединение к ней. Теперь можно приступать к созданию странички, на которой пользователи будут оставлять свои данные.

3. Создаем файл reg.php с содержанием (все комментарии внутри):

<html>
<head>
<title>Регистрация</title>
</head>
<body>
<h2>Регистрация</h2>
<form action=»save_user.php» method=»post»>
<!—**** save_user.php — это адрес обработчика.  То есть, после нажатия на кнопку «Зарегистрироваться», данные из полей  отправятся на страничку save_user.php методом «post» ***** —>
<p>
<label>Ваш логин:<br></label>
<input name=»login» type=»text» size=»15″ maxlength=»15″>
</p>
<!—**** В текстовое поле (name=»login» type=»text») пользователь вводит свой логин ***** —>
<p>
<label>Ваш пароль:<br></label>
<input name=»password» type=»password» size=»15″ maxlength=»15″>
</p>
<!—**** В поле для паролей (name=»password» type=»password») пользователь вводит свой пароль ***** —>
<p>
<input type=»submit» name=»submit» value=»Зарегистрироваться»>
<!—**** Кнопочка (type=»submit») отправляет данные на страничку save_user.php ***** —>
</p></form>
</body>
</html>

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

<?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»);// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
// проверка на существование пользователя с таким же логином
$result = mysql_query(«SELECT id FROM users WHERE login=’$login’»,$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit («Извините, введённый вами логин уже зарегистрирован. Введите другой логин.»);
}
// если такого нет, то сохраняем данные
$result2 = mysql_query («INSERT INTO users (login,password) VALUES(‘$login’,'$password’)»);
// Проверяем, есть ли ошибки
if ($result2==’TRUE’)
{
echo «Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href=’index.php’>Главная страница</a>»;
}
else {
echo «Ошибка! Вы не зарегистрированы.»;
}
?>

5. Теперь наши пользователи могут регистрироваться! Далее необходимо сделать «дверь» для входа на сайт уже зарегистрированным пользователям. index.php (комментарии внутри) :

<?php
//  вся процедура работает на сессиях. Именно в ней хранятся данные  пользователя, пока он находится на сайте. Очень важно запустить их в  самом начале странички!!!
session_start();
?>
<html>
<head>
<title>Главная страница</title>
</head>
<body>
<h2>Главная страница</h2>
<form action=»testreg.php» method=»post»>

<!—****  testreg.php — это адрес обработчика. То есть, после нажатия на кнопку  «Войти», данные из полей отправятся на страничку testreg.php методом  «post» ***** —>
<p>
<label>Ваш логин:<br></label>
<input name=»login» type=»text» size=»15″ maxlength=»15″>
</p>

<!—**** В текстовое поле (name=»login» type=»text») пользователь вводит свой логин ***** —>

<p>

<label>Ваш пароль:<br></label>
<input name=»password» type=»password» size=»15″ maxlength=»15″>
</p>

<!—**** В поле для паролей (name=»password» type=»password») пользователь вводит свой пароль ***** —>

<p>
<input type=»submit» name=»submit» value=»Войти»>

<!—**** Кнопочка (type=»submit») отправляет данные на страничку testreg.php ***** —>
<br>
<!—**** ссылка на регистрацию, ведь как-то же должны гости туда попадать ***** —>
<a href=»reg.php»>Зарегистрироваться</a>
</p></form>
<br>
<?php
// Проверяем, пусты ли переменные логина и id пользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
{
// Если пусты, то мы не выводим ссылку
echo «Вы вошли на сайт, как гость<br><a href=’#'>Эта ссылка  доступна только зарегистрированным пользователям</a>»;
}
else
{

// Если не пусты, то мы выводим ссылку
echo «Вы вошли на сайт, как «.$_SESSION['login'].»<br><a  href=’http://tvpavlovsk.sk6.ru/’>Эта ссылка доступна только  зарегистрированным пользователям</a>»;
}
?>
</body>
</html>

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

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

<?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»);// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь

$result = mysql_query(«SELECT * FROM users WHERE login=’$login’»,$db); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
{
//если пользователя с введенным логином не существует
exit («Извините, введённый вами login или пароль неверный.»);
}
else {
//если существует, то сверяем пароли
if ($myrow['password']==$password) {
//если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет «носить с собой» вошедший пользователь
echo «Вы успешно вошли на сайт! <a href=’index.php’>Главная страница</a>»;
}
else {
//если пароли не сошлись

exit («Извините, введённый вами login или пароль неверный.»);
}
}
?>

Ну вот и все! Может урок и скучный, но очень полезный. Здесь показана только идея регистрации, далее Вы можете усовершенствовать ее: добавить защиту, оформление, поля с данными, загрузку аватаров, выход из аккаунта (для этого просто уничтожить переменные из сессии функцией unset) и так далее. Удачи!

Все проверил, работает исправно!