2015-01-16 1 views
-1

저는이 문제에 대해 며칠 동안 고심하고있었습니다. 그리고 저는 정말로 도움을 주실 겁니다. 저는 현재이 마을의 한 정치인을 위해 블로그에서 일하고 있습니다. 기본적으로 PHP에서 개발 한 메신저이므로, 제발 판단하지 마십시오. 그리고 여기 내 문제가 발생합니다 : 내 친구는 자신의 홈페이지에 뉴스와 블로그를 게시하려고합니다. 그래서 PHP를 사용하여이 작업을 수행 할 수있는 약간의 CMS를 만들었습니다. 편집 부분을 제외하고는 모두 완벽하게 작동합니다. 그는 내가 nl2br() 메소드가 정말 도움이되었다고 일부 서식이 원하는 경우데이터베이스 편집 관련 문제 사용자가 입력 한 텍스트

  • 하지만, 두 번째 시간을 편집 할 때 같은 블로그 항목은 모든 <BR> 태그를 두 배로 증가 : 편집에 내 문제가 있습니다 본문에서. 너 내가 어떻게 이걸 더 부드럽게 할 수 있을지 알았어?
  • 다음 문제는 링크 게시에 있습니다. 블로그에 일반 HTML 태그 (< a href = "..."> </>)가있는 링크를 포함시키려는 경우 구문이 잘못되어 SQL에 항상 오류가 발생합니다. 그래서 이것을 방지하기 위해 mysqli_real_escape_string()을 사용했습니다. 그러나 문제를 수정하는 대신 모든 특수 문자의 앞쪽에 물음표가 표시됩니다. 나에게 약간의 도움이 될 사람이 있다면

, 정말 감사하겠습니다! 감사합니다.

+2

"그래서 약간의 CMS를 만들었습니다 ..."오 오. 왜 선반에서 뭔가를 사용하지 않습니까? – tadman

답변

0
  1. HTML 출력시에만 nl2br()을 사용하십시오. 그가 뭔가를 편집하고 싶다면 그대로 두십시오. \n 문자는 어쨌든 텍스트 상자 (내가 사용하는 것으로 가정)에서 구문 분석됩니다.

  2. 그래, 당신은 그들을 탈출해야한다. 나는 당신이 여분의 안전을 위해서 prepared statements을 조사 할 것을 제안한다. UTF-8 (information on how to convert here) 일 때 데이터베이스에서 라틴어 인코딩을 사용하고 있기 때문에 물음표로 표시됩니다.

전체적으로 자신의 CMS에서 작업하는 것은 좋지 않습니다. 어쨌든 당신이 그것을 갈 것이기 때문에, 당신이 직면 할 수있는 다른 보안 구멍을 보도록 권합니다 (here 시작).

UPDATE : 대신 :

<input type="hidden" name="oldtext" value="<?php echo $_text;?>"> 

당신이해야 할 :

<textarea name="oldtext"><?php echo $_text; ?></textarea> 

그리고 당신도 strip_tags 필요하지 않습니다. 또한 utf8_encode이 필요하지 않습니다.

+0

답변 해 주셔서 감사합니다. 글쎄, 개인적으로 보안이 문제를 일으키지 않을 것이라고 생각하지 않습니다. 내가 가진 유일한 문제는이 편집 방법에 있습니다. 1. nl2br() 메서드를 사용하지 않으면 매우 좋지 않은 한 행에 텍스트가 표시됩니다.) 2. 물음표는 잘못된 인코딩이 아니며 문자 그대로 quesionmarks입니다. ? '. – snd1

+0

@ snd1 그냥 텍스트 영역에있는 SQL 데이터베이스에서 텍스트를 바로 입력하면됩니다. – Shahar

+0

스트레이트 양식에서 데이터베이스에 한 줄에 나중에 문자열을 반환합니다 ... – snd1