PHPのフォーム作成
PHPで簡単にフォームを作っていきます。
<!DOCTYPE html>
<meta charset = "utf-8">
<head></head>
<body>
<form method = "GET" action="input2.php">
氏名
<input type = "text" placeholder = "名前を入力 "name = "name"> //placeholderは下の薄い灰色のテキスト
<input type = "submit" value = "送信"> //送信部分
</form>
</body>
</html>
これを使うと
⚫︎form method
はデータの送信方法を指定します。データの送信方法(HTTPメソッド)を指定する時に指定し
以下の2種類が指定されます。
・GET 送信内容がURLとして渡される(初期値)
・POST 本文として送信される
●form action
は送信先のURLを指定します。
注意点としてinputタグやbuttonタグで作成されるサブミットボタンに
formactionが指定されている場合には、formactionが優先されるみたいです。
⚫︎name属性
はフォームに名前をつける時に使います。
⚫︎placeholder
は上の薄い灰色のテキストです。
⚫︎input type
はフォームの入力欄を作成します。
スーパーグローバル変数
index.phpの上にこのような記述をします。
<?php
if(isset($_GET['name'])){ //nameが入っていたなら
echo $_GET['name'];
}
//GET通信を見る
//スーパーグローバル変数 phpは9種類
?>
スーパーグローバル変数と言ってphpは9種類あるみたいで
関数の外で定義し、定義するとプログラムが終了するまで、どこでも参照・変更が可能になるみたいです。
今回のスーパーグローバル変数は$_GET
です。
issetの文はもしnameが入っていたらという意味です。!emptyでも同じ意味で使えます。
ちなみにデバックでddを入れたらエラーでしたが、var_dumpで中身が見れました。
チェックボックスを入れてみる
チェックボックスを入れて作って見ました。
<?php
if(isset($_GET['name'])){ //nameが入っていたなら
echo $_GET['name'];
//echo '<pre>';
//var_dump($_GET);
}
?>
<!DOCTYPE html>
<meta charset = "utf-8">
<head></head>
<body>
<form method = "GET" action="index.php">
氏名
<input type="text" placeholder="名前を入力" name="name">
<pre>
<input type="checkbox" name="nation[]" value="日本">日本
<input type="checkbox" name="nation[]" value="中国">中国
<input type="checkbox" name="nation[]" value="アメリカ">アメリカ
<input type = "submit" value = "送信" >
</form>
</body>
</html>
input type="checkbox"でチェックボックスを作成できます。
echo $_GET['name'];
をechoをvar_dump($変数)で調べてみると中身がわかります。
<?php
if(isset($_GET['name'])){ //nameが入っていたなら
//echo $_GET['name'];
echo '<pre>';
var_dump($_GET);
}
?>
これで試してみると中身が見れます。
$_GETから$_POSTにしてみる
スーパーグローバル変数で$_POSTは他に見られたくない情報をURLで見られないようにします。
<?php
if(isset($_POST['name'])){ //nameが入っていたなら
//echo $_POST['name'];
echo '<pre>';
var_dump($_POST);
}
//GET通信を見る
//スーパーグローバル変数 phpは9種類
?>
<!DOCTYPE html>
<meta charset = "utf-8">
<head></head>
<body>
<form method = "GET" action="index.php">
氏名
<input type="text" placeholder="名前を入力" name="name">
<pre>
<input type="checkbox" name="nation[]" value="日本">日本
<input type="checkbox" name="nation[]" value="中国">中国
<input type="checkbox" name="nation[]" value="アメリカ">アメリカ
<input type = "submit" value = "送信" >
</form>
</body>
</html>
名前に孫と入力し、国を中国にして送信しました。
入力、確認、完了フォーム作成
入力、確認、完了フォームを作成します。
入力をinput.php、確認をconfirm.php、完了をthanks.phpとします。
<?php
$pageFlag = 0; //ページ遷移の変数
if(!empty($_POST["btn_confirm"])){ //確認画面
$pageFlag = 1;
}
if(!empty($_POST["btn_submit"])){ //完了画面
$pageFlag = 2;
}
?>
<!DOCTYPE html>
<meta charset = "utf-8">
<head></head>
<body>
<?php if($pageFlag === 1 ) :?>
<form method = "POST" action="index.php">
<pre>
氏名
<?php echo $_POST["name"] ;?>
<pre>
メールアドレス
<?php echo $_POST["email"] ;?>
<pre>
パスワード
<?php echo $_POST["password"] ;?>
<pre>
<input type = "submit" name = "back" value = "戻る"> #戻るボタン
<input type = "submit" name = "btn_submit" value = "送信" >
<input type = "hidden" name = "name" value = "<?php echo $_POST["name"] ;?>">
<input type = "hidden" name = "email" value = "<?php echo $_POST["email"] ;?>">
<input type = "hidden" name = "password" value = "<?php echo $_POST["password"] ;?>">
</form>
<?php endif; ?>
<?php if($pageFlag === 2 ) :?>
送信が完了しました。
<?php endif; ?>
<?php if($pageFlag === 0 ) :?>
<form method = "POST" action="index.php">
<br>
氏名
<input type="text" placeholder="名前を入力" name="name" value ="<?php if(!empty($_POST["name"])){echo $_POST["name"];}?>">
<br>
メールアドレス
<br><input type = "email" placeholder = "メールアドレスを入力" name ="email" value ="<?php if(!empty($_POST["email"])){echo $_POST["name"];}?>">
<br>
パスワード
<input type = "password" placeholder = "パスワードを入力" name = "password" value ="<?php if(!empty($_POST["password"])){echo $_POST["email"];}?>">
<br>
<input type = "submit" name = "btn_confirm" value = "確認" >
</form>
<?php endif; ?>
</body>
</html>
参考資料