【发布时间】: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