当前位置: 首页 > 面试题库 >

在PHP中包含文件时,可以使用$ _GET变量吗?即使通过AJAX调用也可以吗?

万俟穆冉
2023-03-14
问题内容

我有一个处理发送确认电子邮件的PHP文件。我还有一个日历,可以使用AJAX进行各种更新。当AJAX调用更新文件时,它将使用新信息更新数据库,并且我希望发送确认电子邮件。

因此,从AJAX调用的php文件内部,我认为应该include("email- sender.php?stage=confirm2a&job={$slot->job_id}调用哪个电子邮件php页面,并带有$
_GET变量来告诉它发送哪些电子邮件以及向谁发送电子邮件。

但是由于某些原因,当您使用?key=value附加到字符串的$ _GET对时,我无法使包含起作用。PHP.net告诉我可以在包含中使用$
_GET变量,但是当我设置一个简单的测试时,它似乎不起作用。

我的测试页有一个链接,单击该链接会向页面提交ajax调用以及包含一个等于“动物”值的变量“农场”的数据。像这样:

$("a.testlink").click(function() {
    var mydata = "farm=animal";
    $.ajax({
        url: "ajaxPHP.php",
        data: mydata,
        success: function(rt) {
            alert(rt);
        }
});

所以ajaxPHP.php说:

if($_GET['farm']) {
    $var = $_GET['farm'];
    echo $var;
}

此时,单击链接时,成功警报将显示“动物”。那就对了。

但是,如果我将ajaxPHP.php更改为此:

if($_GET['farm']) {
    $var = $_GET['farm'];
    include("ajaxInclude.php?farm={$var}");
}

并有一个名为ajaxInclude.php的文件,其中说:

if($_GET['farm']) {
    $var = $_GET['farm'];
    echo $var;
}

然后,当我单击链接时,我会收到一个空警报。因此,include不适用于附加到末尾的查询字符串。

有什么帮助吗?

加成

所以现在我有以下内容:

$stage = "confirm2a";
include("email-sender.php");
$stage = "confirm2b";
include("email-sender.php");

然后在email-sender.php中,显然有很多代码,例如:

if($stage == "confirm2a") { 
   email Person 1 etc...
}
if($stage == "confirm2b") {
    email Person 2 etc...
}

但是,当我运行脚本时,只有第1个人收到电子邮件,并且只有一次。不知道为什么


问题答案:

您可以在包含的脚本中处理变量,而不是将其附加到包含路径本身上:

$var = "foo";
include("script.php");

-script.php的内容-

echo $var; // 'foo'

我认为这反而更清洁。您可能希望script.php在回显任何变量之前检查以确保值存在于其中。



 类似资料:
  • 问题内容: 是否可以在每次执行循环时回显?例如: 我不想看到循环结束时打印所有内容,而是希望它每次都打印每个结果。 问题答案: 最终解决方案 这就是我发现的: Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我

  • 问题内容: PHP名称空间可以包含变量吗?如果是这样,如何实现? 问题答案: 不可以。您可以在声明名称空间后设置变量,但是变量将始终存在于全局范围内。它们永远不会绑定到名称空间。您可以从中没有任何名称解析描述来推断出这一点 常见问题解答:您需要了解的有关名称空间的知识(PHP 5> = 5.3.0) 也将不允许使用语法在命名空间中定位变量。

  • 问题内容: 我是C#网站开发人员。而且每天我都非常习惯使用jQuery并进行AJAX数据调用(我很喜欢)。但是,我对Android 完全是 NOOB 。我目前的阅读显示Android使用REST的服务进行数据交换。 所以我的问题是… Android可以使用jQuery mobile吗? 您可以在Android中拨打普通的AJAX电话吗? 您只能在Android中拨打REST通话吗? 问题答案: 经

  • 问题内容: 我知道这不是应该做的事情,但是有没有办法使用斜线字符来分隔Linux中文件名中的目录? 问题答案: 答案是,除非文件系统有错误,否则您将无法这样做。原因如下: 有一个系统调用,用于重命名名为的文件: 当系统调用被调用时,它将对名称进行路径查找()。继续跟踪,我们可以看到: 此代码适用于任何文件系统。什么意思 这意味着,如果您尝试使用传统方式将带有实际字符的参数作为文件名传递,它将无法执

  • 本文向大家介绍sessionStrorage也可以使用onstorage事件吗?相关面试题,主要包含被问及sessionStrorage也可以使用onstorage事件吗?时的应答技巧和注意事项,需要的朋友参考一下 用以下代码测试, localStorage的变化可以监测到,sessionStorage的变化没有监测到. 在浏览器两个标签打开文件, 其中一个点击设置, 查看另一个标签控制台的输出.

  • 问题内容: 在Spring 3.0中,我可以有一个可选的path变量吗? 例如 在这里我想还是要调用相同的方法。 一种明显的解决方法是声明为请求参数: 然后/json?type=abc&track=aa或/json?track=rr将工作 问题答案: 你不能具有可选的路径变量,但是可以有两个调用相同服务代码的控制器方法: