我有一个脚本scripty.php
有时这个脚本会通过浏览器调用。
其他时候它会被服务器上的另一个脚本调用。
如何(安全地)检查scripty.php以查看服务器是否正在调用它?
答案 0 :(得分:7)
以http网址
的形式
当从服务器调用脚本时,$_SERVER["REMOTE_ADDR"]
变量为您提供发出请求的客户端的IP地址。
答案 1 :(得分:6)
您可以在包含脚本之前创建变量
$by_script = true;
include("new_script.php");
并在里面检查
答案 2 :(得分:2)
只是一个猜测:你想知道,如果通过浏览器调用脚本,或者从CLIp>
var_dump(PHP_SAPI);
答案 3 :(得分:1)
在任何将调用它的脚本上定义一个类似define("IN_SCRIPT")
的常量,并且在scripty.php中你可以检查常量以确定它是否在另一个脚本中。
e.g。
if(defined("IN_SCRIPT")){
// We must be inside a script right now!
}
或
if(!defined("IN_SCRIPT")){
// We are working alone now
}
答案 4 :(得分:1)
考虑一个名为test.php的文件,这是唯一包含的代码:
echo str_replace("\\","/",$_SERVER["SCRIPT_FILENAME"]);
echo str_replace("\\","/",__FILE__);
当用户通过浏览器URL执行* test.php时,这是输出:
"C:/xampp/htdocs/test.php"
"C:/xampp/htdocs/test.php"
否则,不同((在这种情况下,another.php由浏览器URL执行,包括test.php))
"C:/xampp/htdocs/another.php"
"C:/xampp/htdocs/test.php"