2011-08-15 5 views
0

아래 코드에서 두 번째 줄은 $comment을 트위터에 게시합니다.mysql_real_escape_string 후에 아포 스트로피가 트위터에 앞에 백 슬래시로 표시됩니다.

아래에 $comment에 아포스트로피가있는 경우 짹짹 앞에 백 슬래시가 붙습니다. Twitter에서 백 슬래시를 제거하려면 어떻게해야합니까?

$comment = mysql_real_escape_string($_POST['comment']); 

$tweet->post("statuses/update", array("status" => "$comment $fullurl")); 
+0

데이터베이스 연결에 UTF-8을 사용하지 않는다면, 이것이 이유 일 수 있습니다. – ajreal

+0

'$ tweet-> post()'가 데이터베이스와 상호 작용하지 않으면 데이터베이스 이스케이프 기능을 사용하지 않아도됩니다. – mario

+0

또한 'MRES'에서 'PDO'로 전환하여 _and_ SQL 주입에 대해 걱정하지 않아도됩니다. –

답변

2

아마도 magic_quotes는 PHP의 conf에에에 설정? manual

당신은 또한

$comment = mysql_real_escape_string(stripslashes($_POST['comment'])); 
+0

$ 주석 변수를 SQL 삽입에 노출시키지 않았습니까? – John

+0

아니요. mysql_real_escape_string이 주입을 막아주기 때문입니다. 'stripslashes'를 사용하면 이중 이스케이프를 방지 할 수 있습니다. – rabudde

3

이 모든에서 볼 수없는 SQL이 없다 할 수 있습니다 참조하십시오, 그래서 mysql_real_escape_string를 호출 아무 문제가 없다. 사실, 당신이 트위터에 글을 올리고 있다고 말했기 때문에, 최소한 에 관련된 SQL이있을 것입니다. 적어도 그 부분은입니다.

이스케이프는 항상 실제로 SQL 문에서 변수를 사용하기 전에, 맨 마지막으로 즉시을 수행하고, 그 SQL 문 컨텍스트에 대한 에만한다. 만약 당신의 $tweet->post 함수가 당신의 편에서 어떤 SQL을 수행한다면, 그 함수는 필요한 탈출을해야한다.

관련 문제