проблема с записью в базу данных mysql

82
19 июня 2021, 04:20

После перехода по ссылке на подтверждение емайл данные не записываются в базу данных. Не могу понять в чем проблема?

if ($Module == 'restore' and $Param['code'] and $_SESSION['RESTORE_INFO'] and $_SESSION['RESTORE_CONFIRM']) {
if (MIX($_SESSION['RESTORE_CONFIRM']) != $Param['code']) MessageSend(1, 'Восстановление не возможно.');
$Random = RandomString(15);
$Password = GenPass($Random, $_SESSION['RESTORE_INFO']);
mysqli_query($CONNECT, "UPDATE `users` SET `password` = '$Password' WHERE `login` = '$_SESSION[RESTORE_INFO]'");
unset($_SESSION['RESTORE_INFO']);
unset($_SESSION['RESTORE_CONFIRM']);
MessageSend(2, 'Пароль успешно изменен, для входа используйте новый пароль <b>'.$Random.'</b>', '/login');
}


if ($Module == 'restore' and $_POST['enter']) {
$_POST['login'] = FormChars($_POST['login'], 1);
$_POST['captcha'] = FormChars($_POST['captcha']);
if (!$_POST['login'] or !$_POST['captcha']) MessageSend(1, 'Невозможно обработать форму.');
if ($_SESSION['captcha'] != md5($_POST['captcha'])) MessageSend(1, 'Капча введена не верно.');
$Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `email`, `login` FROM `users` WHERE `login` = '$_POST[login]'"));
if (!$Row['email']) MessageSend(1, 'Пользователь не найден.');
$_SESSION['RESTORE_INFO'] = $Row['login'];
$_SESSION['RESTORE_CONFIRM'] = GenPass($_POST['email'], $_POST['id']);
mail($Row['email'], 'Восстановление пароля', 'Ссылка для восстановления: http://php.webtm.ru/account/restore/code/'.MIX($_SESSION['RESTORE_CONFIRM']), 'From: robot@php.webtm.ru');
MessageSend(2, 'На ваш E-mail адрес <b>'.HideEmail($Row['email']).'</b> отправлено подтерждение смены пароля');
}


if ($Module == 'register' and $_POST['enter']) {
check_captcha($_POST['captcha']);
if ($_SESSION['captcha'] != md5($_POST['captcha'])) MessageSend(1, 'Капча введена не верно');
check_login($_POST['login']);
check_password($_POST['password']);
check_email($_POST['email']);
check_name($_POST['name']);
check_country($_POST['country']);
CheckRegInfo($_POST['login'], $_POST['email']);
$_SESSION['REGISTER_INFO'] = "$_POST[login],$_POST[password],$_POST[name],$_POST[email],$_POST[country]";
$_SESSION['REGISTER_CONFIRM'] = GenPass($_POST['email'], $_POST['login']);
mail($_POST['email'], 'Регистрация', 'Ссылка для активации: http://php.webtm.ru/account/activate/code/'.MIX($_SESSION['REGISTER_CONFIRM']), 'From: robot@php.webtm.ru');
MessageSend(3, 'Регистрация акаунта успешно завершена. На указанный E-mail адрес <b>'.$_POST['email'].'</b> отправленно письмо о подтверждении регистрации.');
}


else if ($Module == 'activate' and $Param['code'] and $_SESSION['REGISTER_INFO'] and $_SESSION['REGISTER_CONFIRM']) {
if (MIX($_SESSION['REGISTER_CONFIRM']) != $Param['code']) MessageSend(1, 'Активация не возможна.');
CheckRegInfo($Exp[0], $Exp[3]);
$Exp = explode(',', $_SESSION['REGISTER_INFO']);
mysqli_query($CONNECT, "INSERT INTO `users`  VALUES ('', '$Exp[0]', '$Exp[1]', '$Exp[2]', NOW(), '$Exp[3]', $Exp[4], 0, 0, 0)");
unset($_SESSION['REGISTER_INFO']);
unset($_SESSION['REGISTER_CONFIRM']);
MessageSend(3, 'Аккаунт подтвержден.', '/login');
}

else if ($Module == 'login' and $_POST['enter']) {
check_captcha($_POST['captcha']);
if ($_SESSION['captcha'] != md5($_POST['captcha'])) MessageSend(1, 'Капча введена не верно');
check_login($_POST['login']);
check_password($_POST['password']);
$_POST['password'] = GenPass($_POST['password'], $_POST['login']);

$Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `password` FROM `users` WHERE `login` = '$_POST[login]'"));
if ($Row['password'] != $_POST['password']) MessageSend(1, 'Не верный логин или пароль.');
$Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `id`, `name`, `regdate`, `email`, `country`, `avatar`, `password`, `login`, `group` FROM `users` WHERE `login` = '$_POST[login]'"));
$_SESSION['USER_LOGIN_IN'] = 1;
foreach ($Row as $Key => $Value) $_SESSION['USER_'.strtoupper($Key)] = $Value;
if ($_REQUEST['remember']) setcookie('user', $_POST['password'], strtotime('+30 days'), '/');
Location('/profile');
}
Answer 1

ошибку какую пишет? вам бы порядок в коде навести, тут дел на 3 строчки, а у вас уже такая каша... вот хорошая штука - PDO

НЕ обращайтесь к $_POST на прямую, для получения значений $_POST и $_GET используйте функции фильтрации filter_input(), если это массив filter_input_array(). Они же могут определить является ли полученная переменная числом, адресом эл.почты и прочее. Подробнее тут...

READ ALSO
RedBeanPHP и PHP switch: case

RedBeanPHP и PHP switch: case

Есть рабочий вариант кода страницы, для вывода текста из БД с помощью RedBeanPHP:

93
ReactJS + Spring Boot 2 FullStack пиложение, как разобрать

ReactJS + Spring Boot 2 FullStack пиложение, как разобрать

Хочу научиться делать фронтенд для Rest Api приложенийВыбрал React

109
Как переписать код в стиле ООП?

Как переписать код в стиле ООП?

Всем привет! Объясните пожалуйста, как переписать данный код в стиле ООП (если возможно то с использованием интерфейсов)Собственно код:

94