========================================================================================= (1) ユーザーがブラウザで"(xxxx).html"をアクセスする。 ========================================================================================= (2) .htaccessで"(xxxx).html"をphpフィアルへリダイレクトする。 ----------------------------------------------------------------------------------------- RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.*)\.html$ _kdkht-00000-11111-22222-33333_.php?p=fp-fp-fp-fp [L,QSA] ------------------------------------------------------------------- * 「00000-11111-22222-33333」は「php filename password」 * 「fp-fp-fp-fp」は「front password」 * 「pパラメータ」は「password」の意味。 ========================================================================================= (3) phpファイルでFrontプロセスを行う。 ----------------------------------------------------------------------------------------- //@@ まずGETであり、POSTでないことを確認する。 } else if ( !empty($_GET["p"]) && empty($_POST["p"]) ) { //@@ 「Frontパスワード」が一致することを確認する if ($_GET["p"]==$fpass) { //@@ セッションをスタートする session_cache_limiter("public"); @session_start(); //@@ 「Backパスワード」をセッションに記録する $_SESSION[$bpass] = $bpass; //@@ セッションを閉じる @session_write_close(); ========================================================================================= (4) javascriptをブラウザへ送る。 ----------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------- * pパラメータに、元HTMLのURLを指定して、POSTする。 ========================================================================================= (5) phpファイルでBackプロセスを行う。 ----------------------------------------------------------------------------------------- //@@ まずPOSTであり、GETでないことを確認する。 if ( empty($_GET["p"]) && !empty($_POST["p"]) ) { //@@ セッションスタートする session_cache_limiter("public"); @session_start(); //@@ Backパスワードを確認する if ( isset($_SESSION[$bpass]) && ($_SESSION[$bpass]==$bpass)) { //@@ セッション情報を破壊する unset($_SESSION[$bpass]); @session_write_close(); //@@ 元HTMLのファイル名を取得する //@@ 「xxxx.html」の後にanchor(例:#here)やparameters(例:?a=aaa&b=bbb)が //@@ ついている可能性があるので、まずparse_urlで、path部分をとりだす。 $ux = parse_url($_POST["p"]); //@@ 次にpathのbasenameを取得する。 $fn = basename($ux["path"]); //@@ このPHPファイルのファイル名を取得する $tfn = basename(__FILE__); //@@ 「元HTMLのファイル名」と「PHPファイルのファイル名」が違うことを確認する。 //@@ (同じであるのならば、PHPフィアルを直接アクセスした場合であるから拒否する) if ($fn != $tfn) { //@@ 「元HTMLのファイル名」が存在することを確認する if ( file_exists($fn) ) { //@@ 「元HTML」をブラウザへ出力する readfile($fn); exit; } } =========================================================================================