スライダーで選択
お好みの焙煎度は「3、ハイロースト」です。
テキストエリア
文字エンコード検証とhtmlエスケープ
<?php
require_once("es.php"); //フォーム~入力データのチェック~で参照してね
if (!checkEn($_POST)) { //文字エンコードの検証
$encoding = mb_internal_encoding(); //PHPが使うエンコードを調べる
$err = "Encoding Error! The espected encoding is" . $encoding;
exit($err); //エラーメッセージを出してコードのキャンセルする
}
$_POST = es($_POST); //HTMLエスケープ(xss対策)
?>
焙煎度を示すスライダー
<?php
$error = [];
$min = 1;
$max = 5;
if (isset($_POST["roasting"])) {
$roasting = $_POST["roasting"];
$isRoasting = ctype_digit($roasting) && ($roasting >= $min) && ($roasting <= $max);
if (!$isRoasting) {
$error[] = "焙煎殿値にエラーがあります。";
$roasting = $min;
}
} else {
$roasting = round(($min + $max) / 2);
$isRoasting = true;
}
?>
<!-- 入力フォーム -->
<form method="POST" action="<?php echo es($_SERVER['PHP_SELF']); ?>">
<ul class="nolist">
<li><span>焙煎土: </span>
<input type="range" name="roasting" min="1" max="5" step="1" value="<?php echo $roasting; ?>">
</li>
<li><input type="submit" value="決定"></li>
</ul>
</form>
<?php
if ($isRoasting) {
$rostList = ["ライトロースト", "ミディアムロースト", "ハイロースト", "シティロースト", "フレンチロースト"];
echo "<HR>";
echo "お好みの焙煎度は「{$roasting}、{$rostList[$roasting - 1]}」です。";
}
?>
<?php
if (count($error) > 0) {
echo "<HR>";
echo '<span class = "error">', implode("<br>", $error), '</span>';
}
?>
テキストエリアを作る
<?php
if (isset($_POST["note"])) {
$note = $_POST["note"];
$note = strip_tags($note); //HTML,PHPタグを削除する
$note = mb_substr($note, 0, 150); //最大150文字だけ取り出し
$note = es($note); //HTMLエスケープ
} else {
$note = ""; //POSTされた値が無いとき
}
?>
<!-- 入力フォーム -->
<form method="POST" action="<?php echo es($_SERVER['PHP_SELF']); ?>">
<ul class="nolist">
<li><span>お問い合わせ: </span>
<textarea name="note" cols="30" rows="5" maxlength="150" placeholder="コメント入力"></textarea>
</li>
<li><input type="submit" value="送信する"></li>
</ul>
</form>
<?php
$length = mb_strlen($note); //テキストが入力されていれば表示
if ($length > 0) {
echo "<HR>";
$note_br = nl2br($note, false); //改行コード前に<br>を挿入
echo $note_br;
}
?>
POSTされた値を処理する順番
※文字エンコード検証とhtmlエスケープに入っている、es($_POST)でのHTMLエスケープは行わずにcheckEn($_POST)だけしておく!
テキストからHTMLタグを削除し、文字数制限を行う為です。
テキストデータの処理は実施する順番が大事!!
テキストからHTMLタグを削除し、文字数制限を行う為です。
テキストデータの処理は実施する順番が大事!!
- 文字エンコードが正しいかどうか検証する
- HTMLタグ、PHPタグを削除する
- 文字数制限内のテキストだけを取り出す
- HTMLエスケープを行う