<?php
if ($module == 'register' and $_POST['enter']) {
$_POST['name'] = FormChars($_POST['name']);
$_POST['login'] = FormChars($_POST['login']);
$_POST['email'] = FormChars($_POST['email']);
$_POST['password'] = GenPass(FormChars($_POST['password']), $_POST['login']);
if (!$_POST['login'] or !$_POST['password'] or !$_POST['name'] or !$_POST['email']) MessageSend(1,'Невозможно обработать форму.');
$Row = mysqli_fetch_assoc(mysqli_query($connect, "SELECT `login` FROM `users` WHERE `login` = '$_POST[login]'"));
if($Row['login']) exit('Логин <b>'.$_POST['login'].'</b> уже используется.');
$Row = mysqli_fetch_assoc(mysqli_query($connect, "SELECT `email` FROM `users` WHERE `email` = '$_POST[email]'"));
if($Row['email']) exit('Email <b>'.$_POST['email'].'</b> уже используется.');
mysqli_query($connect, "INSERT INTO `users` (`login`, `password`, `name`, `regdate`, `email`, `avatar`, `country`) VALUES ('$_POST[login]', '$_POST[password]', '$_POST[name]', NOW(), '$_POST[email]', 0, 0)");
$Code = substr(base64_encode($_POST['email']), 0, -1);
mail($_POST['email'], 'Регистрация на Web-platform', 'Ссылка для активации: http://forum/account/activate/code/'.substr($Code, -5) .substr($Code, 0, -5), 'From: Web-platform');
MessageSend(3, 'Регистрация аккаунта успешно завершена, на указанный email адрес <b>'.$_POST['email'].'</b> отправленно письмо о подтверждении регистрации.');
}
else if ($module == 'activate' and $param['code']){
if (!$_SESSION['USER_ACTIVE_EMAIL']){
$Email = base64_decode(substr($param['code'], 5).substr($param['code'], 0, 5));
if(strpos($Email, '@') !== false){
mysqli_query($connect, "UPDATE `users` SET `active` = 1 WHERE `email` = '$Email'");
$_SESSION['USER_ACTIVE_EMAIL'] = $Email;
MessageSend(3, 'Email <b>'.$Email.'</b> подтвержден.', '/login');
}
else MessageSend(1, 'Email адрес не подтвержден.', '/login');
}
else MessageSend(1, 'Email адрес <b>'.$_SESSION['USER_ACTIVE_EMAIL'].'</b> уже подтвержден', '/login');
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.messageBlock{
text-align: center;
border: 1px solid #3ed714;
background-color: #3ed714;
font-size: 20px;
padding: 10px;
}
</style>
</head>
<body>
</body>
</html>
<?php
include_once 'setting.php';
session_start();
$connect = mysqli_connect(HOST, USER, PASS, DB);
if ($_SERVER['REQUEST_URI'] == '/'){
$page = 'index';
$module = 'index';
} else {
$URL_Path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$URL_Parts = explode('/', trim($URL_Path, ' /'));
$page = array_shift($URL_Parts);
$module = array_shift($URL_Parts);
if(!empty($module)){
$param = array();
for($i = 0; $i < count($URL_Parts); $i++){
$param[$URL_Parts[$i]] = $URL_Parts[++$i];
}
}
}
if ($page === 'index') include('page/index.php');
else if ($page == 'login') include('page/login.php');
else if ($page == 'register') include('page/register.php');
else if ($page == 'account') include('form/account.php');
function MessageSend($p1, $p2, $p3 = ''){
if($p1 == 1) $p1 = 'Ошибка';
else if($p1 == 2) $p1 = 'Подсказка';
else if($p1 == 3) $p1 = 'Информация';
$_SESSION['message'] = '<div class="messageBlock"><b>'.$p1.'</b>: '.$p2.'</div>';
if($p3) $_SERVER['HTTP_REFERER'] = $p3;
exit(header('location: '.$_SERVER['HTTP_REFERER']));
}
function MessageShow(){
if($_SESSION['message']) $Message = $_SESSION['message'];
echo $Message;
$_SESSION['message'] = array();
}
function FormChars ($p1){
return nl2br(htmlspecialchars(trim($p1), ENT_QUOTES), false);
}
function GenPass($p1, $p2){
return md5('qweasd'.md5('321'.$p1.'123').md5('958'.$p2.'534'));
}
function style(){
echo '* {padding: 0;margin: 0;box-sizing: border-box;}header {display: flex;justify-content: space-between;align-items: center;height: 53px;border-bottom: 1px solid #7C7B7B;}.header-content {display: flex;align-items: center;}.header-content a {margin-right: 20px;font-family: Inter, sans-serif;}.header-name{font-size: 32px;text-decoration: none;color: #333366;font-weight: bold;margin-left: 90px;}.header-text{font-size: 24px;text-decoration: none;color: #0E235A;margin: 0 0 0 120px;}.header-text:hover{color: #ff0000;}.registration {display: flex;align-items: center;}.log-in{padding: 0 10px;color: #000000;text-decoration: none;font-size: 24px;font-family: Inter, sans-serif;margin: 0 20px;}.registration button{border-radius: 0px;border: 0px;width: 94px;height: 36px;font-size: 24px;color: #ffffff;background-color: #000000;margin-right: 90px;font-family: Inter, sans-serif;text-decoration: none;}.button-registration{color: white;text-decoration: none;}.registration button:active{transition: 0.1s;transform: scale(0.8);}.registration button:hover{background-color: rgb(48, 48, 48);color: #ffffff;}';
}
?>
<?php
if ($_POST['enter']){
echo 'Запрос на логин...';
exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Регистрация</title>
<style>
<?php style() ?>
.form-block {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 70vh;
}
form {
border: 1px solid black;
padding: 30px;
border-radius: 10px;
width: 17%;
height: 75%;
box-shadow: 8px 8px 8px 0 rgba(0,0,0,0.2);
}
input{
width: 100%;
box-sizing: border-box;
height: 40px;
border-radius: 10px;
border: 1px solid #979797;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-size: 20px;
}
.button-reg{
border: none;
border-radius: 20px;
background-color: #4848EB;
font-size: 20px;
font-family: Inter, sans-serif;
font-weight: bold;
color: #fff;
}
.pass-text{
margin: 5px 0 ;
font-size: 10px;
color: #737373;
font-family: Montserrat, sans-serif;
font-weight: light;
}
</style>
</head>
<body>
<header>
<div class="header-content">
<a href="" class="header-name">Web-platform</a>
<a href="" class="header-text">guides</a>
<a href="" class="header-text">create</a>
<a href="/" class="header-text">forum</a>
</div>
<div class="registration">
<a href="/login" class="log-in">log in</a>
<a href="/register"><button class="">sign up</button></a>
</div>
</header>
<?php MessageShow() ?>
<div class="form-block">
<form action="/account/register" method="POST">
<div class="input-width">
<div class="form-group">
<label for="name">Имя</label>
<input type="text" id="name" name="name" maxlength="50" pattern="[А-Яа-яЁё]{2,50}" title="не менее 2 и не более 50 символов" required>
</div>
<div class="form-group">
<label for="login">Логин</label>
<input type="text" id="login" name="login" maxlength="20" pattern="[A-Za-z0-9]{3,20}" title="не менее 3 и не более 20 латынских символов или цифр" required>
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
</div>
<div class="form-group">
<label for="password">Пароль</label>
<input type="password" id="password" name="password" maxlength="25" pattern="[A-Za-z0-9]{8,25}" title="не менее 8 и не более 25 латынских символов или цифр" required>
<p class="pass-text">Пароли должны содержать не менее восьми символов, включая как минимум 1 букву и 1 цифру.</p>
</div>
<br>
<input type="submit" name="enter" value="Зарегистрироваться" class="button-reg">
</form>
</div>
</div>
</body>
</html>
У меня есть система регистрации через PHP, где пользователи могут зарегистрироваться и получить электронное письмо для активации учётной записи. Однако у меня возникает проблема: последний символ электронной почты обрезается, что приводит к ошибке при подтверждении адреса электронной почты.