#背景
ユーザーからの入力を取得することは基本だと思うので、学んだついでに自分の忘備録として書いています。
#フォームからの入力
入力フォームでユーザーが入れた値を、取得する。
メモの入力画面
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>メモの入力</title>
</head>
<body>
<form action="input_do.php" method='post'>
<textarea name="memo" cols="50" rows="10" placeholder="メモを入力してください"></textarea>
<br>
<button type="submit">登録する</button>
</form>
</body>
入力を登録する操作
<?php
//MAMPを使用しlocalhostに、あらかじめ作ったmydbというデータベースに接続
$db = new mysqli("localhost:8889", "root", "root", "mydb");
$memo = $_POST["memo"];
?>
このように、入力された値をそのままスーパーグローバル変数の
$_POST["memo"];
で受け取ってしまうと、SQLインジェクションなどをされてしまう恐れがあるため、値をチェックするために filer_input()
メソッドを使用します。ここでは、以下の通りに書きます。
filter_input(INPUT_POST, 'memo', FILTER_SANITIZE_SPECIAL_CHARS);
引数は今回3つあり、
第一引数:入力のタイプ(GETやPOST、COOKIE、SERVE、ENVがある)
第二引数:フィルタリングしたい変数の名前(ここでは 'memo' )
第三引数:適用するフィルタのID(省略した場合、何もフィルタリングされないので注意)
戻り値は、成功した場合はフィルタリングした変数の値、フィルタリングに失敗した場合は false、 あるいは変数 var_name が設定されていない場合に null を返します。
他の引数は以下のサイトを参照
PHP公式
また、以下のサイトを参考にさせていただきました。
php filter_input POST や GET などの変数をフィルタリングする