皆さん、どうにも遠慮がちですね。
サクッと💩置きますよ。
<?php
if(isset($_SERVER['DEVELOP'])){
define ("DEVELOP" , "true");
error_reporting(0);
}else{
define ("DEVELOP" , "false");
error_reporting(E_ALL & ~E_DEPRECATED);
}
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
if(strpos($_SERVER["REQUEST_URI"],"/アドミソ/")===0){
if($_SERVER['HTTP_X_FORWARDED_FOR']==="xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy"){
}else{
die("error");
}
}else{
ini_set( "session.gc_maxlifetime", 172800 );
session_cache_expire(36000);
session_start();
}
//}
?>
<?php // end
頭の天辺からつま先まで余すことなく全部ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!
と言っていても仕方がないから、炊き上げていく。
お焚き上げポイント
- インデントを適切に行う
- 不要なコメントやコードの除外を行う
- DEVELOPは多分環境変数なんだろうからgetenv()にする
- 真偽値文字列を真偽値にする
- 開発中ではエラーを出力する
- REMOTE_ADDRを上書きしない
- 条件分岐の可読性を上げる
- 許可するIPのロジックを見つめ直す
- セッションが煉獄長寿郎
- てか、php.iniに書け
俺はDEVELOPがどう使われてるのか知りたい
探してみる
grep -r "DEVELOP"
/path/xxx/yyy.conf:# setENV DEVELOP "true"
なるほど。apacheのsetEnvを利用して開発モードとしているのな。define
じゃあ...
イクゾ!!!!!!!!
<?php
session_start();
const ADMIN_PATH = '/アドミソ/';
const ALLOWED_IPS = ['xxx.xxxx.xxx.xxx', 'yyy.yyy.yyy.yyy'];
$isDevelop = filter_var(getenv('DEVELOP'), FILTER_VALIDATE_BOOLEAN);
if ($isDevelop) {
error_reporting(E_ALL);
ini_set('display_errors', 1);
} else {
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/path/php-error.log');
}
$remoteAddr = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]);
if (str_contains($_SERVER['REQUEST_URI'], ADMIN_PATH) && !in_array($remoteAddr, ALLOWED_AIPS, true)) {
http_response_code(403);
header('Content-Type: text/plain; charset=UTF-8');
die('403 Forbidden: Your IP is not allowed.');
}
労力をかけることなく、それなりに親切なコードになったのではないでしょうか。
以上でお焚き上げ完了です。
世の中にはまだまだ古くから働いてきたコード達が潜んでいます。
年に一度は遭遇します。見かけたら感謝の意を込めて汚れを拭き取って行く活動を継続して行っていきたいものです。