PHP フォームの値を別画面に渡す(GET/POST)

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に送信されます。

関連の記事

XAMPP インストールとHello Worldを表示
PHP MySQLへ接続してselectするサンプル

△上に戻る