sourcecode

워드프레스:$wpdb->get_results를 사용할 때 결과를 이스케이프 해제하려면 어떻게 해야 합니까?

codebag 2023. 2. 15. 21:55
반응형

워드프레스:$wpdb->get_results를 사용할 때 결과를 이스케이프 해제하려면 어떻게 해야 합니까?

사용하는 데이터베이스에 새 행을 추가하려면$wpdb->insert사용하는 행을 가져오려면 ,$wpdb->get_results.

문제는 말이다$wpdb->insert입력에서 빠져나간 것 같습니다.예를들면,a"b로 저장된다.a\"b를 참조해 주세요.그렇지만,$wpdb->get_results도망치지 않을 것 같다a\"b로.a"b.

이것이 설계상 올바른 동작입니까?

의 결과를 회피할 수 없을까?$wpdb->get_results수동으로요? (이것에 적절한 기능은 무엇입니까?)

$wpdb->insert()그리고.$wpdb->prepare()는 SQL 주입 공격을 방지하기 위해 데이터를 이스케이프합니다.$wpdb->get_results()SQL에서 일반적으로 동작하도록 설계되어 있습니다.SELECT진술이 있기 때문에 슬래시가 그대로 남아 있는 것은 의도적인 것이라고 생각합니다.이것에 의해, 데이터의 소비자는 필요에 따라서 데이터를 처리할 수 있습니다.

그 이후로는$wpdb->get_results()funciton은 의 배열을 반환합니다.stdClass오브젝트, 모든 행의 모든 컬럼에 있는 슬래시를 제거하려면 행과 PHP를 실행하는 각 행 오브젝트의 속성을 반복해야 합니다.stripslashes()기능을 합니다.

foreach( $quotes as &$quote ) {
    foreach( $quote as &$field ) {
        if ( is_string( $field ) )
            $field = stripslashes( $field );
    }
}

wpdb->get_filename() 함수에 대한 자세한 내용은http://http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results 를 참조해 주세요.

http://codex.wordpress.org/Function_Reference/stripslashes_deep

//replace $_POST with $POST
    $POST      = array_map( 'stripslashes_deep', $_POST);
    $wpdb->insert( 
            'wp_mytable', 
            array( 
                'field_name'        => $POST['field_name'], 
                'type'              => $POST['type'],
                'values'            => serialize($POST['values']),
                'unanswered_link'   => $POST['unanswered_link'], 
            ), 
            array( 
                '%s','%s','%s','%s'
            ) 
        );

언급URL : https://stackoverflow.com/questions/12026609/wordpress-how-to-unescape-the-results-when-using-wpdb-get-results

반응형