Php 在jquery中防止使用post重复提交
我有一个表单,通过jQueryPost用一个按钮提交。不幸的是,它提交了两次,结果在mysql中复制了记录 我有两个文件:register.php(包含html和javascript)和tttt.php(运行sql) 我的问题是:如何修改我的脚本以防止重复提交 请帮帮我。 register.php的一部分:Php 在jquery中防止使用post重复提交,php,jquery,Php,Jquery,我有一个表单,通过jQueryPost用一个按钮提交。不幸的是,它提交了两次,结果在mysql中复制了记录 我有两个文件:register.php(包含html和javascript)和tttt.php(运行sql) 我的问题是:如何修改我的脚本以防止重复提交 请帮帮我。 register.php的一部分: 在插入记录之前,如果用户不存在,只需在数据库中进行检查。据我所见,您的独特列将是电子邮件和密码散列。并进行适当的错误处理 将按钮类型更改为按钮 警告您的代码极易受到sql注入攻击@Dan
在插入记录之前,如果用户不存在,只需在数据库中进行检查。据我所见,您的独特列将是电子邮件和密码散列。并进行适当的错误处理 将按钮类型更改为按钮
警告您的代码极易受到sql注入攻击@DanielA.White是正确的,您也没有正确检查这些post值是否存在。否则,调用If$\u POST[name]将抛出一个错误。您需要检查isset$\u POST[名称]。此外,还可以使用来完成所有数据库工作。更安全。尝试一次,这样单击事件只应用一次…如果您的if有提交,则您的else有提交,条件结束后还有一次提交。@Daniel我更新了代码。是否可以告诉我它是否易受sql注入攻击?最好绑定到提交处理程序,以便用户仍然可以使用键盘提交。谢谢,它解决了我的问题。在服务器中处理预加载程序时,如何添加预加载程序?例如,显示加载。。。在按钮旁边。你想在点击提交后,比如一旦你点击提交,它会显示一些像保存。。。。还是什么?@Ravi是的。当数据保存到数据库时,想显示文本吗。但是我不知道我应该在哪里写代码。
<form id="regForm" method="post" action="tttt.php">
<!-- (...) -->
</form>
<script type="text/javascript">
$("#sub").click(function(){
var data=$("#regForm :input").serializeArray();
var posting = $.post($("#regForm").attr("action"), data, function(info){
if(info==="yes"){$("#result1").html("ثبت نام انجام شد");}
else{if(info==="no"){$("#result1").html("ثبت نام با موفقیت انجام نشد"); }}
});
posting.done(function( data ) {
if(data==="no"){
$('#result1').fadeOut(8000, function() {
$(this).empty().show();
$("#regForm").submit(function(){
return false;});
});
}
else {
$('#result1').fadeOut(12000, function() {
$(this).empty().show();
$("#regForm").submit(function(){
return false;});
});
$("input:text ").val("");
$("input:password ").val("");
}
});
});
$("#regForm").submit(function(){
return false;
});
</script>
<?php
header("Content-Type: text/plain");
require_once("../private/connection.php");
if(isset($_POST["name"]) && !empty($_POST["name"]) && isset($_POST["lastname"]) && !empty($_POST["lastname"]) && isset($_POST["birthday"]) && !empty($_POST["birthday"])&& isset($_POST["email"]) && !empty($_POST["email"]) && isset( $_POST["password"]) && !empty($_POST["password"]) && isset($_POST["confirmPassword"]) && !empty($_POST["confirmPassword"]) ){
$name =$conn->real_escape_string($_POST["name"]);
$lastname =$conn->real_escape_string($_POST["lastname"]);
$birthday =$conn->real_escape_string($conn->real_escape_string($_POST["birthday"]);
$email =$conn->real_escape_string($_POST["email"]);
$password =$conn->real_escape_string($_POST["password"]);
$hashed_password = password_hash($password, PASSWORD_BCRYPT);
if ($result=$conn->query("INSERT INTO students (student_name,student_family,student_birthday,student_email,student_password)
VALUES ('$name','$lastname' ,'$birthday' ,'$email','$hashed_password')")) {
echo "yes";
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}else
{ echo "no";}
$conn->close();
?>