2011-11-14 10 views
2

ユーザが私のcronジョブを手動で実行しないようにしたいと思います。予期せぬファイル名を使用することとは別に、ある種のチェックをコード内に入れたいと思っています。PHPがcronジョブで人間のブラウザを検出しました

クライアント側のヘッダーを使用するのは時間の無駄ですので、私が知っている限りCLIで設定されていない$_SERVER['SERVER_NAME']の存在を検出するのが最も簡単な方法だと思いました。

もっと良い方法がありますか?

+0

どのメソッドを使用しましたか?良い結果はありますか? – Shackrock

+0

私はphp_sapi_name()を使用しました...私に最も頑強に見えます – Andy

答えて

4

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/を見ています。

+0

ありがとう - 私はこのコマンドについて知りませんでした – Andy

2

IPアドレスがローカルかサーバかを確認してから実行してください。それ以外の場合はリターンしてください。

あなたの.htaccessで
$ip = getenv('REMOTE_ADDR'); 
3

Options -Indexes 

order allow deny 
deny from all 
allow from YOUR SERVER IP ADDRESS ONLY 
2

私のcronジョブは、htpasswdを使ってパスワードで保護されたフォルダにあります。簡単なパスワードを設定して、誰もアクセスしようとする時間を無駄にしないようにすることができます。私はIPベースの技術を使用していません。なぜなら、これは私が持ちたくないサーバーの依存関係だからです。

関連する問題