24歳、初心者です。
ruby on railsではredirect_toでリダイレクト出来るけどPHPではどうやってリダイレクトするんや・・・と思って目の前の箱で検索をかけてみたら答えが返ってきたので、備忘録がわりに書いておきます。
####そもそもリダイレクトとは何か?
ユーザーの入力を待たずにコードで他のURLへ移動する機能です。
「詳細!PHP7+MySQL入門ノート」より引用
####PHPでリダイレクトするには?
→PHPでリダイレクトするにはheader関数であるheader()を使います。
下記のようにLocationに続けて移動先のURLを記載します。注意しなければならないのは相対パスではなく、
http://www.test.com/
のような絶対パスのURLを指定します。
<?php
header('Location: http://www.test.com/');
exit();
?>
リダイレクトの際は残りのコードは実行せずにページを移動したい場合は直後にexit()を実行します。
今ならまだURLは簡単に覚えられますが、その内滅茶苦茶長いURLを指定しなければならない日が来るでしょう。そんな時にスーパーグローバル変数の$_SERVERを使ってURLを表す事が出来るみたいです。
例えば、
<?php
header('Location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])'./test.php');
exit();
?>
①$_SERVER['HTTP_HOST']
②dirname($_SERVER['PHP_SELF'])
①サーバーのホスト名を表しています。例えば,localhostとかですね。
②現在のファイルのディレクトリを取得できます。ですが['PHP_SELF']では脆弱性が発見されており、代わりに['SCRIPT_NAME']を使ったほうが良いそうです。
$_SERVER変数を使うことによって、長いURLを簡略化出来る他にも、開発環境から運用サーバーに移動してURLが変わってしまった場合にも対処できます。
参考書籍
「詳細!PHP7+MySQL入門ノート」