addslashes()

1459 ワード

php addslashes関数を深く理解する
php addslashes関数は多くの人にとってよく知られていませんが、ほとんどの人は毛皮を知っているだけで、addslashes関数が特定の文字の前に反スラッシュを付けていることを知っています.この文章ではphp addslashes関数の使い方を深く理解します.
php addslashes関数の役割は、事前定義された文字の前に反スラッシュを付けることです.これらの事前定義された文字には、次のものが含まれます.
  • 単一引用符(')
  • 二重引用符(")
  • 反スラッシュ()
  • NULL

  • addslashes関数は、データベースにデータを挿入するときによく使用されます.たとえば、文字列などです.
    $str="my name's wxp";

    この文字列をデータベース・テーブルに挿入します.この文字列には単一引用符'があるため、mysql接合文字列の単一引用符'と競合する可能性があります.SQL文が正しくなく、挿入操作が正常に実行されません.この場合、addslashes関数を使用して文字列を処理する必要があります.たとえば、次のようにします.
    $str="my name's wxp";
    echo addslashes($str);//  my name\'s wxp

    次にmysql文字列をつなぎます.
    $sql="insert into student(student_name)values('".addslashes($str)."')";
    mysql_query($sql);

    このとき文字列がデータベースに挿入されている場合、挿入された文字列がスラッシュであるか、スラッシュでないかはご存知でしょうか.おそらく、多くの人がスラッシュであることは間違いだと思っているのではないでしょうか.実はこの答えは間違っていて、挿入された文字列はスラッシュではありません.なぜ挿入された文字列がデータベースにスラッシュを付けていないのか、続けてください以下の説明を見てください.
    文字列$str="my name's wxp"がPOSTとGETを使用してコミットされたデータである場合、このときデータベースに挿入されたデータはバックスラッシュ付きであることから、addslashesはPOSTとGETデータがデータベースに挿入された場合にのみバックスラッシュをデータベースに同時に挿入し、他の場合にはバックスラッシュをデータベースに挿入しないことがわかる.
     
    注記:デフォルトでは、PHPは、すべてのGET、POST、COOKIEデータに対してaddslashes()を自動的に実行します.このため、エスケープされた文字列に対してaddslashes()を使用することはできません.これは、二重エスケープを引き起こすためです.この場合は、関数get_magic_quotes_gpc()を使用して検出できます.