[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: [FAQ]Регистрации пользователей, сохранение в БД
Страницы: 1, 2, 3
exotica
Приведенный код предназначен исключительно для ознакомления тем, кто абсолютно не понимает как собрать основной каркас. Не применять в таком виде в боевых условиях.

Доброго времени ;)

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

Поехали...

Содержание:
  • Что должно быть подготовлено для комфортного продолжения работы
  • Форма регистрации
  • Скрипт обработчик - пробный
  • Файл подключения к БД
  • Скрипт обработчик - продолжение
Что должно быть подготовлено для комфортного продолжения работы

- Чтобы не отвлекаться и постоянно не лазить в phpmyadmin или ему подобные заранее создадем базу данных, пользователя к ней и таблицу `users`
- файлы index.html , reg.php , connect.php - в кодировке UTF-8 whitout BOM (UTF-8 без BOM)

Форма регистрации - файл index.html

- Не буду ничего усложнять, для простоты понимания достаточно будет и этого:

<!DOCTYPE html>
<html>
<head>
<meta
charset="utf-8">
<title>
Регистрация пользователя</title>
</head>
<body>
<center>
<form
name="registration" action="reg.php" method="POST">
<table>
<tr>
<td>
Введите имя пользователя:</td>
<td><input
name="username" type="text"></td>
</tr>
<tr>
<td>
Введите пароль:</td>
<td><input
name="userpass" type="password"></td>
</tr>
<tr>
<td>
Подтвердите пароль:</td>
<td><input
name="againpass" type="password"></td>
</tr>
<tr>
<td><input
name="go" type="submit" value=" Регистрация "></td>
<td><input
name="clear" type="reset" value=" Очистить поля "></td>
</tr>
</table>
</form>
</center>
</body>
</html>



Здесь у нас 3 поля для ввода данных - имя пользователя, пароль и его подтверждение. Я поместил все это в таблицу <table> и отцентровал при помощи <center>. Наша форма будет отправлять данные файлу обработчику reg.php методом POST. Соответственно там мы должны будем принять данные из суперглобального массива $_POST[] , где введенная в каждое поле информация будет соответствовать атрибуту name="" этого поля.

-------------------------------------------------------------------------
Пример:
<input name="username" type="text">

После отправки формы введенные данные будут доступны по ключу username
echo $_POST['username']; //выведет на экран введенные ранее данные в поле где name="username"

-------------------------------------------------------------------------
Для проверки работоспособности нашей формы, в файл reg.php мы поместим следующий код:
<?php
echo '<b>Имя пользователя:</b> '. $_POST['username'].'<br>';
echo '<b>Пароль пользователя:</b> '. $_POST['userpass'].'<br>';
echo '<b>Подтвержденеие:</b> '. $_POST['againpass'].'<br>';
?>

Так мы наглядно увидим как это все передается посредством php. НО ведь нам нужно не увидеть данные, а сохранить их в БД для последующего использования. НО прежде чем что-то куда-то сохранять нам нужно соответствующим образом обработать полученые от пользователя данные, ведь не все пользователи белые и пушистые, могут и попробовать навредить вашему сайту.

Скрипт обработчик - файл reg.php

- начнем с того что удаляем все содержимое оставляем только:

<?php

?>



- Не буду громоздить жутких проверок и прочего, ограничусь следующими требованиями к обработчику:
1. Имя пользователя должно быть заполненно
2. Пароль должен соответствовать его подтверждению

- Получается что мы должны отправить пользователя обратно на страницу ввода данных если:
1. Он не заполнил поле "Имя пользователя"
2. Не соответствует подтверждение, ранее введенному паролю (тем самым спасаем пользователя от случайной опечатки при вводе)

Приступим: - файл reg.php

<?php
header('Content-Type: text/html; charset=utf-8');

if(!empty($_POST['username']))
{
$username = $_POST['username'];
if(!empty($_POST['userpass']))
{
$userpass = $_POST['userpass'];
if(!empty($_POST['againpass']) && ($_POST['againpass'] == $_POST['userpass']))
{
echo '<b>Имя пользователя:</b> '. $username.'<br>';
echo '<b>Пароль пользователя:</b> '. $userpass.'<br>';
}
else
{
echo 'Подтверждение пароля введено не корректно.';
exit();
}
}

else
{
echo 'Пароль не введен.';
exit();
}
}

else
{
echo 'Имя введено не корректно.';
exit();
}
?>


- В итоге теперь, если ввести все данные корректно, то мы увидим логин и пароль, если же что-то не введем или же введем неверное подтверждение, то скрипт останавливается и пишет нам текст ошибки. Теперь нам необходимо сохранить корректно введеные данные в БД. В первую очередь потребуется подключение к БД.

Файл подключения к БД - файл connect.php

- В и в рабочем проекте и в примере использую mysqli , предпологаю что БД с таблицей у вас уже есть

<?php
$sqlhost = 'localhost'; // по умолчанию почти всегда это localhost
$sqluser = 'myscript'; // имя пользователя для подключения к БД
$sqlpass = 'qwerty1'; // пароль
$sqldata = 'mysite'; // и имя базы данных

$link = mysqli_connect($sqlhost, $sqluser, $sqlpass, $sqldata);
if (!$link)
die ('Ошибка подключения '. mysqli_connect_errno() . mysqli_connect_error());
?>


- Вернемся к нашему обработчику
- Нам необходимо обработать данные и сохранить их в БД

файл reg.php


<?php
header('Content-Type: text/html; charset=utf-8');
if(!empty($_POST['username']))
{
$username = $_POST['username'];
if(!empty($_POST['userpass']))
{
$userpass = $_POST['userpass'];
if(!empty($_POST['againpass']) && ($_POST['againpass'] == $_POST['userpass']))
{
include 'connect.php'; // подключаем наш файл соединения с БД

$name = mysqli_real_escape_string($link, $username); //экранируем все неблагоприятные для БД символы
$pass = md5($userpass); //создаем хэш пароля

$queryInto = "INSERT INTO `users` (name, pass) VALUES ('".$name."', '".$pass."')"; //составляем запрос
$resultInto = mysqli_query($link, $queryInto) or die ('Ошибка: '.mysqli_error($link)); //отправляем запрос, в случае ошибки видим ошибку соответственно
header('location: http://test.ru/'); //отправляем пользователя на страницу ввода данных и очищаем $_POST

}
else
{
echo 'Подтверждение пароля введено не корректно.';
exit();
}
}

else
{
echo 'Пароль не введен.';
exit();
}
}

else
{
echo 'Имя введено не корректно.';
exit();
}
?>

Итак, если после нажатия кнопки регистрация видим чистую форму, значит пользователь успешно добавлен в БД. Собственно на этом все. Прочие проверки и исключения все уже вешают на свой вкус и в зависимости от надобности в них.

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.