yamata.programmer.blog

28歳 プログラマになるために通った道に落ちていた情報を発信します!

【PHP初心者必見】header関数で次のページへ値を渡す方法【POST送信不可】

今回の記事を読んで欲しい方

  • PHP初学者の方
  • header('Location:URL')を指定して値を渡したい場合

今回はについてheader関数を使って値を渡す方法で、複数の変数を入れる方法について書いていこうと思います。

前置きですが、POSTで値を送る場合はURLに情報が載ってこないですが、GETで値を送る場合はURLにどうしても載ってしまいます。

どうしても見られたくない情報がある場合はセッションで送信しましょう。

www.yamata-pgblog.com

 

結論:header関数のLocationのURLに変数を入れる

header関数のLocationに変数を入れるって何?って思った方に、書き方についてご説明します。

<?php

  header('Location:index.php?hogeA='.$test1.'&hogeB='.$test2.'&hoge3='.$test3);

  exit();

?>

何だこの書き方?って思う書き方ですよね。自分も最初悩みました。

ちょっと割って話をします。

header関数

header関数は、HTTPのヘッダ情報を送信するために使用する関数です。

HTMLのaタグだとsubmitだと、クリックしないと画面遷移が発生しませんが、PHPのheader関数を使用すると、任意のタイミングで画面遷移をさせることができます。

画面遷移させたい例として、ログインしていないユーザーがアクセスしてきた場合にTOPぺージにリダイレクトさせたい時や、ファイルをダウンロードさせたい場合です。

エラーのステータスコードを指定することもできるようですが、今回の内容とは無関係なので割愛します。

Location:index.php

header関数のLocationに任意のURLを指定すると、その指定した画面へ遷移します。

この場合だと、header関数を書いたファイルから同じ階層のindex.phpに画面遷移をする命令になります。

勿論ですが、公開されているURLを指定もできます。

header('Location:https://www.yahoo.co.jp/');

こうすることでyahooのページにアクセスもできるわけですね。

?hogeA='.$test1.'

この記述が結構難しいです。

?は、サーバーへ渡されるデータを含んだクエリストリングを意味しています。

'.$test1.'は、hogeAに入れる変数です。'. と .' の記述は、ただ文字列として連結しているだけなので、あまり深く考えなくでOKです。

次ページで渡した値を取りたい場合、

<?php

  echo $_GET['hogeA'];

?>

と記入して取得します。$_GET['hogeA'];にはtest1の値が入っており、webページにはtest1と表示されます。

&hogeB='.$test2.'&hoge3='.$test3も同様になります。

渡す値が複数の場合は、 &で渡したい数繋げていくことになります。

 

header関数ではPOST送信が不可

header関数を使う場合はPOST送信が不可能となります。

上記の形でGETで送信するか、冒頭でお伝えしたセッションを使って値を渡しましょう。

www.yamata-pgblog.com

今回のまとめ

いかがでしたでしょうか。

・header関数の書き方:

<?php

  header('Location:遷移させたいURL');

?>

・header関数で値を渡したい時の書き方:

<?php

  header('Location:index.php?hogeA='.$test1.'&hogeB='.$test2.'&hoge3='.$test3);

  exit();

?>

・次ページで値を表示か使いたい場合の書き方:

<?php

  echo $_GET['hogeA'];

  $_GET['hogeA'] = ●●(したい処理や代入等)

?>

・POST送信で値を渡せない為、GETで送信するかセッションで送信しなければならない

以上を踏まえて、使ってみてください。