在我的服务器上创建一个local.php页面


Create a local .php page on my server

我正在运行一些PHP web应用程序,这些应用程序基本上是管理MySQL数据库内容的表单(添加、删除和更新)。现在,我希望能够以编程方式插入数据,但我已经将所有的逻辑都放在了PHP中(数据库端没有验证),我希望重用我现有的PHP逻辑。

我曾考虑过使用一个新的URI来接收查询字符串中的产品参数,但我只希望当从服务器内部调用端点时该端点可用(以避免外部用户调用它)。

我在Ubuntu 12.04中运行Apache服务器。我希望我能很好地解释

您可以查看$_SERVER['REMOTE_ADDR'],它是连接到php脚本的客户端的地址。

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
  // connection from localhost, proceed
} else {
  // connection from the outside, deny
  header('403 Forbidden');
  echo "You are not allowed to be here.";
  die();
}

请注意,如果您在同一台机器中有一个反向代理,那么到脚本的所有连接都将来自该代理,您将无法知道它们是来自本地主机还是来自另一台主机。

@x4rf41的注释也很好,可以从Web服务器层进行管理(尽管它在反向代理方面也有同样的问题)。

另一种选择是命令行脚本,而不是网页,在那里你可以将数据作为参数传递给脚本:

#!/usr/bin/env php
<?php
// total number of params is in $argc (minus 1, for the script name)
// param 1 in $argv[1]
// param 2 in $argv[2]...
// argv[0] is reserved for the name of the script
if ($argc != 5) {
  fprintf("STDERR: %s param1 param2 param3 param4'n", $argv[0]);
  exit(1);
}
// do your logic here

不要对自己的服务器进行全面的HTTP请求。这是毫无意义的资源浪费,也引发了一系列安全问题。

重写你的代码,使其可以作为函数正确调用,然后这就是一个简单的问题:

functions.hp:

<?php
function do_whatever_it_is_you_want() {
    echo 'yo';
}

index.php:

<?php
include('functions.php');
do_whatever_it_is_you_want();

现在,向世界"公开"该功能不存在安全问题,因为它不是通过URL直接调用的,而是通过您可以完全控制的代码调用的。