[php]特定のページからしかアクセスさせないギミック

やることは簡単。

やりたいこと

例えば登録フォーム(form.php)があって、submitしたら処理するページ(check.php)に遷移する。

この過程をすっ飛ばして、処理するページ(check.php)に直接アクセスした場合は別のページ(index.php)に遷移させる。

そういうことをしたいとする。

こんな感じ

基本形。

<?php
//遷移前のURL
$beforeUrl = $_SERVER['HTTP_REFERER'];
//遷移元のURL
$fromUrl = 'https://example.jp/form.php';
//遷移先のURL
$jumpUrl = 'https://example.jp/';

//指定した遷移元と遷移前のURLが合致しなければ
if($beforeUrl != $fromUrl){
    //指定した遷移先URLに飛ばす
    header('Location:'.$jumpUrl, true, 301);
}

遷移元を複数指定する場合は配列を使ってこんな感じに。

$beforeUrl = $_SERVER['HTTP_REFERER'];
$fromUrlArray = ['https//example.jp/a.php','https//example.jp/b.php','https//example.jp/c.php'];
$jumpUrl = 'https://example.jp/';

if(!in_array($beforeUrl, $fromUrlArray)){
    header('Location:'.$jumpUrl, true, 301);
}

まあ、こういうのは基本的にファイル単位で分けたほうがいいと思うんで実用性は微妙かも。

そんな感じで。

コメント

タイトルとURLをコピーしました