2012-04-28 3 views
-2

최근에 myysql/php를 사용하는 뉴스 시스템을 추가했지만 완벽하게 작동하지만 html을 추가 할 때 오류가 발생합니다. 예를 들어PHP mysql news error

나는 그것을 추가 할 것입니다 YouTube 동영상을 추가하는 경우/또는 \

나는 아래의 데이터베이스에 html로 저장하는 코드에 어떻게 변경합니까?

+3

코드를 읽을 수 있도록 포맷하십시오. 이것은 당신이 도움을 청하는 사람들에 대한 존경 일뿐입니다. –

답변

2

이 일부 strip되지 않은 슬래시보다 더 아무것도 할 수 있습니다

이것은 HTML이 후처럼 보이는 끝나는 것입니다. 데이터를 저장하기 전에 슬래시를 이스케이프 처리하고있는 것으로 보입니다 (좋은 작업이지만!). 데이터를 표시하려고 할 때 슬래시가 제거되지 않는 것처럼 보입니다. 메아리 때 밖으로 다음보십시오 :

echo stripslashes($myrow['title']); 
+0

그건 속임수 였어, 조안 한. 고맙습니다! – NickkN

+0

도와 드리겠습니다. @HilraJannar. StackOverflow를 처음 접했을 때 가장 잘 나온 답을 받아 들일 것을 권장합니다. 이상은 당신과 대답의 저자 모두에게 더 많은 평판을 부여합니다. – Sampson

+0

@HilraJannar이 답변을 사용하지 마십시오. 이 녀석은 단서가 없습니다. ** 데이터베이스에서 데이터를 가져올 때 슬래시를 제거해야합니다 **. 즉, 데이터를 다른 곳에서 버릇 없게 만들었 기 때문에 과도한 슬래시를 추가하지 않도록 코드를 만들어야합니다. 증상이 아니라 사망을 치료하십시오. –

1

당신이 가장 가능성이 활성화 magic quotes을 얻었다. 그렇다면 이것을 확인하고 이에 따라 stripslashes을 확인하십시오.

$title = mysql_escape_string($_POST['title']);

참고 :

PHP_SELF 당신이해야 htmlentites 그 또는 XSS 취약점입니다

function magic_quotes_strip($value){ 
    if(get_magic_quotes_gpc()){ 
     if(is_array($value)){ 
      return array_map('stripslashes',$value); 
     }else{ 
      return stripslashes($value); 
     } 
    }else{ 
     return $value; 
    } 
} 
//Strip all slashes from post array before handling 
$_POST = magic_quotes_strip($_POST); 

는 두 번 이스케이프의 걱정없이, 일반 mysql을 입력하기 전에 탈출을 그렇게 그냥 제거하십시오 action=""

$_SESSION[usr_name]usr_name을 상수로 사용하면 $_SESSION['usr_name']

+0

마법 따옴표가있는 경우에는 mysql뿐만 아니라 전체를 슬래시로 제거해야합니다 대지. 쿠키의 과도한 슬래시는 HTML에서와 같이 나쁩니다. 연결 한 기사가 알려줍니다. –

+0

그렇습니다. 따라서 '입력에 따라 stripslashes가 나온다'는 의미입니다 **! ** 출력은 이전에 POST로 호스팅 했었고 모든 POST/GET 입력에 대한 간단한 사용자 함수가 충분했습니다. 쿠키는 어디에 언급합니까? ? –

+0

쿠키를 언급합니다. mysql 문자열로가는 데이터뿐만 아니라 모든 버릇없는 데이터에서 마법 슬래시를 제거해야합니다. 자세한 내용은 http://php.net/manual/en/security.magicquotes.php를 참조하십시오. –

0

코드에 과도한 슬래시가 추가되는 곳이 있습니다.
이 장소를 찾아 과도하게 깎아 내야합니다.

이것은 악명 높은 magic_quotes_gpc ini 설정 일 수 있습니다. 설정 파일의 맨 위에서 위의 링크 코드를 사용하여 사용하지 않거나 사용 불가능한 슬래시를 제거해야합니다.

이것은 어리석은 쓸모없는 "궁극적 인 정리 기능"일 수 있습니다. 당신은 그것을 찾아야하고 그것을 제거해야합니다.

이것은 어딘가에있을 수 있습니다 (예 : generate_wysiwyg() 함수 또는 기타 내부).

기억해 두십시오 : 단지 stripslashes()를 수행하는 것은 추악한 버팀목이지만 데이터를 한 곳에서만 수정하여 다른 곳에 버려두는 것입니다.