2015-07-06 18 views
0

正试图通过将值构成我的JS网页在WordPress的PHP页面发送邮件时,我做了,直到AJAX部分如何将值从ajax传递给WordPress的WordPress?

jQuery.ajax({ 
    type: "POST", 
    url:"contact.php", 
    data: "frm_adrs=" + frm_adrs + "&to_adrs=" + to_adrs + "&sub=" + sub + "&number=" + number +"&zip=" + zip + "&message=" + message, 
    success: function(data) { 
     //... 
    } 

在PHP页面

if (isset($_GET["frm_adrs"])) 
{ 
    $frm_adrs = $_GET["frm_adrs"]; 
    $to_adrs = $_GET["to_adrs"]; 

现在的问题是AJAX无法找到“contact.php” ..我没有开发任何插件,从而代替ajaxurl我需要添加静态URL发送电子邮件..提前

感谢

+2

你'型:在阿贾克斯'post''和你正在使用''在PHP $ _GET []。 – Jai

+0

所以我应该使用PHP中的$ _POST []而不是$ _GET []? @Rory McCrossan –

+0

是的。查看@SarahAllen发布的综合答案以获取更多详细信息。 –

回答

1

首先,您已经在jQuery代码中为文件“contact.php”指定了一个相对目录。这意味着您必须执行URL中的代码,说明与contact.php的预期位置相同的目录。例如,在下面的URL上执行你的代码会有各自的效果;

/wordpress/index.php => /wordpress/contact.php 
/wordpress/contact => /wordpress/contact/contact.php 

所以,你需要验证您contact.php文件位于同一目录中的文件生成请求中。如同Jai在评论中指出的那样,您通过jQuery AJAX在POST方法中发送数据,但是您的php脚本正在预期(侦听)GET方法。这将是有问题的,因为您的后端脚本不会解释您发送给它的数据。

如果您要将数据作为POST请求发送,那么您应该使用$_POST来检索它,否则如果您要将数据作为GET请求发送,请使用$_GET来检索它。通过使用$_REQUEST,您可以使用更模糊的方式来检索数据,但这通常不是做事的最佳方式。

对于某些使用非字母数字字符的字段(例如,您的消息变量),您可能希望使用encodeURIComponent,这将确保数据在您的前端和后端代码之间正确传输。

此外,您可能希望查看OWASP top 10列表,因为您的脚本容易受到CSRF攻击,并且可以用作电子邮件中继。检查它here

最后,通常的做法是在数据表单上使用某种形式的CAPTCHA验证,不需要先前形式的bot过滤/用户验证。这可以防止僵尸使用您的脚本作为中继发送恶意或垃圾邮件。

0

试试这个.. subkeyword不能使用sub请使用sub1

为theame: - 网址: “回声get_template_directory_uri()” ./ contact.php,


for Page-template: - url:“echo get_template_directory_uri()”./ page-template/contact。PHP,

$.ajax({ 
    method: "POST", 
    url: "<?php echo get_template_directory_uri() ?>/contact.php", 
    data: { 
     frm_adrs : frm_adrs, 
     to_adrs:to_adrs, 
     sub1:sub1, 
     number:number, 
     zip:zip, 
     message:message 
     } 
}) 
    .done(function(msg) { 
    alert("Data Saved: " + msg); 
    }); 

在PHP页面

In page-template 
require_once("../../../wp-load.php"); 

In Your theames root 
require_once("../../wp-load.php"); 

if (isset($_REQUEST["frm_adrs"])) 
{ 
    $frm_adrs = $_REQUEST["frm_adrs"]; 
    $to_adrs = $_REQUEST["to_adrs"]; 
}