PHPでデータを渡す方法と種類「POST」「GET」「FILES」「SESSION」「COOKIE」の解説

PHP
PHPで別ページにデータを渡すにはどんな方法があるの?違いや特徴も含めて教えてほしい。

 

そんな疑問にお答えします。

本記事ではPHPのデータ渡しの種類「POST」「GET」「FILES」「SESSION」「COOKIE」について解説します。

 

スポンサーリンク

PHPで使えるPOSTの解説

 

POSTの解説をする前にデータを渡す方法としてHTMLの<form>について説明しておきます。

 

formってなに?

<form method=”post” action=”~”></form>

 

 例文

<form method="post" action="next_page.php">
  <input type="text" name="username">
  <input type="tel" name="tel">
  <input type="email" name="email">
  <input type="submit" value="データを渡す" >
</form>

 

 解説

「form」の次にある「method(メソッド)」はどんな方法でデータを渡すか?を指定します。

POSTでデータを渡すのでこちらには「post」が入ることになります。

続いての「action」はデータを渡す先のページを指定し、渡すデータは「form」で囲っている「input」で入力された値が渡されます。

 

POSTってなに?

POSTのメソッドを使い、actionで指定されたページにデータが渡されたらデータを受け取る指示を用意しなければいけません。

それが「 $_POST[‘~’] 」です。

 

$変数 = $_POST[‘~’]

 

 例文

$username=$_POST['username'];
$tel=$_POST['tel'];
$email=$_POST['email'];

 

 解説

「form」で指定した「name」属性の値と同じ値を「$_POST」の中に設定することで、データが渡されます。こちらを正しく設定しないと渡したデータを受け取ることが出来ません。

ちなみに「=」の右側でPOSTでデータを受け取り、それを左側の変数へ入れ直すことがほとんどです。

なので正しく動けば「form」で入力されたデータは今「$username」や「$tel」「$email」に入っているということになります。

 

POSTではこのような形でデータを次のページへ渡すことができます。

 

 

PHPで使えるGETの解説

 

GETの使い方は2種類あります。1つは先述したPOSTと同じく「form」を利用した方法

<form method=”get” action=”~”></form>

 

 例文

<form method="get" action="next_page.php">
  <input type="text" name="username">
  <input type="tel" name="tel">
  <input type="email" name="email">
  <input type="submit" value="データを渡す" >
</form>

 

 解説

「method」の値が「get」に変わっただけですね。

 

GETってなに?

データの受け取り方は「 $GET[‘~’] 」です。

$変数 = $_GET[‘~’]

 

 例文

$username=$_GET['username'];
$tel=$_GET['tel'];
$email=$_GET['email'];

 

 解説

POSTと同じ方法でデータを渡すことが出来ます。

 

 

2つめの方法はデータの渡し方が異なり「form」を利用しません。

その方法は「header(‘Location:~’)」です。

 

header(‘Location:~? 変数名=値’);

 

 例文

header('Location:next_page.php? username=Taro');

 

 解説

「form」と異なり、囲ったりsubmitで送信するという指定が不要です。

「Location」でデータを渡すページを指定し、?以降に変数名と値を指定してデータを渡します。

 

使い方は「if関数」などで条件式の結果で指定することが一般的。

〇〇の条件がtrueまたfelseなら▲▲ページへ□□のデータを渡す。といった使い方が出来ます。

 

 

POSTとGETでどんな違いがあるのか?

「form」を使えばどちらも同じようにデータを渡すことができるけど、どんな違いがあるのか?

どちらを使うのがおすすめか?

 

結論「POST」が良いです。違いとしてはデータの渡し方に問題があります。

 

データを渡した時のURLに注目するとわかりますが、POSTでデータを渡した場合は開いたページのURLのみですが。

 

GETの場合、渡したデータがURL上に表示されてしまいます。

 

渡し方説明
POSTURLに表示されない(安全)
GETURLに表示されてしまう(危険)

 

つまり、大事なデータが丸見えの状態なのでGETは推奨しない、使う場合でも大事なデータを使わない場面でのみ使うことにしましょう。

 

 

PHPで使えるFILESの解説

 

FILESは画像を別ページで受け取ることが出来ます。POSTと同様にデータを渡し時は「form」を利用します。

<input type=”file” name=”変数名”>

 

 例文

<form method="post" action="next_page.php">
  <input type="file" name="gazou">
  <input type="submit" value="データを渡す" >
</form>

 

そして受け取る側の指定が

$変数=$_FILES[‘~’]

 

 例文

$gazou=$_FILES['gazou'];

 

 解説

画像を受け取るときはこのような書き方になります。受け取った中身には「画像のサイズ、仮保存の場所と名前、画像のファイル名」が保存されています。

 

 

PHPで使えるSESSIONの解説

 

SESSIONは言葉の通り、ログイン情報や接続状態の記憶に使われています。

$_SESSION[‘変数名’]=~;

 

 例文

session_strat();
$_SESSION['username']=$username;

 

解説

ESSIONを使う場合、データを渡す側と受け取る側に「session_strat();」を追加しましょう。

文字の通りセッションがスタートしてデータが渡されます。

 

 

PHPで使えるCOOKIEの解説

 

COOKIEもSESSIONと同様にログイン機能として使われています。

$_COOKIE[‘変数名’]=~;

 

例文

$_COOKIE['username']=$username;

 

解説

「session_strat();」は不要です。

 

 

SESSIONとCOOKIEの違いは「データをどこに残しているのか?」です。

渡し方保存される場所
SESSIONサーバー側
COOKIEブラウザ(クライアント側つまりPC)

 

 

まとめ

渡し方構文
POST$変数 = $_POST[‘~’];
GET$変数 = $_GET[‘~’];
FILES$変数=$_FILES[‘~’];
SESSION$_SESSION[‘変数名’]=~;
COOKIE$_COOKIE[‘変数名’]=~;

 

・POSTとGETならPOSTが安全
・画像の受け渡しはFILESを使う
・セッションやログインにはSESSION、COOKIEを使う

 

以上です。

最後までお読みいただきありがとうございました。Taroでした。

スポンサーリンク
NO IMAGE

晴耕雨読

『晴れた日には畑を耕し雨の日には本を読む』そんな生活を目指すブログです