私のサイトには、コメントフィールドのあるフォームがあります。誰かが、例えば、入力した場合:私はことを引くときに表示する前にmysql文字列を適切に "クリーン"にするには?
\"what\" is \'up\'?>
:コメント欄に
"What" is 'up'?>
、それはPDO文を準備し、その後、このように正確にデータベースに表示されます使用してMySQLに挿入しますバックデータベースからのデータは、私が使用:
0:$comment=htmlspecialchars($row['comment']);
しかしとき「エコー$コメント」を使用してページに、私は出力、それは次のようにページに出力します
\"what\" is \'up\'?>
これらのスラッシュをhtmlspecialcharsで削除しないでください。
FWIWは、PDOに変換する前に、挿入前にmysqli_real_escape_string()
を使用してから、htmlspecialchars()
を表示する前に使用しました。
挿入コード:
$comment=$_POST['comment'];
$stmt = $pdo->prepare("INSERT into details (firstname, lastname, comment) values (:firstname, :lastname, :comment)");
$stmt->execute([':firstname' => $firstname, ':lastname' => $lastname, ':comment' => $comment]);
魔法の引用符はありますか? (あなたはしないでください)。 dbにコメントを格納しているコードを追加してください。どんな形でもエスケープされていないことを確認してください。 – JimL
準備文を使用していますか?あなたがいる場合は、入力**の文字列をすべて削除する必要はありません**。 – GrumpyCrouton
私は 'htmlspecialchars()'は[あなたが出力しているときのみ使うべきだと思う](https://stackoverflow.com/a/4882317/1022914)。 – Mikey