【问题标题】:Ajax Form Validate Php Insert QueryAjax 表单验证 PHP 插入查询
【发布时间】:2018-05-15 13:04:33
【问题描述】:

我正在尝试使用 jquery 将数据添加到数据库。我的代码在这里,但它不起作用。

使用引导表单,我正在尝试将输入数据发送到该页面中的特定页面(在这种情况下,adduser.php),我正在尝试将这些值检查到数据库以确保没有相同的数据(我正在检查电子邮件地址) 你们能帮帮我吗?

<script>
$(document).ready(function(){
    $('#adduser').click(function(){

        var add_name = $('#add_name').val();
        var add_surname = $('#add_surname').val();
        var add_email = $('#add_email').val();
        var add_password = $('#add_password').val();

        if(add_name == '' || add_surname == '' || add_email == '' || add_password == '' ){
            $('#add_user_error').html("<strong class='text-danger'>*** Please enter all details</strong>");
        }else{      

            $.ajax({
                url: "adduser.php",
                method: "post",
                data:{add_name:add_name,add_surname:add_surname,add_email:add_email,add_password:add_password},
                success: function(data){
                    if (data == 1) {
                $('#add_user_error').html("<strong class='text-danger'>This email have in database</strong>");              
            }else{
                $('#add_user_error').html("<strong class='text-success'>Success</strong>"); 
            }

            }               

                }); return false;       
        }
    });
});
</script>


<?php  
include ('setup.php'); //Database connection dbc


if(isset($_POST['adduser'])){

    $add_name = $_POST['add_name'];
    $add_surname = $_POST['add_surname'];
    $add_email = $_POST['add_email'];
    $add_password = $_POST['password'];


$q = "SELECT * FROM users WHERE email = '$add_email'";
$r = mysqli_query($dbc, $q);

$adduser = mysqli_fetch_assoc($r);


if($adduser['email'] !== $add_email){
    $q = "INSERT INTO users (name,surname,email,password) VALUES ('$add_name','$add_surname','$add_email','$add_password')";
    $r = mysqli_query($dbc, $q);    
}
}
?>  

【问题讨论】:

  • if(isset($_POST['adduser'])) 返回 False,因为您从未从 ajax 的数据部分发送 adduser
  • 我该如何解决这个问题?
  • 旧:数据:{add_name:add_name,add_surname:add_surname,add_email:add_email,add_password:add_password} 新:data:{add_name:add_name,add_surname:add_surname,add_email:add_email,add_password:add_password,添加用户:1},
  • 您的$q = "INSERT INTO users (name,surname,email,password) VALUES ('$add_name','$add_surname','$add_email','$add_password')"; 容易受到SQL 注入的攻击.. (stackoverflow.com/questions/60174/…)
  • 从不存储纯文本密码。而是使用password_hash()password_verify()。如果您使用的是 5.5 之前的 PHP 版本,请不要使用 MD5 或 SHA1 来散列密码。相反,您可以使用this compatibility pack

标签: php jquery mysql ajax twitter-bootstrap


【解决方案1】:

也可能有任何其他错误,但我认为您需要从 ajax 发送 adduser。那么只有 $_POST['adduser'] 为真(现在为假,因为它没有设置)

用下面的线替换你的数据线并尝试

data:{add_name:add_name,add_surname:add_surname,add_email:add_email,add_password:add_password,adduser:1}

【讨论】:

  • 是的,就是这样。谢谢
【解决方案2】:

在您的 ajax 代码中使用序列化方法传递您的表单数据

$.ajax({
        url: "adduser.php",
        method: "post",
        data:$('#yourformid').serialize(),
        /* your remaining code as it is  */

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多