9
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[PHP]header関数でリダイレクト

Last updated at Posted at 2017-09-18

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入門ノート」

9
14
1

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
9
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?