понедельник, 25 сентября 2017 г.

Соцсеть. Верификация пользователей. Урок 12.

Добавим в таблицу user поле verified.
boolean,  как определено 0


Идем в файл create-account.php и модифицируем его, добавим поле верификации.
<?php
include('classes/DB.php');

if(isset($_POST['createaccount'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
if(!DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$username))) {
if(strlen($username) >= 3 && strlen($username) <= 32) {
if(preg_match('/[a-zA-Z0-9_]+/', $username)) {
if(strlen($password) >= 6 && strlen($password) <= 60) {
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
if(!DB::query('SELECT email FROM users WHERE email=:email', array(':email'=>$email))) {
DB::query('INSERT INTO users VALUES (:id, :username, :password, :email, \'0\')', array(':id'=>null, ':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email));
echo "Success!";
} else {
echo 'Email in use!';
}
} else {
echo 'Invalid email!';
}
} else {
echo 'Invalid password!';
}
} else {
echo 'Invalid username!';
}
} else {
echo 'Invalid username!';
}
} else {
echo 'User already exists!';
}
}
?>

<h1>Register</h1>
<form action="create-account.php" method="post">
<p><input type="text" name="username" placeholder="Username"/></p>
<p><input type="password" name="password" placeholder="Password"/></p>
<p><input type="email" name="email" placeholder="someone@somesite.com"/></p>
<input type="submit" name="createaccount" value="Create Account"/>
</form>


Создадим пользователя: http://newsocial.loc/create-account.php

Идем в profile.php и отобразим верифицирован ли пользователь.

<?php
include('./classes/DB.php');
include('./classes/Login.php');
$username = '';
$isFollowing = False;
$verified = False; // верифицирован ли пользователь
if (isset($_GET['username'])) {
if (DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))) {
$username = DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['username'];
$userid = DB::query('SELECT id FROM users WHERE username=:username', array('username'=>$_GET['username']))[0]['id'];
$verified = DB::query('SELECT verified FROM users WHERE username=:username', array(':username'=>$_GET['username']))[0]['verified'];
$followerid = Login::isLoggedin(); // получаем id фолловера
// проверяем была ли нажата кнопка follow
if (isset($_POST['follow'])) {
// когда не можешь быть фолловером самого себя
if ($userid != $followerid) {
if (!DB::query('SELECT follower_id FROM followers WHERE user_id=:userid', array(':userid'=>$userid))) {
// пользователь с id=6 нажимает follow и пользователь становится верефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET verified=1 WHERE id=:userid', array(':userid'=>$userid));
}
DB::query('INSERT INTO followers VALUES (:id, :userid, :followerid)', array(':id'=>null,':userid'=>$userid, ':followerid'=>$followerid));
//DB::query('INSERT INTO followers VALUES (\'\', :userid, :followerid)', array(':userid'=>$userid, ':followerid'=>$followerid));
} else {
echo 'Already following!';
}
$isFollowing = True;
}
}
// проверяем была ли нажата кнопка unfollow
if (isset($_POST['unfollow'])) {
// когда не можешь быть фолловером самого себя
if ($userid != $followerid) {
if (DB::query('SELECT follower_id FROM followers WHERE user_id=:userid', array(':userid'=>$userid))) {
// пользователь с id=6 нажимает unfollow и пользователь становится неверефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET verified=0 WHERE id=:userid', array(':userid'=>$userid));
}
DB::query('DELETE FROM followers WHERE user_id=:userid AND follower_id=:followerid', array(':userid'=>$userid, ':followerid'=>$followerid));
}
$isFollowing = False;
}
}
if (DB::query('SELECT follower_id FROM followers WHERE user_id=:userid', array(':userid'=>$userid))) {
$isFollowing = True;
}
} else {
die('User not found!');
}
}
?>

<h1><?php echo $username; ?>'s' Profile<?php if ($verified) { echo ' - Verified'; } ?> </h1>
<form action="profile.php?username=<?php echo $username; ?>" method="post">
<?php
// кнопка follow не будет отображаться для своего собственного профайла
if ($userid != $followerid) {
if ($isFollowing) {
echo '<input type="submit" name="unfollow" value="Unfollow"/>';
} else {
echo '<input type="submit" name="follow" value="Follow"/>';
}
}
?>

</form>

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html