我想阻止用戶手動運行我的cron作業的人的瀏覽器。除了使用不可預知的文件名,我想要在代碼中進行某種檢查。PHP檢測cron作業
很明顯,使用任何客戶端標題是浪費時間,所以我認爲最簡單的方法是檢測$_SERVER['SERVER_NAME']
,據我所知在CLI中沒有設置。
這樣做的沒有更好的辦法?
我想阻止用戶手動運行我的cron作業的人的瀏覽器。除了使用不可預知的文件名,我想要在代碼中進行某種檢查。PHP檢測cron作業
很明顯,使用任何客戶端標題是浪費時間,所以我認爲最簡單的方法是檢測$_SERVER['SERVER_NAME']
,據我所知在CLI中沒有設置。
這樣做的沒有更好的辦法?
看一看php_sapi_name
。它返回Web服務器和PHP之間的接口類型。
實施例:
<?php
if(php_sapi_name() == 'cli') {
// CLI
}
else {
// HTTP
}
有關詳細信息,和附加的實施例中,看看http://www.electrictoolbox.com/determine-php-run-via-http-or-cli/。
謝謝 - 我不知道沒有這個命令,正是我需要的 – Andy
檢查IP地址,如果本地或服務器IP,然後運行它,否則返回。
$ip = getenv('REMOTE_ADDR');
在你的.htaccess
Options -Indexes
order allow deny
deny from all
allow from YOUR SERVER IP ADDRESS ONLY
我的cron作業是受密碼保護使用htpasswd一個文件夾中。你可以設置一個簡單的密碼,並確保沒有人會失去嘗試訪問它的時間。我不使用任何基於IP的技術,因爲這是我不想擁有的服務器依賴關係。
你使用哪種方法?任何好的結果? – Shackrock
我用php_sapi_name()......似乎是最強大的,以我 – Andy