PHP MEMO | What's New | About This Site


スクリプトを直接呼び出されないようにするには?

PHPの定義済変数、$_SERVER['HTTP_REFERER'] にリンク元URL情報が格納されているのでこれを利用します。
スクリプトの頭に下記の様なコードを付け加えてみてください。

<?
$my_site = 'http://red.ribbon.to/~php/'; // アクセスを許すリンク元URLの共通部分 

$my_site = preg_quote($my_site, '/'); 

if(!preg_match("/^$my_site/i", $_SERVER['HTTP_REFERER'])) 
{ 
echo "Don't call this script directly !!"; // 例1: エラーを表示する。
// header('Location: http://red.ribbon.to/~php/'); // 例2: トップページへ飛ばす。
exit; 
} 
/* PHP4.1.0 未満のバージョンでは、$_SERVER['HTTP_REFERER'] の代わりに
$HTTP_SERVER_VARS['HTTP_REFERER'] を使用する。*/
?>

上記の例では
http://red.ribbon.to/~php/
を含む
http://red.ribbon.to/~php/
http://red.ribbon.to/~php/about.php
等のページにあるハイパーリンク以外からのアクセスに対しアクションを起こします。

※ REFERER(リンク元URL)情報は、ブラウザの自己申告に基づきますので必ずしも正確ではありません。

2003/01/24



PHP MEMO | What's New | About This Site


Copyright (c) 2003, 2004 Synonym, All Rights Reserved.



テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル