在 PHP 中包含文件时可以使用 $_GET 变量吗?是否有可能,即使来自 AJAX 调用? [英] Can you use $_GET variables when including a file in PHP? Is it possible, even from an AJAX call?

查看:34
本文介绍了在 PHP 中包含文件时可以使用 $_GET 变量吗?是否有可能,即使来自 AJAX 调用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a PHP file that handles sending out confirmation emails. I also have a calendar that I use AJAX to do various updates. When AJAX calls the update file, it updates the database with the new information, and I want confirmation emails to be sent out.

所以从 AJAX 调用的 php 文件中,我想我应该 include("email-sender.php?stage=confirm2a&job={$slot->job_id} 调用电子邮件 php 页面,其中 $_GET 变量告诉它要发送哪些电子邮件以及发送给谁.

So from inside the php file that the AJAX calls, I figured I should include("email-sender.php?stage=confirm2a&job={$slot->job_id} which calls the email php page, with the $_GET variables that tell it which emails to send and to who.

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

But for some reason, I can't get the include to work when you use ?key=value $_GET pairs attached to the string. PHP.net tells me you can use $_GET variables in an include, but when I set up a simple test, it doesn't appear to work.

我的测试页面有一个链接,当单击该链接时,将向页面提交一个 ajax 调用以及包含一个变量farm"的数据,该变量等于值animal".像这样:

My test page has one link, that when clicked submits an ajax call to a page along with data containing one variable "farm" which equals the value "animal". Like this:

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

所以 ajaxPHP.php 说:

So ajaxPHP.php says:

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

此时,点击链接时成功提示显示animal".没错.

At this point, the success alert shows "animal" when the link is clicked. That's right.

但是如果我把 ajaxPHP.php 改成这样:

But if I change ajaxPHP.php to this:

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

还有一个名为 ajaxInclude.php 的文件,上面写着:

And have a file called ajaxInclude.php that says:

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

然后,当我单击链接时,我收到一个空警报.所以包含不适用于追加到末尾的查询字符串.

Then when I click the link I get an empty alert. So the include doesn't work with the query string appended to the end.

有什么帮助吗?

添加

所以现在我有以下内容:

So now I have the following:

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

然后在email-sender.php中,显然有很多类似的代码:

And then in email-sender.php, obviously there is a lot of code like:

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

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

But when I run the script, only Person 1 receives the email, and only once. Not sure why...

推荐答案

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

You can handle the variables within your included script, rather than appending them onto the include path itself:

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

-- script.php 的内容--

-- contents of script.php --

echo $var; // 'foo'

在我看来,这无论如何都要干净得多.在回显任何变量之前,您可能希望检查以确保 script.php 中存在这些值.

In my opinion this is much cleaner anyway. You may desire to check to make sure the values exist within script.php before echoing out any variables.

这篇关于在 PHP 中包含文件时可以使用 $_GET 变量吗?是否有可能,即使来自 AJAX 调用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