Goodmorning的家伙,
我正在为我们的一位客户制作表格。运行表单的服务器具有非常严格的防火墙。目前我们遇到防火墙不接受certrain表单条目的问题,因为消息中有太多的点击标记 - 防火墙将此视为可能的SQL注入。
单击提交按钮后,AJAX请求将转到处理所有电子邮件发送的PHP文件。
$.ajax({
type: "POST",
url: '/wp-content/themes/THEMENAME/wp/actions/apply-position-mail.php',
data: {
job: $('input#jobtitle').val(),
firstname: $('input#first-name').val(),
lastname: $('input#last-name').val(),
email: $('input#email').val(),
phone: $('input#tel').val(),
resume: filename,
comments: comments
}
});
简单地说,我正在寻找Javascript解码/编码字符串的方法(特别是'评论'字段),这样防火墙就没有问题发布了。
当然我用Google搜索并尝试了不同的编码JS函数,但没有一个能够解决这个问题。
一些帮助将不胜感激。
答案 0 :(得分:0)
与托管公司一起,我们找到了解决方案。这是我现在的JS:
var formArray = $('form').serializeArray();
var returnArray = {};
for (var i = 0; i < formArray.length; i++) {
returnArray[formArray[i].name] = formArray[i].value;
}
$.ajax({
url: '[..]/apply-position-mail.php',
type: "POST",
data: JSON.stringify(returnArray),
contentType: "application/json",
success: function(data, msg) {
console.log(msg, data);
},
error: function(data, msg) {
console.log(msg, data);
}
});
所有输入字段和值都在数组中收集并在发布之前进行字符串化。
在PHP中,这为我提供了发布的数据:
$rawPostData = file_get_contents('php://input');
$form = json_decode($rawPostData);