LoginSignup
6
4

More than 5 years have passed since last update.

【PHP】header関数が使えない環境でのリダイレクト処理の実装方法とは

Last updated at Posted at 2018-04-18

header関数が使えない

header関数が使えない。使えない。勘弁してくれ
ではheader関数以外でリダイレクトさせるにはどうすりゃいいのかにゃー:cat:

header関数が使える環境での書き方

普通(?)だったらこんな感じで書くんですけど、こういう書き方ができない

hoge.php
<?php

// ~なんかの処理~

// checkError()・・・処理の結果が正常ならtrue、異常ならfalseを返す関数
if(checkError($result) !== true) {
    // 処理の結果が正常でないならheader関数でTOPページにリダイレクトさせる
    header('Location: ./', true);
    exit;
}

header関数が使えない環境での代替案

JavaScriptでリダイレクトさせる

まあHTML読み込んでからでも支障ないのかなとは思うのですが、
echoで出力させつつリダイレクトさせるのが早いかなと思いましたのでこんな感じで書いてみました。

hoge.php
<?php

// ~なんかの処理~

// 処理の結果が正常でないならJavaScriptでTOPページにリダイレクトさせる
if(checkError($result) !== true) {
    echo '
        <script type="text/javascript">

        setTimeout("redirect()", 0);

        function redirect() {
            location.href="https://**********************/";
        }

        </script>';
    exit;
}

HTMLのmetaタグでリダイレクトさせる

無理やりな感じもするのですが、一応動作はします。(本来はheadタグ内に記述すべきですが)
エラーメッセージ表示させたりする場合はアリかなぁ・・・?(JavaScript版でもできるやんて話ですが)

hoge.php
<?php

// ~なんかの処理~

// 処理の結果が正常でないならmetaタグでTOPページにリダイレクトさせる
if(checkError($result) !== true) {
    echo '<meta http-equiv="refresh" content="5;URL=https://**********************/">
          <p>エラーが発生しました。エラーコード:******<br/>5秒後にTOPページへ戻ります。</p>';
    exit;
}

おわり

  • SEO?考慮してないすね・・・
  • リダイレクトさせずにエラーページをinclude 'error.html'みたいに読み込んでもありかもしれません。
  • checkError関数の名前のセンスがあれですけど、正常ならtrue、異常ならfalseを返す関数です。
  • なにかいい案をお持ちの方、コメント待ってます。
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4