1

プリペアドステートメントを使用して、データベースとの間でデータを保存、取得、更新しています。プリペアドステートメントを使用している場合、htmlspecialchars()またはhtmlentities()を使用する必要がありますか?

私が理解していることから、データを挿入するときにhtmlspecialchars()を使用する必要はなく、出力されるhtmlのみに関係します...

プリペアドステートメントを使用して、次のような登録フォームからのユーザー入力を保存している状況があります。

$stmt = $conn2->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
$stmt->bind_param('sss', $username, $email, $password);
$stmt->execute();

ログイン時にユーザー名とパスワードを取得し、次のように画面にユーザー名を表示する別のスクリプトがあります。

$stmt = $conn2->prepare("SELECT username FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();
$stmt->store_result();

if ($stmt->num_rows == 1) {

$stmt->bind_result($name);
$stmt->fetch();

また、ユーザー名をSESSIONに入れて、次のようにセッションをエコーし​​ました。

echo $_SESSION['user']['username']

この例から、ユーザー名を表示するときにhtmlspecialchars()またはhtmlentities()を使用する必要がありますか?これは、HTMLを出力することの意味ですか?

もしそうなら、どこにhtmlspecialchars()またはhtmlentities()を実装しますか?

4

1 に答える 1

4

データベースはHTMLを気にしません。

HTMLドキュメントにデータを挿入する場合は、そのうちの1つを使用し、HTMLドキュメントに挿入する直前に使用します(データベースに挿入する直前ではなく、他の目的で生データが再度必要になる場合があります)。

于 2012-04-11T09:18:22.347 に答える