我试图通过将我的JS页面中的值传递到Wordpress中的PHP页面来发送邮件,直到AJAX部分
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 ..
提前致谢
答案 0 :(得分:1)
首先,您已在jQuery代码中为文件“contact.php”指定了一个相对目录。这意味着您必须从URL中执行代码,该URL表示与contact.php的预期位置相同的目录。例如,在以下URL上执行代码会产生相应的影响;
<xsl:template match="qnap:li">
<xsl:variable name="paraStyle" as="xs:string">
<xsl:choose>
<xsl:when test="parent::qnap:ol">AnswerNumbered</xsl:when>
<xsl:otherwise>AnswerBullet</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="not(qnap:p)">
<xsl:variable name="paraContent" as="element()">
<span>
<xsl:apply-templates/>
</span>
</xsl:variable>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="paraContent" as="element()">
<span>
<xsl:apply-templates select="qnap:p"/>
</span>
</xsl:variable>
</xsl:otherwise>
</xsl:choose>
因此,您需要验证您的/wordpress/index.php => /wordpress/contact.php
/wordpress/contact => /wordpress/contact/contact.php
文件是否与生成请求的文件位于同一目录中。
正如Jai在评论中指出的那样,你是在POST方法中通过jQuery AJAX发送数据,但你的php脚本正在预期(监听)GET方法。这将是有问题的,因为您的后端脚本不会解释您发送给它的数据。
如果您要将数据作为POST请求发送,那么您应该使用contact.php
来检索它,否则如果您要将数据作为GET请求发送,请使用$_POST
来检索它。您可以使用更加模糊的方法来使用$_GET
检索数据,但这通常不是最好的处理方式。
您可能希望将encodeURIComponent用于使用非字母数字字符的某些字段(例如,您的消息变量),这将确保数据在您的前端和后端代码之间正确传输。
此外,您可能希望查看OWASP前10名列表,因为您的脚本容易受到CSRF攻击,并且可以用作电子邮件中继。检查here
最后,通常的做法是在数据表单上使用某种形式的CAPTCHA验证,不需要先前形式的机器人过滤/用户验证。这可以防止使用您的脚本作为中继的机器人发送恶意或垃圾邮件。
答案 1 :(得分:0)
试试这个.. sub
是keyword
不能使用sub
请使用sub1
for theame: - url:“echo get_template_directory_uri()”./ contact.php,
页面模板的: - url:“echo get_template_directory_uri()” ./页面模板/ 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"];
}