web-dev-qa-db-ja.com

wp_ksesとマジッククオート

wp_kses コーデックスのページでそれは言う:

この関数を呼び出す前に、PHPのマジッククォートからスラッシュを削除する必要があります。

私はPHPが新しく(ish)、そしてMagic Quotesをwikiしましたが、最近では廃止予定となっています/言語から削除されました。それで、これは私がまだ心配しなければならない何かですか?

1
William

WordPressはまだPOSTごとに送信されるデータにスラッシュを追加しているので、はい、場合によってはスラッシュを削除する必要があるかもしれません。 2つの選択肢があります。

  1. stripslashes_deep( $value )を使用してください。この関数は、配列、オブジェクト、または文字列を受け取り、スラッシュを削除します。
  2. 以下に従ってPOSTデータを取得します。

    $data = file_get_contents( 'php://input' );
    

    これは生の入力ストリーム、変更することができないリソース(読み取り専用)からデータを取得するので、WordPressによっても変更されません。これは、フォームがenctype="multipart/form-data"で送信されたときには機能しません。ファイルのアップロード.

stripslashes_deep()はJSONエンコード文字列を台無しにするかもしれないことに注意してください。

マジッククォート はクォートではなく、バックスラッシュ\です。これらは addslashes() のように機能し、いくつかの場所で受信データに適用されます。バックスラッシュは'"\および文字NULLの前に設定されます。

WordPressには関数add_magic_quotes()wp-includes/functions.php)があります。これは、関数wp_magic_quotes()内の$_GET内の$_POST$_COOKIE$_SERVERおよびwp-includes/load.php上、およびデータベースから取得されたユーザー/投稿データ上で実行されます。

2
fuxia