如何制作一个无法被浏览器调用的PHP脚本?

发布于 2024-09-30 04:54:22 字数 345 浏览 3 评论 0原文

可能的重复:
PHP-如何最好地确定当前调用是来自 CLI 还是 Web 服务器?

我知道明显的答案是将脚本放置在 Web 根目录之外,但我在我的项目中犹豫是否要这样做,因为这会使安装复杂化并且在某些共享托管环境中甚至可能无法实现。

我知道一些框架(特别是 CodeIgniter)有一种特定于框架的方法来确保无法通过 Web 浏览器导航到脚本来调用脚本,但我想要一种通过普通 PHP 来执行此操作的方法。具体来说,我的脚本被设计为由 cron 调用。如何才能使我的脚本在 Web 浏览器中调用时出错,但在 cron 调用时正确执行?

Possible Duplicate:
PHP - how to best determine if the current invocation is from CLI or web server?

I know the obvious answer is to place the script outside the web root, but I'm hesitant to do that in my project since that complicates installation and might not even be possible in some shared hosting environments.

I know some frameworks (CodeIgniter specifically) have a framework specific way of making sure a script cannot be called by navigating to it through a web browser, but I'm wanting a way to do this via stock PHP. Specifically, my script is designed to be called by cron. How can I make it so my script errors out if called in a web browser but executes correctly when called by cron?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

心房敞 2024-10-07 04:54:22

怎么样:

if (!array_key_exists("TERM", $_SERVER)) {
    exit;
}

How about:

if (!array_key_exists("TERM", $_SERVER)) {
    exit;
}
深陷 2024-10-07 04:54:22

有很多方法,我通常会这样做:

if (!isset($argv)) die('Not allowed');

否则,可以检查 $_SERVER 中的很多变量(HTTP_HOST、USER_AGENT 等),但 $argv 方法绝对适合我。

There are plenty of ways, I usually do:

if (!isset($argv)) die('Not allowed');

Otherwise, a lot of vars in $_SERVER can be checked (HTTP_HOST, USER_AGENT, etc.), but the $argv method definitely works for me.

晨曦慕雪 2024-10-07 04:54:22

您可以将脚本放置在一个目录中,该目录中有一个名为 .htaccess 的文件(点很重要!),其中包含以下内容:

order deny,allow
deny from all

You can place your script in a diractory that has a file named .htaccess in it (the dot is important!) with the following content:

order deny,allow
deny from all
娇纵 2024-10-07 04:54:22

检查服务器的超全局 $_SERVER ish 密钥(例如“SERVER_NAME”、“SERVER_SOFTWARE”、“REQUEST_METHOD”)。如果他们在那里,。如果没有,请继续。

Check the superglobal $_SERVER for server-ish keys (say, 'SERVER_NAME', 'SERVER_SOFTWARE', 'REQUEST_METHOD'). If they're there, die. If not, continue on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文