2013-08-03 2 views
0

예를 들어 텍스트 필드에 '를 입력하면 PHP는 앞에 \를 붙입니다.PHP는 MySQL에 삽입 할 때 문자에 슬래시를 추가합니다.

$comment_body = $_POST['comment_body']; 
$comment_body = nl2br(htmlspecialchars($comment_body)); 
$comment_body = mysqli_real_escape_string($db_conx,$comment_body); 

어떻게 나타나는이 슬래시를 중지합니까 :

나는 필터링에 대해 다음 사용하고 있습니다?

+0

은'mysqli_real_escape_string' 함수 호출은 SQL 주입을 방지하기 위해 백 슬래시와 따옴표를 이스케이프 사용하여 해제 할 수있는 경우라면 . – TMKCodes

+0

이것은 여러분의 mysqli_real_escape_string이하는 일이다. 그것은 그 방법으로되어있다 – Jacob

+0

나는 그것을 알고있다. 그러나 나는 그것을 다른 사이트에서 사용했고 \는 데이터베이스에 게시되지 않았다. mysqli_real_escape_string을 제거하지 않고 \ 게시 된 것을 막을 수있는 방법이 있습니까? – James

답변

0

이는 mysqli_real_escape_string의 기능입니다. 데이터베이스에 데이터를 넣을 때만 사용해야합니다. $ comment_body를 출력하려고한다면 스 니펫의 마지막 줄을 그냥 둡니다. 더블 이스케이프가 발생하는 경우 magic quotes 구성 지정 문에 의한 것일 수 있습니다.

+0

나는 그것을 알고 있지만 나는 다른 사이트에서 그것을 사용했고 \는 데이터베이스에 게시되지 않았다. mysqli_real_escape_string을 제거하지 않고 \ 게시 된 것을 막을 수있는 방법이 있습니까? 나는 실제로 데이터베이스에 이것을 삽입하고있다. – James

+0

@James 편집을 보아라. 아마 당신을 물고있는 마술 따옴표 일 것이다. – Orangepill

+0

그 다음에 서버가 최신 버전의 PHP로 업데이트되었습니다. \ 데이터베이스를 질의 할 때 \을 숨길 수있는 방법이 있습니까? – James

1

당신은 상황에 관련하여 위생을 사용해야합니다

데이터베이스 사용에 저장 만 mysqli_real_escape_string()를. HTML에 varible을 출력 할 때 htmlspecialchars()으로 이동하십시오.

자동 슬래시의 추가가()으로 인해 이미 PHP의 최신 버전에서 제거 magic_quotes_gpc의의 설정 될 수도 있지만 당신은 은 phpinfo에서 설정을 확인할 수 있습니다;

+0

나는 htmlspecialchars와 nl2br의 결과를 저장하고 싶지 않다는데 동의합니다. – Orangepill

0

이에 마법 따옴표를 가지고 있기 때문에 그것은 아마도 수 있습니다 : magic_quotes_gpc의 그건 당신이 this

관련 문제