2012-06-20 3 views
7

나는 이것이 정말로 흔하고 사소한 것처럼 들리지만 여기에 도전하고있다. Zend/Doctrine이있는 웹 사이트가 있으며 백엔드 관리를 위해 ckeditor를 사용합니다. 사이트를 업로드 한 후 편집 테스트 중에 사이트의 룩앤필이 엉망이된다는 것을 깨달았습니다.데이터베이스가 따옴표에 슬래시를 추가하는 것을 방지하는 방법

방화 광의 도움으로, 나는 html 전체에 슬래시가 있음을 확인했습니다. 인라인 에디션 후에는 모양과 느낌이 정상으로 돌아 왔습니다. 너무 많은 파일이 있습니다. mysql에서 데이터를 출력하기 전에 다른 디코딩을 할 생각은 없습니다.

이 문제를 해결하려면 어떤 옵션이 필요합니까? 사이트는 이미 올라와 있으며 이것에 대해 약간의 불편 함을 느낍니다. 아무도 힌트를 줄 수 있습니까? 감사합니다

+4

비밀 닌자 마법 따옴표를 삽입 여러분의 PHP 페이지에이를 추가 할 수 있습니다. – hakre

답변

4

나는 도움을 주셔서 감사합니다. 정말 받아 들여진 해결책은 @Stanislav Palatnik의 해결책이어야합니다. 그냥 내 .htaccess와 작동하지 않았다. 호스팅 서버는 내 public_html에 php.ini를 넣을 정도로 멋져서 나를 바꿀 수있었습니다. 그래서 +1에 @Stanislav Palatnik 그가 문제를 지적했기 때문에. 나는 또한 누군가가 내 상황에서 자신을 발견했을 때 내가 공유 할 것이라고 생각한 재미있는 정보를 발견했다. 같은 페이지에서 누군가가

info from: http://support.godaddy.com/groups/web-hosting/forum/topic/how-to-turn-off-magic_quotes_gpc/ 
Yes – the solution below worked for me: 

(1) First of all do not try to turn off the magic quotes in your .htaccess file, it won’t work on godaddy. 
(2) Second, if you’re running PHP5 on your account, rename your php.ini file to php5.ini, make sure it’s in your root folder. 
(3) Third, make sure all the lines in your php5.ini file end in a semi colon ; 
(4) Fourth, add this line to your php5.ini file: 
magic_quotes_gpc = Off; 

은 magic_quotes_gpc의는 있지만, 다른 사람은 아래 그림을 좋아 aswell이되지 않을 것이라고 말했다 :

magic_quotes_gpc = Off; 
magic_quotes_runtime = Off; 
magic_quotes_sybase = Off; 

희망이 사람을 도왔다[email protected] Palatnik

+1

아니요, 실제로 이것은 GoDaddy와 같은 공유 호스트 서버에서 올바른 대답입니다. 매력처럼 작동합니다! – Sablefoste

9

magic_quotes_gpc 일 수 있습니다. 꺼져 있는지 확인할 수 있습니까? http://php.net/manual/en/security.magicquotes.disabling.php

는 GPC에 대한의 magic_quotes 상태 (Get/Post/Cookie) 동작을 설정 : 여기

이 기능을 해제하는 방법입니다. magic_quotes를이, 모든 '(작은 따옴표), "(큰 따옴표), \ (백 슬래시)에 있으며 NUL의 경우 자동으로 백 슬래시로 이스케이프됩니다.

을 또한, 당신은 준비된 문을 사용하고 있습니까? PHP의 PDO/MySQLI 자동으로 이스케이프 처리됩니다. 사용중인 쿼리 유형에 따라 달라집니다.

+0

안녕하세요. 친절하게 답변 드리겠습니다. 불행히도, 여기에 내부 서버 .any 젠드 전문가를 추가 하시겠습니까? application.ini를 추가 할 수 있습니까? –

+0

정확히 무엇이 문제입니까? –

5

데이터베이스에 삽입되기 전에 데이터가 두 번 이스케이프 처리 된 것처럼 보입니다. 데이터를 삽입하기 전에 mysql_real_escape_string 또는 addslashes을 사용하고 있습니까? 만약 그렇다면 데이터를 삽입하기 전에 stripslashes를 사용하고 싶을 것입니다 :

mysql_real_escape_string(stripslashes($data)); 

또는 다른 데이터베이스에서 데이터를 가져 후 이론적 위해서 stripslashes를 호출 할 수 있습니다

stripslashes($data); 

두 번째 방법은 그래도 덜 바람직하다. 데이터를 데이터베이스에 올바르게 저장하는 것이 좋습니다. 이것이 마술이다 경우

2

이 문제를 인용하고 난 당신이 만 application.ini에 대한 액세스 권한을 가진 기억으로, 다음과 같은 추가하고는이 여전히 사용자/사용자 그룹을 필요로

phpSettings.magic_quotes_gpc = 0 
phpSettings.magic_quotes_runtime = 0 

을하려고 줄 수도)

0
<?php 
    if (get_magic_quotes_gpc()) { 
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); 
while (list($key, $val) = each($process)) { 
    foreach ($val as $k => $v) { 
     unset($process[$key][$k]); 
     if (is_array($v)) { 
      $process[$key][stripslashes($k)] = $v; 
      $process[] = &$process[$key][stripslashes($k)]; 
     } else { 
      $process[$key][stripslashes($k)] = stripslashes($v); 
     } 
    } 
} 
unset($process);} 
?> 

특별 감사는 PHP <5.4 스타일입니다/업데이트 쿼리 : 싸움

관련 문제