使用jQuery和PHP检查数据库中是否已经存在电子邮件地址
我试图验证一个电子邮件地址,如果它已经存在于表中,但这不起作用 这是我的密码:使用jQuery和PHP检查数据库中是否已经存在电子邮件地址,php,jquery,mysql,Php,Jquery,Mysql,我试图验证一个电子邮件地址,如果它已经存在于表中,但这不起作用 这是我的密码: <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script src="http://code.jquery.com/jquery-latest.js"><
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$('#Submit').click(function() {
var emailVal = $('#email').val(); // assuming this is a input text field
$.post('checkemail.php', {'email' : emailVal}, function(data) {
alert(data);
});
});
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="view.php">
<p>
<input type="text" name="email" id="email" />
</p>
<p>
<input type="submit" name="Submit" id="Submit" value="Submit" />
</p>
</form>
</body></html>
无标题文件
$(“#提交”)。单击(函数(){
var emailVal=$('#email').val();//假设这是一个输入文本字段
$.post('checkemail.php',{'email':emailVal},函数(数据){
警报(数据);
});
});
单击Submit按钮时,应首先使用jQuery进行验证,并调用checkemail.php文件,如下所示:
<?php
include("../includes/db.php");
$sql = "SELECT email FROM lf_clients WHERE email = " .$_POST['email'];
$select = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($select);
if (mysqli_num_rows > 0) {
echo "The email already exists.";
}
?>
但是,当我单击submit按钮时,它会转到view.php而不是checkemail.php。在重定向到view.php之前,它应该首先检查电子邮件是否已经存在。如果电子邮件已经存在,则不应重定向到view.php。我怀疑您必须中止提交按钮的标准操作。您可能还必须将操作从单击更改为提交,但现在无法对其进行测试
$('#Submit').submit(function(e) {
var usernameVal = $('#email').val(); // assuming this is a input text field
$.post('checkemail.php', {'email' : emailVal}, function(data) {
alert('data');
});
e.preventDefault(); // <------
});
$(“#提交”).Submit(函数(e){
var usernameVal=$('#email').val();//假设这是一个输入文本字段
$.post('checkemail.php',{'email':emailVal},函数(数据){
警报(“数据”);
});
e、 preventDefault();//您可以执行以下操作
在PHP文件中-
if (mysqli_num_rows > 0) {
echo "0"; // email exists
else
echo "1"; // email doesn't exists
return;
在HTML文件中,使用这类东西的最佳实践是使用Jquery远程验证方法
$("#myform").validate({
rules: {
email: {
required: true,
email: true,
remote: "check-email.php"
}
},
messages:{
email:'Email address exists.'
}
});
在PHP文件中,您可以执行@Sachyn提到的操作。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){ //newly added
$('#Submit').click(function() {alert('in');
var emailVal = $('#email').val(); // assuming this is a input text field
$.post('checkemail.php', {'email' : emailVal}, function(data) {
if(data=='exist') return false;
else $('#form1').submit();
});
});});
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="view.php">
<p>
<input type="text" name="email" id="email" />
</p>
<p>
<input type="button" name="Submit" id="Submit" value="Submit" />
</p>
</form>
</body>
</html>
无标题文件
$(文档).ready(函数(){//新添加
$(“#提交”)。单击(函数(){alert('in');
var emailVal=$('#email').val();//假设这是一个输入文本字段
$.post('checkemail.php',{'email':emailVal},函数(数据){
如果(数据=='exist')返回false;
else$('#form1')。提交();
});
});});
php代码
<?php
include("../includes/db.php");
$sql = "SELECT email FROM lf_clients WHERE email = " .$_POST['email'];
$select = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($select);
if (mysqli_num_rows > 0) {
echo "exist";
}else echo 'notexist';
?>
如果您喜欢使用JQuery进行检查,可以按如下方式进行
$('document').ready(函数(){
var username\u state=false;
var email_state=false;
$('#username')。在('blur',function()上{
var username=$('#username').val();
如果(用户名=“”){
用户名\状态=false;
返回;
}
$.ajax({
url:'register.php',
键入:“post”,
数据:{
“用户名检查”:1,
“用户名”:用户名,
},
成功:功能(响应){
如果(响应=='take'){
用户名\状态=false;
$('#username').parent().removeClass();
$('#username').parent().addClass(“表单错误”);
$(“#用户名”).sibbins(“span”).text(“对不起……用户名已被占用”);
}否则,如果(响应=='未采取'){
username\u state=true;
$('#username').parent().removeClass();
$('#username').parent().addClass(“form#u success”);
$('#username')。同级('span')。文本('username available');
}
}
});
});
$('#email')。在('blur',function()上{
var email=$('#email').val();
如果(电子邮件=“”){
email_state=false;
返回;
}
$.ajax({
url:'register.php',
键入:“post”,
数据:{
“电子邮件检查”:1,
“电子邮件”:电子邮件,
},
成功:功能(响应){
如果(响应=='take'){
email_state=false;
$('#email').parent().removeClass();
$('#email').parent().addClass(“表单错误”);
$('#email')。兄弟姐妹(“span”)。文本(“对不起……电子邮件已被接收”);
}否则,如果(响应=='未采取'){
email_state=true;
$('#email').parent().removeClass();
$('#email').parent().addClass(“form#u success”);
$('#email')。兄弟姐妹('span')。文本('email available');
}
}
});
});
$('reg_btn')。在('click',function()上{
var username=$('#username').val();
var email=$('#email').val();
var password=$('#password').val();
如果(用户名_状态==false | |电子邮件_状态==false){
$('#error_msg')。text('首先修复表单中的错误');
}否则{
//继续提交表格
$.ajax({
url:'register.php',
键入:“post”,
数据:{
“保存”:1,
“电子邮件”:电子邮件,
“用户名”:用户名,
“密码”:密码,
},
成功:功能(响应){
警报(“用户已保存”);
$('#username').val('');
$('#email').val('');
$('#password').val('');
}
});
}
});
});
正文{
背景:#A9D9C3;
}
#登记表h1{
文本对齐:居中;
}
#登记表{
宽度:37%;
保证金:100像素自动;
填充底部:30px;
边框:1px实心#918274;
边界半径:5px;
背景:白色;
}
#登记表输入{
宽度:80%;
高度:35px;
利润率:5×10%;
字体大小:1.1米;
填充:4px;
字体大小:.9em;
}
#注册号{
高度:35px;
宽度:80%;
利润率:5×10%;
颜色:白色;
背景:#3B5998;
边界:无;
边界半径:5px;
}
/*表单错误的样式设置*/
.form_错误范围{
宽度:80%;
高度:35px;
利润率:3×10%;
字体大小:1.1米;
颜色:#D83D5A;
}
.form_错误输入{
边框:1px实心#D83D5A;
}
/*在表单上没有错误的情况下进行样式设置*/
.form_成功跨度{
宽度:80%;
高度:35px;
利润率:3×10%;
字体大小:1.1米;
颜色:绿色;
}
.form_成功输入{
边框:1px纯绿色;
}
#错误消息{
颜色:红色;
文本对齐:居中;
利润率:10px自动;
}
登记
登记
登记
我尝试了这一点,但仍然不起作用。即使我在电子邮件字段中输入了表中已经存在的电子邮件,它仍然会重定向到view.php.my bad。这段代码有效。问题是我的php代码。顺便问一下,我如何在正文中显示消息,如:
<?php
include("../includes/db.php");
$sql = "SELECT email FROM lf_clients WHERE email = " .$_POST['email'];
$select = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($select);
if (mysqli_num_rows > 0) {
echo "exist";
}else echo 'notexist';
?>