是的,这是您发布的内容所预期的。就像 Paul Denisevich 所说,javascript 是客户端,PHP 是服务器端,因此就受限制的 PHP 而言,您的 ajax 请求可能来自任何地方。尽管您说您希望“其他 php 文件”能够访问它,但我的印象是您希望您的 ajax 能够访问它,但您不希望其他客户端脚本能够访问它. 您不希望有人能够直接加载文件,例如http://example.com/restricted.php。
你需要一条 index.php 和restricted.php 都知道的信息,但外人不会,然后散列它。我不知道您可能有哪些信息可用于这些脚本。如果有用户登录,也许您想对用户名和出生日期进行哈希处理。最好使用数据库中永远不会输出到 UI 的内容并将其包含在哈希中。
例如,也许我只有一个文件:
<?php
$key = "some string" . date('DNi');
// weird date format that changes every minute. This is no good for production as
// the minute may tick by during the request from the ajax to restricted.php. You
// are better off using some values from a database that are not shown anywhere.
?>
在 index.php 和 restricted.php 中:
require_once('hash.php');
在你的 ajax 中:
$.ajax({
url: "restricted.php",
dataType: "text",
data {hash:"<?php echo md5($key) ?>"},
success: function(data) {
//use data
}
});
然后在受限制的情况下,例如:
if($_GET['hash'] == md5($key)) {
// do your thing and send some output for ajax to use
} else {
// bail
}