header関数が使えない
header関数が使えない。使えない。勘弁してくれ。
ではheader関数以外でリダイレクトさせるにはどうすりゃいいのかにゃー?
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
を返す関数です。 - なにかいい案をお持ちの方、コメント待ってます。