Как сделать регистрацию для сайта на PHP + MySQL (Рейтинг: +24)

Печать RSS
Очень часто новички сталкиваются с проблемой написания регистрации у себя на сайте. В этой статье я расскажу как ее сделать.
Распишу все пошагово.

Шаг 1. Подключение к базе данных MySQL.
Создадим файл db_connect.php:

<?php

mysql_connect('localhost', 'пользователь', 'пароль пользователя') or die('Ошибка соединения с MySQL!');
mysql_select_db('база данных') or die ('Ошибка соединения с базой данных MySQL!');
mysql_set_charset('utf8'); // выставляем кодировку базы данных

?>

Шаг 2. Создадим таблицу для пользователей.

CREATE TABLE `users_profiles` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Шаг 3. Создадим файл handler.php - этот файл будет содержать проверку на авторизацию пользователя.

<?php
include_once 'db_connect.php'; // проверяем подключение к базе данных

// проверяем заполнены ли логин и пароль в куках
if(!empty($_COOKIE['username']) AND !empty($_COOKIE['password']))
{
// ищем пользователя в таблице users_profiles, mysql_real_escape_string используем как защиту от sql injection
$search_user = mysql_query("SELECT * FROM `users_profiles` WHERE `username` = '".mysql_real_escape_string($_COOKIE['username'])."' AND `password` = '".mysql_real_escape_string($_COOKIE['password'])."'");
$user = (mysql_num_rows($search_user) == 1) ? mysql_fetch_array($search_user) : 0;
}
else
{
$user = 0;
}
?>

Шаг 4. Пишем регистрацию.
Для этого создадим файл register.php и напишем в нем следующим код:

<?php
include_once 'handler.php'; // проверяем авторизирован ли пользователь

// если да, перенаправляем его на главную страницу
if($user) {
header ('Location: index.php');
exit();
}

if (!empty($_POST['login']) AND !empty($_POST['password']))
{
// фильтрируем логин и пароль
$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$password = mysql_real_escape_string(htmlspecialchars($_POST['password']));

// проверяем есть ли логин в нашей базе данных
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' LIMIT 1;"), 0) != 0)
{
echo 'Выбранный логин уже зарегистрирован!';
exit();
}
// заносим данные в таблицу, обратите внимание - пароль кодируем в md5
mysql_query("INSERT INTO `users_profiles` (`username`, `password`) VALUES ('".$login."', '".md5($password)."')");
echo 'Вы успешно зарегистрированы!';
exit();
}
// форма регистрации
echo '
<form action="register.php" method="POST">
Логин:<br/>
<input name="login" type="text" value="" /><br/>
Пароль:<br/>
<input name="password" type="text" value="" /><br/>
<input type="submit" value="Зарегистрироваться" />
</form>';
?>

Шаг 5. Делаем авторизацию.
Для этого создайте файл login.php

<?php
include_once 'handler.php'; // проверяем авторизирован ли пользователь

// если да, перенаправляем его на главную страницу
if($user) {
header ('Location: index.php');
exit();
}

if(!empty($_POST['login']) AND !empty($_POST['password']))
{
// фильтрируем логин и пароль
$login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
$password = mysql_real_escape_string(htmlspecialchars($_POST['password']));

$search_user = mysql_result(mysql_query("SELECT COUNT(*) FROM `users_profiles` WHERE `username` = '".$login."' AND `password` = '".md5($password)."'"), 0);
if($search_user == 0)
{
echo 'Введенные данные неправильные или пользователь не найден.';
exit();
}
else
{
// заносим логин и пароль в куки
$time = 60*60*24; // сколько времени хранить данные в куках
setcookie('username', $login, time()+$time, '/');
setcookie('password', md5($password), time()+$time, '/');
echo 'Вы успешно авторизировались на сайте!';
exit();
}
}
echo '
<form action="login.php" method="POST">
Логин:<br />
<input name="login" type="text" /><br />
Пароль:<br />
<input name="password" type="password" /><br />
<input type="submit" value="Авторизироваться" />
</form>';
?>

Шаг 6. Выход пользователя.
Каждый юзер должен выходить из сайта, если он этого хочет. Для этого создадим файл exit.php

<?php
include_once 'handler.php'; // проверяем авторизирован ли пользователь

// проверяем авторизацию пользователя
if($user) {
setcookie('username', '', time()-1, '/');
setcookie('password', '', time()-1, '/');
session_destroy();
echo 'Вы успешно вышли!';
} else {
echo 'Для этого действия нужно авторизироваться.';
}
?>

Шаг 7. Создание главной страницы сайта.
Создадим последний файл - index.php

<?php
include_once 'handler.php'; // проверяем авторизирован ли пользователь

if($user) {
// выводим информацию для пользователя
echo 'Привет, <b>'.$user['username'].'</b>!<br />
- <a href="exit.php">Выйти</a><br />
';
} else {
// выводим информацию для гостя
echo '
- <a href="login.php">Авторизация</a><br />
- <a href="register.php">Регистрация</a><br />
';
}
?>

Для настройки создайте файл .htaccess и впишите в него следующее:
php_value register_globals 0
php_value magic_quotes_gpc 0

php_value zlib.output_compression 1

AddDefaultCharset UTF-8

Тем кому лень делать это все, качайте архив.

Спасибо за внимание!
С ув. Егор Смоляков.
Добавил:
Рейтинг: +24
Просмотры: 20975
Комментарии (7) »