画面遷移するGET
以下の例は、入力画面のformでテキストを入力し別ページにGETでデータを渡す。遷移後のページでスーパーグローバル変数$_GETを介してデータを受け取り、それを表示している。GETメソッドをPOSTに変更しても動作する。
入力ページ
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!DOCTYPE html> <html lang="ja">   <head>     <meta charset="utf-8">     <title>GETの例~入力ページ</title>   </head>   <body>     <h1>入力ページ</h1>     <form method="get" action="get_display.php">       <label>         名前を入力:         <input type="text" name="user_name">         <input type="submit" value="送信">       </label>     </form>   </body> </html> | 
遷移後の表示ページ
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php $message = ''; if ($_SERVER['REQUEST_METHOD'] === 'GET') {   if (!isset($_GET['user_name'])) {     $message = '何らかのトラブルです';   } else if ($_GET['user_name'] === '') {     $message = '名前を入力してください';   } else {     $message = 'ようこそ';     $message .= htmlspecialchars($_GET['user_name'], ENT_QUOTES, 'UTF-8');     $message .= 'さん';   } } ?> <!DOCTYPE html> <html lang="ja">   <head>     <meta charset="utf-8">     <title>GETの例~表示ページ</title>   </head>   <body>     <h1>遷移後の表示ページ</h1>     <p><?php echo $message; ?></p>   </body> </html> | 
入力ページの要点
- htmlファイルでもいいが、将来の変更可能性を見据えてphpファイル
- form要素で- method属性を- getに、- action属性で遷移先のページを指定
- テキスト入力はinput要素でtype属性をtextに、name属性の値は受信側の変数で使われる
- 送信ボタンはinput要素のtype属性をsubmitにして配置
遷移後のページの要点
- スーパーグローバル変数$_SERVER['REQUEST_METHOD']で送信側のメソッドが'GET'であることを確認('POST'の場合は以降が無視されて$messageは空のまま)
- スーパーグローバル変数$_GETは連想配列で、送信側のname属性で指定した値をキーとして値を取り出す
- isset()で- $_GETがundefinedの場合はエラー処理
- テキストボックスが空のままGETされると空文字列になるため、必要に応じてその処理
- テキストが有効な場合表示処理
- ユーザー入力を表示する場合は必ずhtmlspecialchar()で特殊文字を変換
画面遷移しないPOST
次の例ではページ遷移をせず、formからPOSTで送信されたデータを同一ページに反映させている。POSTメソッドをGETに変更しても動作する。
要点は1つ前の画面遷移する場合と同じ。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php $message = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') {   if (!isset($_POST['user_name'])) {     $message = '未入力状態';   } else if ($_POST['user_name'] === '') {     $message = '名前を入力してください';   } else {     $message = 'ようこそ';     $message .= htmlspecialchars($_POST['user_name'], ENT_QUOTES, 'UTF-8');     $message .= 'さん';   } } ?> <!DOCTYPE html> <html lang="ja">   <head>     <meta charset="utf-8">     <title>画面遷移なしのPOST</title>   </head>   <body>     <h1>入力・表示画面</h1>     <form method="post">       <label>         名前を入力:         <input type="text" name="user_name">         <input type="submit" value="送信">       </label>     </form>     <p><?php echo $message; ?></p>   </body> </html> |