ねっとぱんだ-プログラミング勉強ブログ-

Webデザイン、プログラミングの勉強ブログ。

【PHP】簡易的なフォーム練習

フォーム作成順序

1.入力ページ(今回はindex.php)を作成
<form></form>タグを記述して、その中に< inpput >を記述していく。

  • 今回使用するフォーム

text
テキストをを入力できる
textarea
複数行を入力
name
指定したnameに入力した値が格納される。

今回はtableタグで囲んでいる

<table>
<tr>
<th>名前</th>
<td><input type="text" name="name"></td>
</tr>
<tr>
<th>メール</th>
<td><input type="text" name="email"></td>
</tr>
<tr>
<th>ご意見</th>
<td>
<textarea col="33" row="4" name="message"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="確認">
</td>
</tr>
</table>

2.値を受け取るページを作る(今回はcheck.php)。
(後からechoで受取った値を表示していく。)

<table>
<tr>
<th>名前</th>
<td></td>
</tr>
<tr>
<th>メール</th>
<td></td>
</tr>
<tr>
<th>ご意見</th>
<td></td>
</tr>
</table>

3.入力画面(index.php)のformにaction属性とmethod属性を記述。

action
データを渡す先のパス
method
データの送り方を指定
<form action="check2.php" method="post">

4.確認画面(check.php)で値を受け取ってechoで呼び出していく。

<!--ページ最上部-->
<?php
$name = ($_POST['name']);
$email = ($_POST['email']);
$message = ($_POST['message']);
?>
<!--各箇所にechoで呼び出し-->
<th>名前</th>
<td><?php echo $name ?></td>
<th>メール</th>
<td><?php echo $email ?></td>
<th>ご意見</th>
<td><?php echo $message ?></td>

5.最初からcheck.phpにアクセスされないように、どの値にもデータが入っていなかったらindex.phpに飛ばす処理を描く

isset()
変数がセットされているかいないかをチェックする。
header('Location
〇〇〇'):ヘッダーにアドレスを渡してジャンプさせる。
htmlの前に書かなければいけない
if(!isset($_POST['name'])||!isset($_POST['email'])||!isset($_POST[message])){
header('Location:index2.php');
exit;

6.入力された値を文字列に変換してタグなどが効かないようにする。

$name = htmlspecialchars($name,ENT_QUOTES,'UTF-8'.false);
$email = htmlspecialchars($email,ENT_QUOTES,'UTF-8',false);
$message = htmlspecialchars($message,ENT_QUOTES,'UTF-8',false);

7.index.phpで変数に空の値を代入し、index.phpからcheck.phpにリンクしたときはフォームが未入力でも戻されないようにする。

<?php
$name = '';
$email = '';
$message = '';
?>

8.check.phpからindex.php戻ったときに入力していた値を表示させる。

session_start()
セッションを作成する。
session(セッション)
個々のユーザーのデータを格納する仕組み。 個々のユーザーに対して一意なセッション ID を用意する。
http://php.net/manual/ja/session.examples.basic.php

check.phpで変数をsessionに格納していく

session_start();

$_SESSIN['name'] = $name;
$_SESSIN['email'] = $email;
$_SESSIN['message'] = $message;

index.phpで"sessionに値が格納されていれば"変数に代入

session_start();

if(isset($_SESSION['name'])){
$name = $_SESSION['name'];
}
if(isset($_SESSION['email'])){
$email = $_SESSION['email'];
}
if(isset($_SESSION['message'])){
$message = $_SESSION['message'];
}

変数をtextのvalueで呼び出す。
textareaは$lt;textarea$gt;内で呼び出す。

<tr>
<th>名前</th>
<td><input type="text" name="name" value="<?php echo $name ?>"></td>
</tr>
<tr>
<th>メール</th>
<td><input type="text" name="email" value="<?php echo $email ?>"></td>
</tr>
<tr>
<th>ご意見</th>
<td>
<textarea col="33" row="4" name="message"><?php echo $message ?></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="確認">
</td>
</tr>

HTMLタグの活用

autofocus
ページを開いた時に自動でフォーカスする
rewuired
その項目が入力されていないとエラーが出る