我正在使用JSON从我的网站发送电子邮件。我这样做是因为简单地通过<form>
控件发送它似乎绕过了一些DIY“你是人类”验证我正在做的事情:
<script type="text/javascript">
$("#contact-submit").click(function() {
if ($("#contact-captcha").text != "green") {
$("#contact-captcha").text = "Incorrect";
$("#contact-captcha").css("border-color", "#7c0707");
}
else
{
sendMail();
}
});
function sendMail() {
$.ajax({
type: "POST",
url: 'includes/contact.php',
data: { to: 'me@this.com', from: $('#contact-email').text(), subject: $('#contact-subject').val(), message: $('#contact-message').val() }
});
}
</script>
问题是现在我无法弄清楚如何阅读contact.php
上的JSON数据。
我见过在PHP代码中定义JSON的教程,然后使用json_decode()来读取它,这是不好的,因为我无法在那里定义JSON。
任何人都可以提供有关如何阅读JSON的指导吗?我想过使用查询字符串,但无法弄清楚如何在这里做到这一点。
非常感谢任何帮助。
提前致谢!
答案 0 :(得分:2)
使用时
data: { to: 'me@this.com', from: $('#contact-email').text(), subject: $('#contact-subject').val(), message: $('#contact-message').val() }
您将获得$_POST['to']
,$_POST['from']
等
更好的方法(仍然不是JSON方法),将使用这样的东西:
var serialized = $("form").serialize();
serialized.to = "you@example.com";
$.ajax { ... data: serialized ... }
并让from
,subject
和message
成为输入字段的name
属性。
From: <input type="text" name="from"/>
如果您想发送JSON(我认为没有理由这样做),您可以这样做:
json = JSON.stringify({ to: 'me@this.com', from: $('#contact-email').text(), subject: $('#contact-subject').val(), message: $('#contact-message').val() });
并使用data: { json: json }
发送,最后执行
json_decode($_POST['json']);
获取关联数组。
答案 1 :(得分:0)
在contacts.php中
print_r($_POST)
或在提交过程中使用Firebug并检入控制台,您可以轻松找到您是否正确发送数据(或者是否使用JSON等等)
(我不确定你是如何进行“人工验证”检查的,但是,检查字段值 $(“#contact-captcha”)。text!=“green” not not一种正确的方式(易于篡改并绕过它自形式本身)。 您需要在服务器端使用“随机”文本创建哈希并对其进行会话(或发送到表单),用户必须输入文本并将其作为POST发送到服务器。最后通过哈希验证用户输入文本并与您创建的文本进行比较。 如果你正确地做了,请忽略它。 ^^“)
答案 2 :(得分:0)
如果不是必须使用JSON,那么你可以这样做。
使用您用于将数据发送到contacts.php和以下PHP代码的jquery代码。
在Contact.php中
if(isset($_POST['to']) && $_POST['to'] != ''){
$filterTO = $_POST['to'];
//filter value and get filtered value back in $filterTO here and use it further
}
你也可以用同样的方式使用其他变量。
注意:强烈建议在使用前过滤变量。我只展示了对你有问题的部分。这不是完整的标准流程。