У меня есть скрипт scripty.php
Иногда этот скрипт вызывается через браузер.
В других случаях он вызывается другим скриптом на сервере.
Как я могу (надежно) проверить внутри scripty.php, чтобы узнать, вызывается ли он сервером?
в виде URL-адреса http
Переменная $_SERVER["REMOTE_ADDR"]
которая дает вам IP-адрес клиента, выполнившего запрос, должна быть 127.0.0.1
при вызове сценария с сервера.
вы можете создать переменную, прежде чем включать скрипт
$by_script = true; include("new_script.php");
и проверить его внутри
Просто догадка: вы хотите знать, если скрипт, называемый им через браузер, или из командной строки
var_dump(PHP_SAPI);
рассмотрите файл с именем test.php, это единственный код:
echo str_replace("\\","/",$_SERVER["SCRIPT_FILENAME"]); echo str_replace("\\","/",__FILE__);
когда пользователь выполняет * test.php по URL-адресу браузера, это результат:
"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"
На любом скрипте, который будет вызывать его, определите константу, например define("IN_SCRIPT")
и внутри scripty.php вы можете проверить константу, чтобы определить, находится ли она внутри другого скрипта или нет.
например
if(defined("IN_SCRIPT")){ // We must be inside a script right now! }
или
if(!defined("IN_SCRIPT")){ // We are working alone now }