function.phpなど、ブラウザから直接アクセスされる用事のないファイルについて、直接アクセスされたときは処理を終了したい場合、__FILE__と$_SERVER["SCRIPT_NAME"]を使う方法があります。

○__FILE__と$_SERVER["SCRIPT_NAME"]
__FILE__ --- 処理が記述されたファイル名
$_SERVER["SCRIPT_NAME"] --- 実行されたファイル名

function.phpがインクルードされると、実行されたファイル名は「test.php」など、インクルードしたファイル名になるので、この2つは異なる値になります。

function.phpに直接アクセスした場合、この2つの「ファイル名」は同じになります(パス情報が含まれるので一致はしません)。

これを利用して、直接アクセスされた場合に処理を終了する場合は、$_SERVER["SCRIPT_NAME"]と__FILE__のファイル名の部分が一致する場合は処理を終了するというコードをfunction.phpなどの先頭で実行する方法があります。

<?php
if (basename($_SERVER["SCRIPT_NAME"]) == basename(__FILE__)) {
    echo "直接アクセスなので処理終了";
    exit;
}
…略…
?>

○実行結果(このファイルに直接アクセスした場合)

直接アクセスなので処理終了

PHPスクリプトへの直接アクセスではなく、テキストファイルなどのデータファイルへの直接アクセスを防ぐ方法は、次の記事を参考にしてください。

【関連記事】データが丸見えになっていませんか?

スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

MySQL

phpMyAdmin

PHPサンプルコード

PHP関数

WordPress

エラーメッセージ

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク