プリペアドステートメントを使用して、データベースとの間でデータを保存、取得、更新しています。プリペアドステートメントを使用している場合、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()を実装しますか?