Спойлер: Сам скрипт Код (Text): <?php require "config/config.php"; $dsn = sprintf('mysql:host=%s;dbname=%s', $configs['database']['host'], $configs['database']['database']); $db = new PDO($dsn, $configs['database']['username'], $configs['database']['password']); $view_success = false; $register = isset($_POST['register']) ? (array)$_POST['register'] : false; $errors = []; if ($register) { foreach ($register as $key => $row) { $row = trim($row); if (empty($row)) { $errors[$key] = 'Поле обязательно к заполнению.'; continue; } if (strlen($row) < $configs['validation'][$key]['min_length']) { $errors[$key] = "Длина поля должна составлять не менее {$configs['validation'][$key]['min_length']} символов."; continue; } if (strlen($row) > $configs['validation'][$key]['max_length']) { $errors[$key] = "Длина поля должна быть не более {$configs['validation'][$key]['max_length']} символов."; continue; } if (['$password2'] != ['$password'] ) { $errors[$password2] = 'Пароли не совпадают'; continue; } if ($key !== 'email' && preg_match($configs['validation'][$key]['preg_match'], $row)) { $errors[$key] = 'В поле содержатся недоступстимые символы.'; continue; } if ($key === 'email' && !filter_var($row, FILTER_VALIDATE_EMAIL)) { $errors[$key] = 'Неверный E-mail адрес.'; continue; } if ($key === 'login') { $stmt = $db->prepare('SELECT 1 FROM users WHERE name=?'); $stmt->execute([$row]); if ($stmt->fetchColumn()) { $errors[$key] = 'Логин уже используется.'; continue; } } if ($key === 'email') { $stmt = $db->prepare('SELECT 1 FROM users WHERE email=?'); $stmt->execute([$row]); if ($stmt->fetchColumn()) { $errors[$key] = 'E-mail уже используется.'; continue; } } } if (!count($errors)) { if (checkCaptcha()) { $max_user_id = $db->prepare('SELECT MAX(id) AS id FROM users LIMIT 1'); $max_user_id->execute([]); $max_user_id = $max_user_id->fetchColumn(); if (!$max_user_id) { $max_user_id = 16; } $new_user_id = $max_user_id += 16; $date = date('Y-m-d H:i:s'); $new_user = [ $new_user_id, $register['login'], passwordHash($register['login'], $register['password']), $register['email'], $date, $_SERVER['REMOTE_ADDR'], passwordHash($register['login'], $register['password']), ]; $create = $db->prepare('INSERT INTO users SET id=?,name=?,passwd=?,email=?,creatime=?,qq=?,passwd2=?'); $create->execute($new_user); if ($configs['setting']['gold_count'] > 0) { $new_cash = [ $new_user_id, $configs['setting']['zone_id'], $configs['setting']['zone_id'], $configs['setting']['gold_count'], $date, ]; $gold = $db->prepare("INSERT INTO usecashnow SET userid=?,zoneid=?,aid=?,cash=?,status='1',creatime=?"); $gold->execute($new_cash); } $view_success = true; } else { $reCaptcha_error = 'Повторите попытку.'; } } } function passwordHash($login, $password) { global $configs; switch ($configs['setting']['encode_type']) { case 1: $salt = '0x' . md5($login . $password); break; case 2: $salt = base64_encode(md5($login . $password, true)); break; default: $salt = '0x' . md5($login . $password); break; } return $salt; } function checkCaptcha() { global $configs; if (!$configs['reCaptcha']['enable']) { return true; } $g_response = isset($_POST['g-recaptcha-response']) ? (string)$_POST['g-recaptcha-response'] : 0; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_POSTFIELDS, "secret={$configs['reCaptcha']['secret']}&response=$g_response"); $result = json_decode(curl_exec($ch), true); curl_close($ch); return isset($result['success']) && $result['success'] === true; } function getValue($input) { if (isset($_POST['register'][$input])) { return $_POST['register'][$input]; } return false; } function errorDisplay($text) { if (isset($text)) { echo sprintf('<p class="text text-danger">%s</p>', $text); } return false; } ?> Спойлер: Форма регистрации Код (Text): <?php if (!$view_success): ?> <h2>Регистрация</h2> <div class="nk-gap-2"></div> <!-- START: Login Form --> <form name="register[]" action="register.php" method="post" accept-charset="utf-8"> <input placeholder="Логин" id="login" name="register[login]" type="text" value="<?php echo getValue('login'); ?>"class="form-control"> <small class="form-text text-muted"> От <?php echo $configs['validation']['login']['min_length']; ?> до <?php echo $configs['validation']['login']['max_length']; ?> символов. </small> <?php isset($errors['login']) ? errorDisplay($errors['login']) : false; ?> <input id="password" name="register[password]" type="password" placeholder="Пароль" value="<?php echo getValue('password'); ?>"class="form-control"> <small class="form-text text-muted"> От <?php echo $configs['validation']['password']['min_length']; ?> до <?php echo $configs['validation']['password']['max_length']; ?> символов. </small> <?php isset($errors['password']) ? errorDisplay($errors['password']) : false; ?> <!-- Repeat--> <input id="password_repeat" name="password2" type="password" placeholder="Подтвердите пароль" value="<?php echo getValue ('$password2'); ?>"class="form-control"> <small class="form-text text-muted">Пароли должны совпадать.</small> <?php isset($errors['password2']) ? errorDisplay($errors['password2']) : false; ?> <!-- Repeat--> <!-- Email--> <input id="email" name="register[email]" type="text" placeholder="E-mail" value="<?php echo getValue('email'); ?>" class="form-control"> <small class="form-text text-muted">Используется для восстановления пароля. </small> <?php isset($errors['email']) ? errorDisplay($errors['email']) : false; ?> <center><?php if ($configs['reCaptcha']['enable']): ?> <!-- Email--> <div class="nk-gap-2"> </div> <div class="form-group"> <div class="g-recaptcha" data-sitekey="<?php echo $configs['reCaptcha']['public']; ?>"></div> <?php isset($reCaptcha_error) ? errorDisplay($reCaptcha_error) : false; ?> </div> <?php endif; ?></center> <div class="nk-gap-2"></div> <button type="submit"class="nk-btn nk-btn-x2 nk-btn-block nk-btn-rounded nk-btn-color-main-2">Регистрация</button> </form> <div class="nk-gap-2"></div> <button type="buttom"class="nk-btn nk-btn-x2 nk-btn-block nk-btn-rounded nk-btn-color-main-1" onclick="location.href='/recover.php'">Забыли пароль?</button> <?php else: ?> <h2 class="text-success">Регистрация успешно завершена!</h2> <div class="nk-gap-2"> </div> <p><b>Ваш логин:</b> <?php echo getValue('login'); ?></p> <p><b>Ваш пароль:</b> <?php echo getValue('password'); ?></p> <p class="text-danger">Запомните эти данные!</p> <div class="nk-gap-2"> </div> <p>В случае их утери вы можете восстановить их воспользовавшись функцией <a href="#"><b>Восстановления пароля</b></a>.</p> <p>Если у вас возникли какие-либо другие проблемы, обращайтесь в службу поддержки.</p> <?php endif; ?> <!-- END: Register Form --> Проблема следующая: По непонятным для меня причинам, не получается задействовать подтверждение пароля. Если точнее, то хотелось бы сверять веденный пароль с подтвержденным и если они отличаются, то выводить ошибку. Пытался и так и сяк, но ни в какую. Так же, если подключить рекапчу, то идет переадресация на "белую" страницу, ну и пользователь, соответственно не регистрируется. Т,е без капчи всё работает, а с ней - не хочет. Подскажите, кому не лень рыться в этом "говне". Я в этом деле новенький, буду рад любой помощи.
Для начала я бы проверил, что пришли все нужные данные, а потом сверял их. Реализация странная. PHP: if ( $register['password'] != $register['password2'] ) { //- Пароли не совпадают }
Зачем так заморачиваться, у тебя изначально все как то пошло не так, да еще и через цикл foreach делаешь все проверки, по моему так делают не многие в первые вижу такое PHP: if ( $row['password'] != $row['password2'] ) { $errors['password'] = 'Пароли не совпадают'; continue; } а вообще код нужно переписать, или же если работает пусть работает, главное чтобы работало