サポート » 使い方全般 » GETで送信された値の利用とエスケープについて

  • 解決済 wellheader

    (@wellheader)


    製品一覧の絞り込み検索を作成することになりました。そこでいくつかのサンプルコードを参考に、クエリパラメータkeywordを追加してGETで値を渡し絞り込みを行うサンプルを作成してみました。

    function search_filter($query){
    	if(!is_admin() && $query->is_main_query()){
    		$keyword = $query->get('keyword');
    		$query->set('s', $keyword);
    	}
    }
    add_action('pre_get_posts', 'search_filter');

    動作は確認できたのですが、現状では$query->get(‘keyword’)をそのままセットしています。テンプレートでinput要素のvalueにGETで送られた値をセットする際は、esc_attr()によるエスケープが適切と理解しておりますが、上記でGETの値$query->get(‘keyword’)をセットする際にも何らかのエスケープ処理が必要になりますでしょうか。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    検索のSQLを組み立てる際に、エスケープ処理を行っていますので、setする際のエスケープ処理は不要です。

    $like = '%' . $wpdb->esc_like( $term ) . '%';

    なお、esc_attr は、htmlの属性として表示する場合、esc_htmlは、htmlで文字として表示する際のエスケープ処理です。

    WordPressでのバリデーション処理は、Codex の Data Validation にまとまっていますので確認してみてください。

    ちなみに、WordPressでは、$_GET や $_POST などの値に自動的に addslashes が掛けられてきますので、値を利用する場合、stripslashes_deep を通しておく必要があります。

    jim912様

    分かりやすいご回答に感謝いたします。
    補足していただいた点も大変参考になりました。
    ドキュメント熟読させていただきます。
    ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「GETで送信された値の利用とエスケープについて」には新たに返信することはできません。