2010-05-14 7 views
2

이스케이프 처리되지 않은 문자열에서 mysql_real_escape_string을 사용할 때 데이터베이스의 데이터는 백 슬래시와 함께 저장됩니다.mysql_real_escape_string은 백 슬래시와 함께 데이터베이스에 데이터를 저장합니다

나는 magic_quotes_gpc을 가지고 있는데 왜 이런 일이 일어나고 있는지 모르겠다. 어떤 생각?

수정할 필요가있는 mysql 데이터베이스의 설정이 있습니까?

코드에서 addslashes를 사용하지 않습니다. PHP 언어.

도와주세요.

답변

2

magic_quotes에는 여러 가지 변종이 있으며 모두 매우 침입 적이므로 무시할 수 없습니다. 그 여분의 탈출이 DBMS에 의해 수행되고 있다고 나는 생각하지 않는다.

데이터가 인 것처럼 보이기 전에을 적용하기 전에 mysql_real_escape_string()을 적용했는지 확인 했습니까? 이미 이스케이프 처리가 완료되었을 것입니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 mysql_real_escape_string이 없으면 문자열은 백 슬래시없이 저장되므로 "다음에 저장됩니다"및 \가 \로 저장됩니다. mysql_real_escape_string을 사용할 때만 "\ 저장 됨"으로 저장되고 \는 \\ 으로 저장됩니다. 도와주세요. – pks83

+0

@ pks283 : 데이터가 이미 마법 gpc에 의해 인용 되었기 때문입니다. 그것은 데이터를 위생하는 이상한 방법입니다. 그래서 가장 좋은 해결책은 마법 gpc를 끄고 mysql_real_escape_string()을 적용하는 것입니다. – zerkms

+0

마술 따옴표가 켜져 있지 않습니다. 코드의 다른 부분은 슬래시를 추가하는 것이 었습니다. @ssymbean에게 감사합니다. – pks83

0

대답은 간단합니다. 수정해야 할 설정이 mysql 데이터베이스에 없습니다. 코드/설정입니다.

을 넣었습니다. 두 번 클릭하거나 두 번째 코드를 자르면됩니다. PHP를 지시어 magic_quotes_gpc의 (기본적으로의) 에있을 때

0

위해서 stripslashes()는, 당신은 탈출이 필요합니다 (데이터베이스 등 ) 장소에 데이터를 삽입 수 없습니다. 예를 들어 의 데이터를 HTML 양식에서 직접 출력하는 경우입니다.

<?php 
$str = "Is your name O\'reilly?"; 

// Outputs: Is your name O'reilly? 
echo stripslashes($str); 
?> 

당신 위해서 stripslashes를 사용하는 경우 알려 주시기 바랍니다,에 귀하의 의견 회전을하는 일. 필요한 형식으로 들어갈 수 있습니까? 이것은 입력이 잘못되어 가고 있는지 확인하는 것입니다.

mysql_real_escape_string을 적용하지 않으면 데이터가 blackSlashes없이 저장되고 ... 적용한 후 블랙 슬래시가 발생한다고 말했기 때문에 개인적으로 addslashes를 적용할지 여부를 두 번 확인하십시오.

  1. 몇 가지 질문은 ... 이것은 단지이 현재 함수에서 발생합니까.

  2. magic_quotes_gpc가 켜져 있는지 확인하십시오.
  3. 이 문제의 원인이되는 기능의 일부를 게시 할 수 있습니까?
관련 문제