私はPHPを勉強し、彼らはポストからフォームデータを取得し、データベースに挿入チュートリアルでphpbridge.orgPHPのデータの挿入が確実に
でデータクラスのチュートリアルを作成OOPを追っています。
ステップ1:フォームTopicData.php
に含ま<h2>New Topic</h2>
<form action="add.php" method="POST">
<label>
Title: <input type="text" name="title">
</label>
<br>
<label>
Description:
<br>
<textarea name="description" cols="50" rows="20"></textarea>
</label>
<br>
<input type="submit" value="Add Topic">
</form>
ステップ2 PHPファイル
<?php
require 'TopicData.php';
if (isset($_POST) && sizeof($_POST) > 0) {
$data = new TopicData();
$data->add($_POST);
}
?>
ステップ3
機能ここ
コードであります
public function add($data)
{
$query = $this->connection->prepare(
"INSERT INTO topics (
title,
description
) VALUES (
:title,
:description
)"
);
$data = [
':title' => $data['title'],
':description' => $data['description']
];
$query->execute($data);
}
私の質問はセキュリティに関するものです。このデータをデータベースに挿入する前に、filter_input()関数を使用してフォームの各フィールドを実行するのはベストプラクティスではありませんか?また、これらもfilter_var()で実行する必要がありますか?
これが必要な場合は、フィルタコードはどのようになりますか?
ありがとうございます!
フィルタリングする理由は、特定の分野でタイトルや説明に含めることのできる制限はありますか? – tadman
@tadman - 私はタイトルや説明に制限がありません。しかし、私はセキュリティのために$ _Postに直接アクセスすることはないという印象のもとに、常にfilter_input()関数を使用していました。ここに記述: https://www.phparch.com/2010/07/never-use-_get-again/ – user1609391
その記事は石器時代からのものかもしれませんが、それはすべて間違っているわけではありません。あなたはintegerやfloatやemailのような型に制約する必要がありますが、普通の古い文字列の場合はもっと複雑です。 「有効」とは何ですか?通常は、コード内でより具体的に定義する必要があります。 – tadman