不使用admin-ajax来提交ajax可以吗?

时间:2017-05-16 作者:Megh Gandhi

我正在使用ajax提交一个表单,将数据插入表中。

php

$data = array(\'full_name\' => $_POST[\'fullname\'] , \'email\' => $_POST[\'email\'] 
);
$type= array(\'%s\' , \'%s\'); 
$wpdb->insert( \'email_database\', $data,  $type);
javascript

$(function() {
$(\'#testform\').submit(function(e){
e.preventDefault(); 
$.ajax({
type: \'POST\',
data: $(this).serialize()
 })
.done(function(data){
alert("works");
})
.fail(function(){
 alert("doesn\'t work"); 
});
});
});
html

<form method="post" action="" id="testform"> 
 <div class="input-box">
   <input name="fullname">
    <input name="email">

   <input type="submit">
 </div>

所有内容都放在模板页上。似乎没有任何问题,但这是正确的方式吗?

1 个回复
SO网友:gdarko

我检查了你的代码,有些地方不正常。我建议您考虑以下事项:

1.)Your AJAX endpoint is not protected

目前,任何人都可以向AJAX端点发送请求并从任何地方输入数据,以解决此问题WordPress nonces.

原则是创建nonce 服务器端,发送相同的nonce(您可以将其打印到页眉中,然后jQuery, 然后与从中获取的数据对象合并serialize() 方法),从数据对象中的AJAX调用。最后一步是验证nonce 使用该方法wp_verify_nonce() 在保存数据之前,如果nonce 无效,请不要继续保存数据。

2.)You need more validation

正如我在代码中看到的,您没有验证任何$_POST 数组变量。这是一个巨大的问题,您将获得大量损坏或毫无意义的数据。

结束

相关推荐

datepicker value in mysql

我正在为自定义帖子类型使用插件WP Types,其中有一个选项可以创建自定义字段,我在其中为我的需求创建了一个日期字段。现在,当我在其中添加任何日期时会发生什么。。它将在mysql中存储某种有线值(对我来说)为14234233,类似于此。我附加了一个在mysql中具有这些值的图像。如果我从前端的Jquery datepicker提交它,您能告诉我如何实现这个值吗。我正在从前端插入值。提前感谢!]1