PHPのGET/POSTでフォームの値を別画面に渡すサンプルです。
確認環境 ・PHP 7.2.8 ・XAMPP 7.2.8 ・Windows 10 |
目次
環境
説明用として2つのファイルがあります。
1つめは、index.phpで値を送信する側のファイルです。画面でテキストを入力しsubmitを行って値を送信します。
2つめは、testform.phpで値を受け取る側のファイルです。index.phpから値を受け取って画面に表示します。
サンプルでは、E:\xampp\htdocsフォルダ配下にtest1フォルダを作成しその中に上記2ファイルを配置しました。
ブラウザのURL欄には、http://localhost/test1/と入力するとindex.phpの画面が表示されます。
値を送信する側のファイル
値を送信する側のファイルです。(index.php)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>submit</title>
</head>
<body >
<!-- <form method="get" action="testform.php"> -->
<form method="post" action="testform.php">
<input type="text" name="text1">
<input type="submit" value="送信ボタン">
</form>
</body>
</html>
10行目は、methodでpost方式(※)を指定し、actionで送信先(testform.php)を指定しています。
11行目は、テキストボックスです。画面から文字を入力します。
12行目は、送信ボタンです。ボタンを押すとsubmitします。
※9行目のコメントを外して10行目をコメントにするとget方式での送信になります。 |
画面イメージ
上記コードの画面イメージです。
値を受け取る側のファイル
値を受け取る側のファイルです。(testform.php)
<?php
//$moji1 = $_GET['text1'];
$moji1 = $_POST['text1'];
function escape1($str)
{
return htmlspecialchars($str,ENT_QUOTES,'UTF-8');
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>submit</title>
</head>
<body >
<p>入力した文字は、<?=escape1($moji1)?></p>
</body>
</html>
4行目は、$_POSTでpostデータを受け取ります(※)。
$_POST['text1']のtext1は、index.phpの11行目のinputタグのnameで指定された値です。
19行目は、変数の内容を表示します。
※4行目をコメントにして3行目のコメントを外し、index.phpもget方式にするとgetで値を受け取れます。 |
画面イメージ
上記コードの画面イメージです。
サニタイジング (無害化)
上記コードの6-9行目は、htmlspecialchars関数を通してhtmlタグの機能をサニタイジング (無害化)しています。例えば、あいう<br>えおと入力するとタグはそのままの形で出力されます。
サニタイジングしなかった場合は、以下のようにhtmlタグが機能して改行してしまいます。
リンク
以下はPHPマニュアルの$_GETのリンクです。
http://php.net/manual/ja/reserved.variables.get.php
以下はPHPマニュアルの$_POSTのリンクです。
http://php.net/manual/ja/reserved.variables.post.php
以下はPHPマニュアルのhtmlspecialchars関数のリンクです。
http://php.net/manual/ja/function.htmlspecialchars.php
関連の記事
XAMPP インストールとHello Worldを表示
PHP MySQLへ接続してselectするサンプル
PHP フォームからMySQLへ接続してselectするサンプル
「HTTPリクエスト」と「HTTPレスポンス」