sql >> データベース >  >> RDS >> Mysql

プリペアドステートメントにhtmlentities()またはhtmlspecialchars()が必要ですか?

    htmlentities および htmlspecialchars HTML出力を生成するために使用されます それはブラウザに送信されます。

    プリペアドステートメントは、クエリを生成/データベースエンジンに送信するために使用されます 。

    どちらもデータのエスケープを許可します。ただし、同じ使用法ではエスケープされません。
    つまり、プリペアドステートメント(SQLクエリの場合) htmlspecialcharsの適切な使用を妨げないでください / htmlentities (HTML生成用)

    strip_tagsについて :文字列からタグを削除します。ここで、htmlspecialchars それらをHTMLエンティティに変換します。
    これら2つの関数は同じことをしません。ニーズや入手したいものに応じて、どちらを使用するかを選択する必要があります。

    たとえば、次のコードでは次のようになります。

    $str = 'this is a <strong>test</strong>';
    var_dump(strip_tags($str));
    var_dump(htmlspecialchars($str));
    

    この種の出力が得られます:

    string 'this is a test' (length=14)
    string 'this is a &lt;strong&gt;test&lt;/strong&gt;' (length=43)
    

    最初のケースでは、タグはありません。 2番目に、適切にエスケープされたもの。

    そして、HTML出力で:

    $str = 'this is a <strong>test</strong>';
    echo strip_tags($str);
    echo '<br />';
    echo htmlspecialchars($str);
    

    次のようになります:

    this is a test
    this is a <strong>test</strong>
    

    どれにしますか? それ 重要な質問です;-)



    1. SQLRecoverableException:I / O例外:接続のリセット

    2. SQL Serverクエリ:リテラルでは高速ですが、変数では低速です

    3. コマンドラインを使用して単一のテーブルをmysqlデータベースにインポートする方法

    4. CSVからmySQLデータベースにデータをロードするJava+hibernate + spring