R::setup( 'mysql:host=localhost;dbname=mydatabase',
'user', 'password' );
<!DOCTYPE html>
<html>
<head>
<title>My_Site</title>
</head>
<body>
<a href="/signup.php">Регистрация</a><br>
<a href="/signin.php">Авторизация</a>
</body>
</html>
<?php
require '/rb.php';
R::setup( 'mysql:host=localhost;dbname=mydatabase',
'user', 'password' );
Приступим к написанию формы регистрации. Создадим файл signup.php внутри напишите вашу форму регистрации. Я буду запрашивать: Имя, почту (как логин), пароль, повторить пароль, немного о себе и фото (аватарка)<!DOCTYPE html>
<html>
<head>
<title>My_Site - Регистрация</title>
</head>
<body>
<form class="reg" action="/signup.php" method="post">
<input type="email" name="email" value="" placeholder="Ваша почта">
<input type="text" name="name" value="" placeholder="Ваше имя">
<input type="password" name="password" placeholder="Пароль">
<input type="password" name="re_password" placeholder="Повторите пароль">
<input type="text" name="about" value="" placeholder="Расскажите немного о себе">
<!--<input type="file" name="photo" accept="image/*">-->
<button type="submit" name="registration">Зарегистрироваться</button>
</form>
</body>
</html>
Мы скрыли поле изображений, т. к. это будет в будущей статье!<?php
require '/bd.php';
$data = $_POST;
if(isset($data['registration'])){
echo "Отлично)";
}
?>
Таким образом мы подключили базу, после чего из пришедших данных всё записали в $data и проверяем на название кнопки (у меня это registration в форме). После сохранения проверьте на сайте, при нажатие на кнопки 'зарегистрироваться' у вас появится текст 'Отлично)'if($data['email'] == '' || $data['name'] == '' || $data['password'] == '' || $data['re_password'] == ''){
echo "Вы заполнили не все поля!";
}else{
echo "Отлично, будем тут регистрировать)";
}
Таким не хитрым способом мы проверили на пустоту полей. Теперь давайте вернемся к форме и в атрибуте value сделаем ввод данных сайтом, если пользователь уже пробовал зарегистрироваться. Для этого просто нужно обратиться к нашему $data и вывести нужную строку для того или иного input’а. Пример:<input type="email" name="email" value="<?php echo $data['email']; ?>" placeholder="Ваша почта">
Что в итоге получилось у меня:if($data['password'] == $data['re_password']){
$get_user = R::find('users', 'email = ?', [$data['email']]);
if($get_user){
echo "Введенная вами почта уже используется!";
}else{
$date = date('d.m.Y'); //Получаем дату
$user = R::dispense('users');
$user->email = $data['email'];
$user->password = $data['password'];
$user->name = $data['name'];
$user->about = $data['about'];
$user->photo = '/img/no_img.png';
$user->date = $date;
$user->status = 0;
R::store($user);
echo "Вы успешно зарегистрировались, <a href='/signin.php'>авторизация</a>";
}
}else{
echo 'Пароли не совпадают!';
}
Первым действием мы проверили, совпадают ли поля пароля и его повторения. Если они совпали, то мы при помощи R:find начали поиск пользователя с такой же почтой, если такой существует, то ответили что эта почта занята, обратно же мы получили текущую дату и начале регистрацию пользователя. Регистрация происходит по следующему принципу:<!DOCTYPE html>
<html>
<head>
<title>My_Site - Авторизация</title>
</head>
<body>
<form class="log" action="/signin.php" method="post">
<input type="email" name="email" value="<?php echo $data['email']; ?>" placeholder="Ваша почта">
<input type="password" name="password" placeholder="Пароль">
<button type="submit" name="auth">Войти</button>
</form>
</body>
</html>
Форма есть, давайте теперь обработаем её, в начале будет похоже с регистрацией, единственное уменьшается кол-во полей:<?php
require '/db.php';
$data = $_POST;
if(isset($data['auth'])){
if($data['email'] == '' || $data['password'] == ''){
echo "Вы заполнили не все поля!";
}else{
echo "Тут найдем пользователя";
}
}
Теперь снова при помощи R:findOne найдем пользователя по введенной почте:<?php
require '/db.php';
$data = $_POST;
if(isset($data['auth'])){
if($data['email'] == '' || $data['password'] == ''){
echo "Вы заполнили не все поля!";
}else{
$get_user = R::findOne('users', 'email = ?', [$data['email']]);
if($get_user){
if($data['password'] == $get_user['password']){
echo 'Всё работает';
}else{
echo 'Проверьте правильность введенных данных!';
}
}else{
echo 'Проверьте правильность введенных данных!';
}
}
}
?>
session_start();
$_SESSION['user'] = $get_user;
Теперь давайте подключим db.php к нашей главной страницу index.php и выведем почту под кнопками регистрации и авторизации, в начале index.php пропишите:<?php
require '/db.php';
?>
Теперь после кнопок нужно при помощи php вывести данные из сессии:<?php echo $_SESSION['user']->email; ?>
Для упрощения можно после require '/db.php';
<?php echo $user->email; ?>
<?php
require '/db.php';
Для деавторизации мы используем unset, а после чего перекинем пользователя на главную страницу используя header: unset($_SESSION['user']);
header('Location: /');
unset($_SESSION['user']);
Внутри мы указали название сессии в которую мы записывали данные пользователя при авторизации header('Location: /');
После ':' указали страницу куда перенаправим пользователя. В нашем случае это главная страница сайта<?php
require '/db.php';
unset($_SESSION['user']);
header('Location: /');
?>
Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter