PHPのフォームの値を別画面に渡すサンプルです。POSTまたはGETを使用します。
(確認環境:PHP 7,XAMPP 7.2.8,Windows 10)
目次
サンプル | フォームの値を別画面に渡す内容 |
値を送信する側のファイル(index.php) | |
値を受け取る側のファイル(testform.php) | |
formを2つにして送信先(action)を変えることは可能 |
フォームの値を別画面に渡す内容
やりたいこと
1.入力元(index.php)の画面で文字を入力しボタンを押して値を送信します。
2.入力された文字を送信先(testform.php)の画面で表示します。
ファイルの配置場所
E:\xampp\htdocsフォルダ配下にtest1フォルダを作成しその中に上記ファイルを配置しました。
http://localhost/test1/index.phpを入力するとindex.phpが表示されます。
※index.phpをブラウザにドラッグアンドドロップしてブラウザ入力欄がfile:///D:/xampp/htdocs/・・・等のファイルのアドレスになっている場合はPHPの動作はしません。
ファイルの文字コードは、UTF-8にします。
値を送信する側のファイル(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>
9行目は、methodでpost方式を指定し、actionで送信先(testform.php)を指定しています。
10行目は、テキストボックスです。画面から文字を入力します。
11行目は、送信ボタンです。type=submitのボタンを押すと値が送信されます。
※8行目のコメントを外して9行目をコメントにするとget方式での送信になります。 |
formの外にsubmitボタンがある場合
submitボタンは、formの間に記述しないと機能しません。
<form method="post" action="testform.php">
<input type="text" name="text1">
</form>
<input type="submit" value="送信ボタン">
4行目のsubmitは、formの間にないのでボタンを押しても送信されません。
値を受け取る側のファイル(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>
3行目は、$_POSTでpostデータを受け取ります。
$_POST['text1']のtext1は、index.phpの10行目のinputタグのnameで指定された値です。
16行目は、変数の内容を表示します。
※3行目をコメントにして2行目のコメントを外し、index.phpもget方式にするとgetで値を受け取れます。 |
サニタイジング (無害化)について
上記コードの6行目は、htmlspecialchars関数でhtmlタグの機能をサニタイジング (無害化)しています。
サニタイジングしない場合でhtmlタグを入力すると以下のようにhtmlタグが機能してしまいます。
例:「あいう<br>えお」と入力すると改行が入る。
htmlspecialchars関数を通すとhtmlタグの<br>は文字としてそのまま表示されます。
機能させず文字列として扱う → 無害化させる
利用者が意図的または偶然に不正なコードを入力することを防止するために非常に重要です。
formを2つにして送信先(action)を変えることは可能
送信元のindex.phpファイルにformを2つ作成することで送信先を変えることができます。
<!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>
<form method="post" action="testform2.php">
<input type="text" name="text1">
<input type="submit" value="送信ボタン">
</form>
</body>
</html>
9行目と13行目にそれぞれformがあります。
11行目のsubmitボタンを押すと10行目のname="txt1"の値が9行目のactionのtestform.phpに送信されます。
15行目のsubmitボタンを押すと14行目のname="txt1"の値が13行目のactionのtestform2.phpに送信されます。
関連の記事