Уважаемые читатели сайта Ajaxs.ru

Очень рад что вы зашли на мой сайт. Надеюсь, Вы сможете найти здесь для себя полезную информацию. Зарегистрировавшись на сайте вы получаете ряд преимуществ:
1. При комментировании Вам не нужно вводить имя и капчу с картинки
2. Вы можете получать уведомления на Email к интерисующим вас урокам
3. Вы можете редактировать свои комментарии

Вход на сайт


Забыли пароль



Восстановление пароля


Войти на сайт

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

Главная / Уроки по PHP / Просмотр урока

     

Создание сайтов


Вам нужен небольшой сайт или просто хотите доработать уже существующий? | Подробнее

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

Иногда на сайте часть контента или скачивание каких-либо файлов нужно сделать доступным, только для зарегистрированных пользователей. И тут встает вопрос: «Как же осуществить регистрацию пользователей на сайте?». На самом деле все не так уж и сложно, как кажется. Вся работа будет состоять из двух шагов. В первой части мы сделаем регистрацию пользователей, а во второй осуществим вход зарегистрированных пользователей на сайт.
Для начала мы создадим главную страницу index.php, на которой у нас будет отображаться форма для входа (о ней поговорим чуть позже, пока просто ее создадим) и на ней будет ссылка на страницу регистрации нового пользователя:

Вход:
<br>
<br>
 
<form
action="login.php" method="POST"><table>
<tr>
<td>
Логин:</td>
<td><input
type="text" name="login"></td>
</tr>

<tr>
<td>
Пароль:</td>
<td><input
type="password" name="password"></td>
</tr>

<tr>
<td
colspan="2"><input type="submit" value="Войти" name="submit"></td>
</tr>
</table></form>

<a
href="registration.php">Регистрация</a>

При нажатии на ссылку Регистрация пользователь попадает на страницу registration.php, на которой будет находиться форма для ввода всех необходимых данных при регистрации и выглядеть она будет примерно так:

<form action="verification.php" method="POST">

<table>
<tr>
<td>
Логин<font color="red">*</font>:</td>
<td><input
type="text" size="20" name="login"></td>
</tr>
<tr>
<td>
Пароль<font color="red">*</font>:</td>
<td><input
type="password" size="20" maxlength="20" name="password"></td>
</tr>
<tr>
<td>
Подтверждения пароля<font color="red">*</font>:</td>
<td><input
type="password" size="20" maxlength="20" name="password2"></td>
</tr>
<tr>
<td>
E-mail<font color="red">*</font>:</td>
<td><input
type="text" size="20" name="email"></td>
</tr>
<tr>
<td>
Имя:</td>
<td><input
type="text" size="20" name="name"></td>
</tr>
<tr>
<td>
Фамилия:</td>
<td><input
type="text" size="20" name="lastname"></td>
</tr>
<tr>
<td></td>
<td
colspan="2"><input type="submit" value="Зарегистроваться" name="submit">
</td>
</tr>
</table>
</form>

<br>
Поля со значком <font color="red">*</font> обязательны для заполнения

В этой форме пользователь вводит логин, пароль, email и при желании имя и фамилию, после чего все эти данные отправляются обработчику verification.php. В нем будет происходить проверки данных и в случае удачи заносится в базу данных. После этого пользователь будет считатся зарегистрированным. Теперь рассмотрим, как же устроен обработчик verification.php

<?php
include_once("bd.php");

