«Имя пользователя / адрес электронной почты уже зарегистрирован» отображается, даже если я еще не зарегистрировался - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь повторить «Имя пользователя / электронная почта уже зарегистрирована», только когда найдены дубликаты, но я застрял с этим эхом, пока не зарегистрируюсь. Как я могу показать это только когда найдены дубликаты и что я тут не так делаю??

 // register users

 if(isset($_POST['username']) && !empty($_POST['username'])){$username = mysqli_real_escape_string($mysqli, $_POST['username']);} 
 if(isset($_POST['email']) && !empty($_POST['email'])){$email = mysqli_real_escape_string($mysqli, $_POST['email']);}
 if(isset($_POST['password']) && !empty($_POST['password'])){$password = mysqli_real_escape_string($mysqli, $_POST['password']);}
 if(isset($_POST['confirm_password'])){$confirm_password =mysqli_real_escape_string($mysqli,$_POST['confirm_password']);}

 //chkd && secon

 $chkd = $mysqli->prepare("SELECT * FROM user WHERE username = ? AND email =?");
 $chkd->bind_param("ss", $username, $email);
 $chkd->execute();
 $chkd->store_result();

 $numRows = $chkd->num_rows();
 if( $numRows ){
 echo "<p style='text-align: center; color:red'>Username/Email is   already registered</p>"; 

 } else {

 $secon = $mysqli->prepare("INSERT INTO user (username, email, password) VALUES (?, ?, ?)");
 $secon->bind_param("sss", $username, $email, $password);
 $secon->execute();
 $secon->close();
 $chkd->close();

 echo "<p style='text-align: center; color:red'>DATA registered</p>";};

1 Ответ

0 голосов
/ 08 апреля 2019

Я добавил это, чтобы отобразить ошибки в моей форме

<?php if(count($errors) > 0): ?>
<div class="alert alert-danger">
    <?php foreach($errors as $error): ?>
        <li><?php echo $error; ?></li>
    <?php endforeach; ?>
</div>
<?php endif; ?>

, и вот как выглядит переработанный код, и он работает:)

<?php

session_start();

// errvar

$errors = array();

// register 

if (isset($_POST['register-submit'])) {
  $username = $_POST['username'];
  $email = $_POST['email'];
  $password = $_POST['password'];
  $confirm_password = $_POST['confirm_password'];

// validation

$chkd = $mysqli->prepare("SELECT * FROM user WHERE email = ? LIMIT 1");
$chkd->bind_param("s", $email);
$chkd->execute();
$chkd->store_result();
$row_cnt = $chkd->num_rows;
$chkd->close();

if ($row_cnt > 0) {
    $errors['email'] = "Email already exists";
}

$chkd = $mysqli->prepare("SELECT * FROM user WHERE username = ? LIMIT 1");
$chkd->bind_param("s", $username);
$chkd->execute();
$chkd->store_result();
$row_cnt = $chkd->num_rows;
$chkd->close();

if ($row_cnt > 0) {
    $errors['username'] = "Username already exists";
}


if (count($errors) === 0) {
    $password = password_hash($password, PASSWORD_DEFAULT);
    $secon = $mysqli->prepare("INSERT INTO user (username, email, password) VALUES (?, ?, ?)");
    $secon->bind_param("sss", $username, $email, $password);
    $secon->execute();
    $secon->close();
    header('Location:home.php');
    exit();
  }
};
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...