xmlhttp.open()用于外部php文件



我有行

xmlhttp.open("GET","file.php?id=4",true);

这不起作用,因为file.php不在同一个文件夹中,而是在另一个对公众不可见的私人文件夹中。

有没有办法使用打开功能打开其他文件夹中的文件?

这根本不可能。

如果要向它发送HTTP请求,它必须通过HTTP对公众可见。

您只能从公共Web空间中请求文件。要访问公共网络空间之外的文件,您需要在公共网络空间中使用一个脚本,该脚本可以从专用文件夹中获取内容,例如

<?php // file.php in the public webspace
$allowedFiles = array(
1 => '/path/to/private/space/on/server/file1.txt',
2 => '/path/to/private/space/on/server/file2.txt',
3 => '/path/to/private/space/on/server/file3.txt',
4 => '/path/to/private/space/on/server/file4.txt',
);
$id = filter_var($_GET['id'], FILTER_VALIDATE_INT);
if (isset($allowedFiles[$id])) {
readfile($allowedFiles[$id]);
}

现在当你做

xmlhttp.open("GET","file.php?id=4",true);

脚本将发送的内容

/path/to/private/space/on/server/file4.txt

到客户端。

编辑一些评论:

  • 请注意,readfile不会执行文件内容。如果需要发送PHP脚本的结果,则必须使用include而不是readfile。有关详细信息,请参阅本手册。

  • 上述方法实际上与目前使用的大多数框架相同。您有一个单独的脚本作为应用程序的网关(有点像Front Controller模式)。该脚本接受对应用程序的任何和所有请求(想想mod_rewrite),并且是唯一可公开访问的PHP文件。它将引导您的应用程序,然后根据URL(或您认为合适的任何内容)确定应该实例化和调用私有空间中的哪个文件(使用MVC时通常是控制器)。

最新更新