当我单击注册按钮并留下空白字段时,它应该显示一条错误消息,提示需要用户名或电子邮件。实际上,当我单击“注册”时,页面重定向到index.php,我必须单击按钮才能查看表单,然后我可以看到该表单上的错误。我不想要这个。如果用户在留下任何空白字段后单击注册并显示错误消息,我想留在注册页面上。
这是html代码
<form action="<?= ROOT_URL ?>signup-logic.php" method="POST">
<div class="popup-form" id="my-form">
<div class="form-box">
<i id="my-close-btn" class="uil uil-multiply"></i>
<div class="button-box">
<div id="btn"></div>
<button id="log-btn" class="toggle-btn" type="button">Log In</button>
<button id="reg-btn" class="toggle-btn" type="button">Register</button>
</div>
<div class="social-icons">
<a href="#"><i class="fa-brands fa-twitter"></i></a>
<a href="#"><i class="fa-brands fa-facebook"></i></a>
<a href="#"><i class="fa-brands fa-google"></i></a>
</div>
<div id="login" class="form-group">
<input type="text" class="input-field" placeholder="Username">
<input type="text" class="input-field" placeholder="Password">
<input type="checkbox" id="rem-chk" class="check-box"><span class="rem">Remember Me</span>
<button type="submit" class="submit-btn">Log In</button>
<p id="r_msg">Registration Successful. Please log In</p>
</div>
<div id="register" class="form-group">
<?php if (isset($_SESSION['signup'])) : ?>
<div class="err_msg">
<p id="g_msg">
<?=
$_SESSION['signup'];
unset($_SESSION['signup']);
?>
</p>
</div>
<?php endif ?>
<input type="text" name="email" value="<?= $email ?>" class="input-field" placeholder="Email">
<input type="text" name="username" value="<?= $username ?>" class="input-field" placeholder="Username">
<input type="text" name="createpassword" value="<?= $createpassword ?>" class="input-field" placeholder="Password">
<input type="text" name="confirmpassword" value="<?= $confirmpassword ?>" class="input-field" placeholder="Confirm Password">
<div class="type-chk">
<input type="checkbox" class="check-box">
<span class="i-agree">I agree to terms & conditions</span>
</div>
<button type="submit" name="submit" class="submit-btn">Register</button>
</div>
</div>
</div>
<!-- <a href="" class="pro-btn" id="my-form-btn">Visit Us To Promote Your Website</a> -->
<button class="pro-btn" type="button" id="my-form-btn">Click To Promote Your Website</button>
</form>
这是php脚本文件
require 'config/database.php';
if(isset($_POST['submit'])) {
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$username = filter_var($_POST['username'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$createpassword = filter_var($_POST['createpassword'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$confirmpassword = filter_var($_POST['confirmpassword'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
// echo $email;
if(!$email) {
$_SESSION['signup'] = 'Please enter a valid email';
} else if (!$username) {
$_SESSION['signup'] = 'Please enter a username';
} else if (strlen($createpassword) < 8 || strlen($confirmpassword) < 8) {
$_SESSION['signup'] = 'Password should be 8+ character';
} else {
if($createpassword !== $confirmpassword) {
$_SESSION['signup'] = 'Password do not match';
} else {
$hashed = password_hash($createpassword, PASSWORD_DEFAULT);
$user_chk_query = "SELECT * FROM users WHERE username = '$username' OR email = '$email'";
$user_chk_result = mysqli_query($conn, $user_chk_query);
if(mysqli_num_rows($user_chk_result) > 0) {
$_SESSION['signup'] = "username or email already exists";
echo "username or email already exists";
}
}
}
if(isset($_SESSION['signup'])) {
//pass form data back to page
$_SESSION['signup-data'] = $_POST;
header('location: '. ROOT_URL . 'index.php');
die();
} else {
//otherwise insert user into database
$insert_query = "INSERT INTO users SET email = '$email', username = '$username', password = '$hashed'";
$insert_user = mysqli_query($conn,$insert_query);
if(!mysqli_error($conn)) {
//redirect to login page
$_SESSION['signup-success'] = 'Registration successful. Please log in';
header('location: '. ROOT_URL . 'index.php');
die();
}
}
} else {
header('location: '. ROOT_URL . 'index.php');
die();
}```
你可以在html“必填”中这样写:
<input type="text" class="input-field" placeholder="Username" required />