0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【PHP】filter_inputを使用したサニタイズ

Last updated at Posted at 2021-12-30

#背景
ユーザーからの入力を取得することは基本だと思うので、学んだついでに自分の忘備録として書いています。
#フォームからの入力
入力フォームでユーザーが入れた値を、取得する。

メモの入力画面
<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 などの変数をフィルタリングする

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?