通过AJAX从Javascript传递变量引用到PHP

时间:2017-08-14 15:07:39

标签: javascript php

我有一个在Javascript中“使用”或“引用”PHP变量的想法。这适用于将发送电子邮件的网页。简化示例如下所示。注意:这是通过AJAX调用的,所以我不是尝试从已经执行的脚本调用PHP变量。

javascript将在要发送的电子邮件正文中包含“$ midSection”字符串,然后将整个正文发送到PHP脚本。 PHP脚本将存储此String,创建并为$ fmidSection分配值,并在电子邮件中发送正文字符串。如果有效,生成的电子邮件将包括从客户端发送的主体,在电子邮件中间插入“midSection”(可能,取决于人员的名称和存储在数据库中的信息)。

在我看来,鉴于我对PHP的理解,这应该可行。但是,在我看来,这将打开一个类似于SQL注入的攻击窗口(例如,'或许,我们可以欺骗脚本为$ midSection分配不同的值)。有没有人采用这种方法,如果有的话,你能否验证这是否有效,并打开任何安全漏洞?

谢谢。

编辑:该应用程序用于邮件列表,而不是联系表单。我有一个管理面板,允许我发送电子邮件到邮件列表,我认为这是一个很好的方式来包含PHP中的变量,就像我在PHP脚本上一样,通过将$ var放入字符串本身。我理解如何将变量从JS传递到PHP,我希望JS能够引用PHP变量。我没有使用它来进行验证,我使用它来简单地插入信息,而不是手动进行字符串解析。该变量将在我创建的脚本上创建并存储在服务器端。

此外,JAVASCRIPT将在PHP脚本上执行AJAX调用。因此,Javascript将首先执行。我本质上是向PHP发送一个电子邮件模板,其中PHP将循环遍历电子邮件列表并动态添加信息,例如名字,姓氏等。而不是进行字符串处理,我正在考虑发送“Hello” ,$ firstName $ lastName .....“本质上,希望PHP脚本将插入变量信息。

2 个答案:

答案 0 :(得分:2)

从上面的评论我可以看到你想要做什么,但它不起作用。

请考虑以下代码:

$(document).ready(function() {
    $.ajax({
        url: 'ajax.php',
        data: {'name' : 'andy'},
        method: "POST", 
    }).done(function (data) {
        console.log(data);
    });
});

这是ajax.php

<?php
echo $_POST['name'];
?>

你在javascript中所做的就是向ajax.php发出POST请求。它能够在你的控制台中输出“andy”输出,因为你传递的是这个数据字符串 - 而不是对任何东西的引用。到目前为止,这么简单。

现在假设您将jquery中的data:更改为以下内容:

data: {'name' : '$var'}

在你的控制台中你会得到一个字符串“$ var”。

即使你在ajax.php中有这个:

<?php
$var = 'foo';
echo $_POST['name'];
?>

你永远不会得到输出“foo”。

这是因为PHP和javascript是完全分开的。因此,如果您通过$var,它只会将其视为字符串。没有办法要求javascript表示PHP变量或某些引用。你必须自己传递数据。

对于您的应用程序,您通常要做的是传递PHP可以引用的ajax请求中的内容(例如特定记录的主键ID)。然后,PHP将生成所有必需的内容并将其发送回浏览器。如果您需要使用模板执行操作,str_replace是您的朋友。

答案 1 :(得分:1)

  

我希望JS引用一个PHP变量

不可能。

它们是在不同计算机上运行的不同程序。当JS开始运行时,PHP程序将完成,其变量将不再存在。

您最接近的可能是将数据存储在某处(例如数据库),并带有标识符。然后将该标识符发送给JS。然后,如果您想在JS中获取数据,请使用Ajax来请求它。