2010-10-31 35 views
0

可能重複:
PHP - how to best determine if the current invocation is from CLI or web server?如何製作無法通過網絡瀏覽器調用的PHP腳本?

我知道答案顯然是把腳本的網站根目錄外,但我猶豫嗎,在我的項目,因爲這複雜的安裝甚至可能在一些共享主機環境中無法使用。

我知道一些框架(特別是CodeIgniter)有一個框架特定的方式來確保腳本無法通過瀏覽器導航到它,但我想通過股票PHP做到這一點。具體來說,我的腳本被設計爲由cron調用。我如何做到這一點,所以如果我的腳本錯誤,如果在Web瀏覽器中調用,但由cron調用時正確執行?

+1

使用從該問題接受的答案,並從手動評論(非常奇特的)警告快速閱讀:http://php.net/manual/en/function.php-sapi-name.php – 2010-10-31 23:18:53

回答

2

如何:

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

你可以把你的腳本中,有一個具有以下內容命名它.htaccess(點很重要!)文件diractory:

order deny,allow 
deny from all 
+0

這將只能在apache服務器上工作,並且只有在allowoverride設置爲允許authconfig時纔有效。 – Bastian 2010-10-31 23:24:31

0

檢查服務器密鑰的超全球$_SERVER(比如'SERVER_NAME','SERVER_SOFTWARE','REQUEST_METHOD')。如果他們在那裏,die。如果不是,繼續。

1

有很多方法,我通常是:

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

否則,$ _ SERVER很多增值經銷商可以檢查(HTTP_HOST,USER_AGENT等),但$ argv的方法肯定能行的我。

相關問題