<?php
/*
Dev.丂ᐯㄒㄖㄩ
Ver.Core.SVTO-0-0-1
*/
require_once "../../svtoConfig/_core.php";
#. Проверка на гостя
auth(1);
$get = isset($_GET["id"]) && !empty($_GET["id"]) ? (string) $_GET["id"] : false;
if(isset($_REQUEST["sendData"])){
#. Создаем массив для удобности
$data = [
"login" => (string) $_POST["login"],
"password" => (string) $_POST["password"],
"email" => (string) $_POST["email"]
];
#. Авторизация
if($get == true and $get == "login"){
#. Ошибка если поля пустые
if(empty($data["login"]) or empty($data["password"])){
error("Одно из полей осталось пустым");
header("Location: /auth?id=login");
exit;
}
#. Проверяем существует ли логин в базе
$login = svtoAssoc("SELECT * FROM `users` WHERE `login` = '{$data["login"]}'");
#. Если не существует создаем ошибку
if($login == false){
error("Такой логин еще не зарегистрирован");
header("Location: /auth?id=login");
exit;
}
#. Получаем введенный пароль
$hash = $data["password"];
#. Если пароль введен неверно
if($login == true and !password_verify($hash, $login["password"])){
error("Пароль введен неверно, попробуйте попытку еще раз");
header("Location: /auth?id=login");
exit;
}
#. Создаем куки
#. ID Пользователя
setcookie("id", $login["id"], time() + 86400 * 365, "/");
#. Пароль пользователя
setcookie("hash", $login["password"], time() + 86400 * 365, "/");
header("Location: /main");
exit;
}
#. Регистрация
if($get == true and $get == "reg"){
#. Получаем IP Адрес пользователя
$ip = $_SERVER["REMOTE_ADDR"];
#. Проверяем есть ли данный IP Адрес в базе
$account = svtoAssoc("SELECT * FROM `users` WHERE `ip` = '{$ip}'");
#. Если данный IP Адрес зарегистрирован
if($account == true){
header("Location: /auth?id=reg");
exit;
}
#. Ошибка если поля пустые
if(empty($data["login"]) or empty($data["password"]) or empty($data["email"])){
error("Одно из полей осталось пустым");
header("Location: /auth?id=reg");
exit;
}
#. Создаем лимит символов от и до массивом
$limit = [
#. Лимит для логина
"login" => [
4, #. От
12 #. До
],
#. Лимит для пароля
"password" => [
9, #. От
16 #. До
],
#. Лимит для E-Mail
"email" => [
6, #. От
28 #. До
]
];
#. Ошибка если символов больше или меньше требуемого условия
#. Логин
if(strlen($data["login"]) < $limit["login"][0] or strlen($data["login"]) > $limit["login"][1]){
error("В логине должно быть от {$limit["login"][0]} до {$limit["login"][1]} символов");
header("Location: /auth?id=reg");
exit;
}
#. Пароль
if(strlen($data["password"]) < $limit["password"][0] or strlen($data["password"]) > $limit["password"][1]){
error("В логине должно быть от {$limit["password"][0]} до {$limit["password"][1]} символов");
header("Location: /auth?id=reg");
exit;
}
#. Почта
if(strlen($data["email"]) < $limit["email"][0] or strlen($data["email"]) > $limit["email"][1]){
error("В логине должно быть от {$limit["email"][0]} до {$limit["email"][1]} символов");
header("Location: /auth?id=reg");
exit;
}
#. Проверяем существует ли логин в базе
$dublicateLogin = svtoAssoc("SELECT * FROM `users` WHERE `login` = '{$data["login"]}'");
#. Если уже существует создаем ошибку
if($dublicateLogin == true){
error("Такое логин уже зарегистрирован");
header("Location: /auth?id=reg");
exit;
}
#. Проверяем существует ли логин в базе
$dublicateEmail = svtoAssoc("SELECT * FROM `users` WHERE `email` = '{$data["email"]}'");
#. Если уже существует создаем ошибку
if($dublicateEmail == true){
error("Такой E-Mail уже зарегистрирован");
header("Location: /auth?id=reg");
exit;
}
#. Шифруем пароль
$hash = password_hash($data["password"], PASSWORD_DEFAULT);
#. Получаем устройство
$user_agent = $_SERVER["HTTP_USER_AGENT"];
#. Получаем дату регистрации
$reg = time();
#. Создаем пользователя
svtoQuery("INSERT INTO `users` (`login`, `password`, `email`, `ip`, `user_agent`, `reg`) VALUES ('{$data["login"]}', '{$hash}', '{$data["email"]}', '{$ip}', '{$user_agent}', '{$reg}')");
#. Создаем куки
#. ID Пользователя
setcookie("id", mysqli_insert_id($svto), time() + 86400 * 365, "/");
#. Пароль пользователя
setcookie("hash", $hash, time() + 86400 * 365, "/");
header("Location: /main");
exit;
}
}