if (isset($_POST['submit'])){
    if(empty($_POST['login']))  {
    echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите логин"> Введите логин!</font>';
}
elseif (!preg_match("/^\w{3,}$/", $_POST['login'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="В поле "Логин" введены недопустимые символы!">В поле "Логин" введены недопустимые символы! Только буквы, цифры и подчеркивание!</font>';
}
elseif(empty($_POST['password'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите пароль !">Введите пароль!</font>';
}
elseif (!preg_match("/\A(\w){6,20}\Z/", $_POST['password'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Пароль слишком короткий!">Пароль слишком короткий! Пароль должен быть не менее 6 символов! </font>';
}
elseif(empty($_POST['password2'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите подтверждение пароля!">Введите подтверждение пароля!</font>';
}
elseif($_POST['password'] != $_POST['password2']) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введенные пароли не совпадают!">Введенные пароли не совпадают!</font>';
}
elseif(empty($_POST['email'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="Введите E-mail!">Введите E-mail! </font>';
}
elseif (!preg_match("/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/", $_POST['email'])) {
echo '<br><font color="red"><img border="0" src="error.gif" alt="E-mail имеет недопустимий формат!">E-mail имеет недопустимий формат! Например, name@gmail.com! </font>';
}

else{
$login = $_POST['login'];
$password = $_POST['password'];
$mdPassword = md5($password);
$password2 = $_POST['password2'];
$email = $_POST['email'];
$rdate = date("d-m-Y в H:i");
$name = $_POST['name'];
$lastname = $_POST['lastname']; 

$query = ("SELECT id FROM users WHERE login='$login'");
$sql = mysql_query($query) or die(mysql_error());

if (mysql_num_rows($sql) > 0) {
echo '<font color="red"><img border="0" src="error.gif" alt="Пользователь с таким логином зарегистрированый!">Пользователь с таким логином зарегистрирован!</font>';
}
else {
$query2 = ("SELECT id FROM users WHERE email='$email'");
$sql = mysql_query($query2) or die(mysql_error());
if (mysql_num_rows($sql) > 0){
echo '<font color="red"><img border="0" src="error.gif"  alt="Пользователь с таким e-mail зарегистрированый!">Пользователь с таким e-mail уже зарегистрирован!</font>';
}
else{
$query = "INSERT INTO users (login, password, email, reg_date, name_user, lastname )
VALUES ('$login', '$mdPassword', '$email', '$rdate', '$name', '$lastname')"
;
$result = mysql_query($query) or die(mysql_error());;
echo '<font color="green"><img border="0" src="ok.gif"  alt="Вы успешно зарегистрировались!">Вы успешно зарегистрировались!</font><br><a href="index.php">На главную</a>';
}
}
}
}
?>

В самом начале мы подключаем файл bd.php, содержащий подключение к базе данных.

mysql_connect ("localhost","user","password");
mysql_select_db ("reg");

Кстати забыл сказать, что подключать его надо на всех страницах в самом начале документа до начала какого-либо html кода. В дальнейшем мы его еще будем редактировать.

Теперь создадим таблицу users в нашей базе данных:

CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`login` VARCHAR( 20 ) NOT NULL ,
`password` VARCHAR( 35 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`reg_date` VARCHAR( 32 ) NOT NULL ,
`name_user` VARCHAR( 32 ) NOT NULL ,
`lastname` VARCHAR( 32 ) NOT NULL ,
PRIMARY KEY ( `id` )
);

Далее у нас осуществляется проверка введенных данных, если они не корректны, то выдается ошибка. Если все проходит удачно, то превращаем глобальные переменные в обычные, а так же шифруем пароль. Затем мы проверяем, нет ли у нас пользователя с таким же логином и email, если есть, то выдаем ошибку. Если эти проверки были пройдены успешно, заносим нового пользователя в базу данных и сообщаем об успешно регистрации.

Теперь, когда пользователь зарегистрировался ему нужно войти на сайт. Форму для ввода логина и пароля мы уже сделали в самом начале. При нажатии кнопки войти мы отправляем все наши данные файлу login.php, который проверяет есть ли такой пользователь.

<?php
if (isset($_POST['login'])){
    $login = $_POST['login'];
    if ($login == '') {
        unset($login);
        exit ("Введите пожалуйста логин!");
    }
}
if (isset($_POST['password'])){
    $password = $_POST['password'];
    if ($password == '') {
        unset($password);
        exit ("Введите пароль");
    }
}
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
 
$login = trim($login);
$password = trim($password);
$password = md5($password);//шифруем пароль
$user = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password'");
$id_user = mysql_fetch_array($user);
if (empty($id_user['id'])){
    exit ("Извините, введённый вами логин или пароль неверный.");
}
else {
    $_SESSION['password'] = $password;
    $_SESSION['login'] = $login;
    $_SESSION['id'] = $id_user['id'];
}
echo "<meta http-equiv='Refresh' content='0; URL=index.php'>";
?>

Этот файл проверяет нашего пользователя на существование и запускает для него сессию, т.к. весь вход построен именно на них. Эти переменные будут «висеть» в браузере до тех пор пока его не закроешь или их не уничтожишь (на этом основан выход). Теперь чтобы сессии работали нужно в файле bd.php дописать такую строчку session_start(); Для удобства использования переменных сессии будем присваивать их обычным переменным

$login = $_SESSION['login'];
$password = $_SESSION['password'];
$id_user = $_SESSION['id'];

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

if(empty($login) and empty($password)){
echo "Вам необходимо зарегистрироваться, чтобы видеть этот контент";
}
else{
echo "Привет, ".$login." | <a href='exit.php'>Выход</a><br>Контент для зарегистрированных пользователей";
}

Ну и наконец, создадим файл exit.php, который позволит пользователю выйти с сайта. Все что для этого нужно это уничтожить переменные в сессиях:

unset($_SESSION['password']);
unset($_SESSION['login']);
unset($_SESSION['id']);

Ну вот мы сделали простейшую регистрацию, которую Вы можете использовать на своем сайте для ограничения доступа к вашему контенту.

Автор: Евгений Бочкарев и Кушнир Александр Урок добавлен: 30 Июля 2010 в 14:46 Просмотров: 174732

Условия копирования материалов сайта

Все комментарии

Посмотреть предыдущие комментарии (302)

#303 Влад Елисеев 28-04-2017 в 07:47
Сосите хуй я программист
#304 Денис Каск 28-04-2017 в 07:49
Но это неточно
#305 Татаренко Юлия 28-04-2017 в 08:04
Ребят, подскажите что такое оперативная память?
#306 кек лол 28-04-2017 в 08:09
Операти
#307 Дима 30-04-2017 в 13:35
Добрый день! Подскажите, при регистрации выдает ошибку: Incorrect string value: '\xD0\xB2 10:...' for column 'reg_date' at row 1. В чем проблема, как ее можно исправить?
#308 Вячеслав 12-05-2017 в 15:16
еще желательно во всех файлах дописать эту строчку:

<meta charset="utf-8">


#309 Timonik 13-06-2017 в 17:09
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'user'@'localhost' (using password: YES) in Z:\home\timonikch.ru\www\bd.php on line 4
No database selected Что это
#310 ъх\ 18-06-2017 в 18:21
ъх

#311 artur 21-07-2017 в 01:03
у меня выбивает код страницы, подскажите что делать?
#312 artur 21-07-2017 в 19:56
а нет уже исправил
Добавить новый комментарий

Автор:

Текст сообщения:

Если в комментарии присутствует код, пожалуйста вставляете его между тегами [code][/code]

cap

Код с картинки:


Получать уведомления о новых комментариях по Email могут только зарегистрированные пользователи.

41001346159934
R314489888859
Уроки
Для начинающих
Интересное
Файлы
Полезное
Опрос

Много ли среди программистов девушек?

Последние комментарии
Ссылки