2014-01-06 7 views
0

사용자 정의 테이블에서 일부 데이터가 반환되지만 코드가 충분한 지 확실하지 않습니다. 나 좀 도와 줄 수있어?wordpress 데이터베이스 보안 선택

$page_title = get_the_title();  
$id = $wpdb->get_row('select id from table where name="'.htmlspecialchars($page_title).'"'); 
+0

왜 코드가 안전하지 않다고 생각하십니까? 더 구체적으로 설명하십시오. – Rikesh

+0

$ wpdb 클래스에 대한 기사를 읽었습니다. 변수를 이스케이프해야한다는 것과 같은 내용이 있지만 htmlspecialchars 함수로 충분하지는 않습니다. – dontHaveName

답변

0

제목을 검색하는 이유는 무엇입니까? 일반적으로 검색 할 때 ID를 사용하는 것이 더 낫습니다.

그러나 이것은 사용자 정의 쿼리가 제목이 var와 일치 할 때 게시 ID를 얻는 것처럼 보입니다. 적절한 탈출을 준비하십시오. 처음부터 준비를 참조하십시오 http://codex.wordpress.org/Class_Reference/wpdb

global $wpdb; 
$page_title = get_the_title(); 
$id = $wpdb->get_row($wpdb->prepare('SELECT id FROM ' . $wpdb->posts . ' WHERE post_title = %s', $post_title)); 

여기에 온다 또는 당신은 당신의 VAR에 워드 프레스의 esc_sql() 함수를 사용할 수 있습니다. http://codex.wordpress.org/Function_Reference/esc_sql

하지만 내가 말했듯이이 쿼리는 거꾸로 보입니다. get_the_title()이있는 경우 the_ID() 또는 get_the_ID()가 있어야 쿼리가 필요하지 않습니다. 그래서 당신이하려는 일에 달려 있습니다.