ユーザが私のcronジョブを手動で実行しないようにしたいと思います。予期せぬファイル名を使用することとは別に、ある種のチェックをコード内に入れたいと思っています。PHPがcronジョブで人間のブラウザを検出しました
クライアント側のヘッダーを使用するのは時間の無駄ですので、私が知っている限りCLIで設定されていない$_SERVER['SERVER_NAME']
の存在を検出するのが最も簡単な方法だと思いました。
もっと良い方法がありますか?
ユーザが私のcronジョブを手動で実行しないようにしたいと思います。予期せぬファイル名を使用することとは別に、ある種のチェックをコード内に入れたいと思っています。PHPがcronジョブで人間のブラウザを検出しました
クライアント側のヘッダーを使用するのは時間の無駄ですので、私が知っている限りCLIで設定されていない$_SERVER['SERVER_NAME']
の存在を検出するのが最も簡単な方法だと思いました。
もっと良い方法がありますか?
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アドレスがローカルかサーバかを確認してから実行してください。それ以外の場合はリターンしてください。
あなたの.htaccessで$ip = getenv('REMOTE_ADDR');
Options -Indexes
order allow deny
deny from all
allow from YOUR SERVER IP ADDRESS ONLY
私のcronジョブは、htpasswdを使ってパスワードで保護されたフォルダにあります。簡単なパスワードを設定して、誰もアクセスしようとする時間を無駄にしないようにすることができます。私はIPベースの技術を使用していません。なぜなら、これは私が持ちたくないサーバーの依存関係だからです。
どのメソッドを使用しましたか?良い結果はありますか? – Shackrock
私はphp_sapi_name()を使用しました...私に最も頑強に見えます – Andy