そんな疑問にお答えします。
本記事ではPHPのデータ渡しの種類「POST」「GET」「FILES」「SESSION」「COOKIE」について解説します。
PHPで使えるPOSTの解説
POSTの解説をする前にデータを渡す方法としてHTMLの<form>について説明しておきます。
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[‘~’] 」です。
例文
$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="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[‘~’] 」です。
例文
$username=$_GET['username'];
$tel=$_GET['tel'];
$email=$_GET['email'];
解説
POSTと同じ方法でデータを渡すことが出来ます。
2つめの方法はデータの渡し方が異なり「form」を利用しません。
その方法は「header(‘Location:~’)」です。
例文
header('Location:next_page.php? username=Taro');
解説
「form」と異なり、囲ったりsubmitで送信するという指定が不要です。
「Location」でデータを渡すページを指定し、?以降に変数名と値を指定してデータを渡します。
使い方は「if関数」などで条件式の結果で指定することが一般的。
〇〇の条件がtrueまたfelseなら▲▲ページへ□□のデータを渡す。といった使い方が出来ます。
POSTとGETでどんな違いがあるのか?
「form」を使えばどちらも同じようにデータを渡すことができるけど、どんな違いがあるのか?
どちらを使うのがおすすめか?
結論「POST」が良いです。違いとしてはデータの渡し方に問題があります。
データを渡した時のURLに注目するとわかりますが、POSTでデータを渡した場合は開いたページのURLのみですが。
GETの場合、渡したデータがURL上に表示されてしまいます。
渡し方 | 説明 |
POST | URLに表示されない(安全) |
GET | URLに表示されてしまう(危険) |
つまり、大事なデータが丸見えの状態なのでGETは推奨しない、使う場合でも大事なデータを使わない場面でのみ使うことにしましょう。
PHPで使えるFILESの解説
FILESは画像を別ページで受け取ることが出来ます。POSTと同様にデータを渡し時は「form」を利用します。
例文
<form method="post" action="next_page.php">
<input type="file" name="gazou">
<input type="submit" value="データを渡す" >
</form>
そして受け取る側の指定が
例文
$gazou=$_FILES['gazou'];
解説
画像を受け取るときはこのような書き方になります。受け取った中身には「画像のサイズ、仮保存の場所と名前、画像のファイル名」が保存されています。
PHPで使えるSESSIONの解説
SESSIONは言葉の通り、ログイン情報や接続状態の記憶に使われています。
例文
session_strat();
$_SESSION['username']=$username;
解説
ESSIONを使う場合、データを渡す側と受け取る側に「session_strat();」を追加しましょう。
文字の通りセッションがスタートしてデータが渡されます。
PHPで使えるCOOKIEの解説
COOKIEもSESSIONと同様にログイン機能として使われています。
例文
$_COOKIE['username']=$username;
解説
「session_strat();」は不要です。
SESSIONとCOOKIEの違いは「データをどこに残しているのか?」です。
渡し方 | 保存される場所 |
SESSION | サーバー側 |
COOKIE | ブラウザ(クライアント側つまりPC) |
まとめ
渡し方 | 構文 |
POST | $変数 = $_POST[‘~’]; |
GET | $変数 = $_GET[‘~’]; |
FILES | $変数=$_FILES[‘~’]; |
SESSION | $_SESSION[‘変数名’]=~; |
COOKIE | $_COOKIE[‘変数名’]=~; |
・画像の受け渡しはFILESを使う
・セッションやログインにはSESSION、COOKIEを使う
以上です。
最後までお読みいただきありがとうございました。Taroでした。