Skip to content

Instantly share code, notes, and snippets.

@kirwebpr
Created January 6, 2017 19:06
Show Gist options
  • Select an option

  • Save kirwebpr/b3d820f44b7de3a8bfe22d6c7119f62a to your computer and use it in GitHub Desktop.

Select an option

Save kirwebpr/b3d820f44b7de3a8bfe22d6c7119f62a to your computer and use it in GitHub Desktop.
Форма регистрации и авторизации + RedBeanPHP
<?php
require "libs/rb.php";
R::setup( 'mysql:host=localhost;dbname=test_zadanie',
'root', '' );
session_start();
?>
<?php require "db_connect.php";?>
<?php if (isset($_SESSION['logged_user'])) : ?>
Авторизован ! <br>
Привет, <?php echo $_SESSION['logged_user']->login; ?>!
<hr>
<a href = "/zadanie_php/logout.php">Выйти</a>
<?php else : ?>
<a href="login.php">Авторизоваться</a><br>
<a href="signup.php">Регистрация</a>
<?php endif; ?>
<?php
require "db_connect.php";
$data=$_POST;
if(isset($data['do_login'])) // если была нажата кнопка
{
$errors = array();
$user = R::findOne('users', 'login = ?', array($data['login']));
if( $user)
{
// Когда логин сушествует, проверяем пароль
if(password_verify($data['password'], $user->password))
{
// echo 'Логинится';
// Все хорошо, логиним пользователя
$_SESSION['logged_user'] = $user;
echo '<div style = "color: green;">Вы Авторизованы! <br/> Можете перейти на <a href="http://localhost/zadanie_php/index.php">главную</a> страницу!</div><hr>';
} else {
$errors[] = 'Пароль неправильно введен';
}
} else
{
$errors[] = 'Пользователь не найден!';
}
if (!empty($errors)) {
echo'<div style="color:red;">'.array_shift($errors).'</div><hr>';
}
}
?>
<form action="login.php" method="POST">
<p>
<p><strong>Логин:</strong></p>
<input type="text" name="login" value = "<?php echo @$data['login'];?>">
</p>
<p>
<p><strong>Пароль:</strong></p>
<input type="password" name="password" value = "<?php echo @$data['password'];?>">
</p>
<p>
<button type="submit" name = "do_login">Войти</button>
</p>
</form>
<?php
require "db_connect.php";
unset($_SESSION['logged_user']);
//Перебрасываем после выхода
header('Location: /zadanie_php/');
?>
<?php
require "db_connect.php";
$data = $_POST;
if( isset($data['do_signup']) )
{
//здесь делаем проверки на пустоту логина
$errors = array();
if (trim($data['login']) =='') {
$errors[] = 'Введите логин !';
}
if ($data['email'] =='') {
$errors[] = 'Введите email !';
}
if ($data['password'] =='') {
$errors[] = 'Введите пароль !';
}
if ($data['password_2'] !=$data['password']) {
$errors[] = 'Пароли не одинаковы !';
}
// исключаем два одинаковых мейла
if (R::count('users', "login = ?", array($data['login']))>0)
{
$errors[] = 'Пользователь с таким Логином существует !';
}
if (R::count('users', "email = ?", array($data['email']))>0)
{
$errors[] = 'Пользователь с таким Email существует !';
}
//здесь регистрируем
if (empty($errors))
{
// все хорошо, регисирируем в Базе Данных
// Ред Бин исключает SQL иньекции
$user = R::dispense('users');
$user->login=$data['login'];
$user->email=$data['email'];
$user->password= password_hash($data['password'], PASSWORD_DEFAULT);
$user->join_date=time();
R::store($user);
echo '<div style = "color: green;">Вы успешно зарегистрированы! </div><hr>';
} else
{
echo'<div id="errors">'.array_shift($errors). '</div><hr>';
}
}
?>
<form action="/zadanie_php/signup.php" method="POST">
<p>
<p><strong>Ваш Логин:</strong></p>
<input type="text" name="login" value = "<?php echo @$data['login'];?>">
</p>
<p>
<p><strong>Ваш Email:</strong></p>
<input type="email" name="email" value = "<?php echo @$data['email'];?>">
</p>
<p>
<p><strong>Ваш Пароль:</strong></p>
<input type="password" name="password" value = "<?php echo @$data['password'];?>">
</p>
<p>
<p><strong>Повторите Пароль:</strong></p>
<input type="password" name="password_2" value = "<?php echo @$data['password_2'];?>">
</p>
<p>
<button type="submit" name = "do_signup">Зарегистрироваться</button>
</p>
</form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment