html格式下的PHP响应



当用户已经存在时,我想在注册期间编写一个通信。有了这个代码,它将我重定向到另一个页面。我希望看到这个在表单下交流。我试过这样做,但它仍然在另一个页面上重定向我。我也想通过函数"response"来实现,但它不起作用。

寄存器3.php

<html>
<?php                     
if (isset($_POST["register"])) {
$connection = new mysqli("localhost", "root", "root", "users");
$email = $connection->real_escape_string($_POST["email"]);  
$password = sha1($connection->real_escape_string($_POST["password"])); 
$imie = $connection->real_escape_string($_POST["imie"]);
$nazwisko = $connection->real_escape_string($_POST["nazwisko"]);
$data2 = $connection->query("SELECT * FROM user WHERE email='$email'");
if($data2->num_rows >0) {
exit('<font color="red">This user already exists</font>');
} else 
$data = $connection->query("INSERT INTO user 
(email, password, imie, nazwisko) 
VALUES ('$email', '$password', '$imie', '$nazwisko')");

if (($data === false) && ($email != "" || $password != "")) {
echo '<script>alert("Wypełnij poprawnie pola!")</script>';
} else {
echo '<script>alert("Zostałeś zarejestrowany, zaloguj się.")</script>'; 
}

}                    
?>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-16">
<link rel="stylesheet" href="style_reg.css">
<title>Strona o nalewkach - Login </title>
</head>
<body>
<nav class="navbar">
<div class="content">
<div class="logo" ><a href="#">Nalewki z tradycją</a></div>
<ul class="menu-list">
<div class="icon cancel-btn">
<i class="fas fa-times"></i>
</div>
<li><a href="#">Home</a></li>
<li><a href="#">Przepisy na nalewki</a></li>
<li><a href="http://localhost/projekt/login_copy.php">Logowanie</a></li>
<li><a href="galeria.html">Galeria</a></li>
<li><a href="#">Kontakt</a></li>
</ul>
<div class="icon menu-btn">
<i class="fas fa-bars"></i>
</div>
</div>
</nav>
<div class="limiter">
<div class="container-login100">
<div class="wrap-login100 p-l-55 p-r-55 p-t-65 p-b-50">
<form class="login100-form validate-form" method="POST" action="register3.php">
<span class="login100-form-title p-b-33">
Zarejestruj się do świata nalewek
</span>

<div class="wrap-input100 validate-input" data-validate = "Valid email is required: ex@abc.xyz">
<input class="input100" type="text" name="email" placeholder="Email">
<span class="focus-input100-1"></span>
<span class="focus-input100-2"></span>
</div>

<div class="wrap-input100 rs1 validate-input" data-validate="Password is required">
<input class="input100" type="password" name="password" placeholder="Haslo">
<span class="focus-input100-1"></span>
<span class="focus-input100-2"></span>
</div>

<div class="wrap-input100 rs1 validate-input" data-validate="Password is required">
<input class="input100" type="text" name="imie" placeholder="Imie">
<span class="focus-input100-1"></span>
<span class="focus-input100-2"></span>
</div>

<div class="wrap-input100 rs1 validate-input" data-validate="Password is required">
<input class="input100" type="text" name="nazwisko" placeholder="nazwisko">
<span class="focus-input100-1"></span>
<span class="focus-input100-2"></span>
</div>
<div class="container-login100-form-btn m-t-20">
<input type="submit" class="login100-form-btn"  value="Zarejestruj" name="register">

</div>
<p id="response"></p>
</div>
</form>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#login").on('click', function () {
var email = $("#email").val();
var password = $("#password").val();

if (email == "" || password == "")
alert('Wypelnij poprawnie formularz');
else {
$.ajax({
url: 'register3.php',
method: 'POST',
data: {
login: 1,
emailPHP: email,
passwordPHP: password,
imiePHP: imie,
nazwiskoPHP: nazwisko
},
success: function(response) {
$("#response").html(response);
if (response.indexOf('success') >=0)
alert('Wypelnij poprawnie formularz');
},
dataType: 'text'
}
);
}
});
});
</script>
</body>
</html>

您使用jQuery,但从未导入,请将其放入小时头部分

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

在你的javascript中,你有这个

$("#login").on('click', function () {

但我没有看到任何带有id login的元素。为了防止表单提交,只需用这个替换上面的行

$("form").on('submit', function (e) {
e.preventDefault();

给每个表单输入一个id,他们现在没有,这样就可以进行

var email = $("#email").val();
var password = $("#password").val();
var imie = $("#imie").val();
var nazwisko = $("#nazwisko").val();

为您的ajax调用准备单独的php文件,不能使用相同的register3.php,因为必须执行php文件才能给您一个响应,如果不重新加载页面,您就无法在register3.php上执行此操作。

在另一个php文件中,例如email-check.php,检查用户是否存在,如果没有注册,则返回响应ok

$.ajax({
url: 'email-check.php',
method: 'POST',
data: {
login: 1,
emailPHP: email,
passwordPHP: password,
imiePHP: imie,
nazwiskoPHP: nazwisko
},
success: function(response) {
if (response == 'ok') {
//new user registered succesfully
//log user in or redirect to login page
} else {
//user already exists
$("#response").html('This email address is taken');
},
});

最新更新