2011-10-04 7 views
-3

mysql DB에서 문자열을 추출하고 작업하여 <br /> 태그를 추가하려고합니다. 하지만 작동하지 않는 이유는 무엇입니까wordwrap이 작동하지 않습니다.

if(mysql_num_rows($res)){ 
    echo '<div id="contents">'; 
    while($row = mysql_fetch_array($res)){ 
    $UserName = $row['UserName']; 
    $Message = $row['Message']; 

    $MessageW = wordwrap($Message, 10, "<br />\n"); 

     echo '<div><strong>' . 
      $UserName . ': </strong>' . 
      $MessageW . '</div>'; 
    } 
    echo '</div>'; 
    } 

아무도 도와 줄 수 있습니까?

+6

"그것은 작동하지 않습니다"입니다 * 결코 * 좋은 오류 설명. 정확히 무엇이 잘못 되었습니까? –

+0

당신을 도울 수있는 정보가 충분하지 않습니다. 적어도 파트가 작동하지 않는 부분을 자세히 설명해야하며 아마도 파트를 쿼리에 포함시켜야 할 것입니다. – Eli

+0

문자열이 단어 랩핑의 유무에 관계없이 똑같이 나오지 않았습니다. – 1ftw1

답변

9

메시지의 모든 단어의 길이는 10 자입니다. 기본적으로 PHP는 단어를 자르지 않으므로 true의 네 번째 매개 변수를 전달하여 단어 중간에 강제로 자릅니다.

또한 코드는 XSS에 취약합니다. 이 문제를 해결하려면 먼저 wordwrap 그것은, 다음 줄 바꿈을 변환 마지막으로 HTML로 결과를 변환하지 않고 :

$MessageW = wordwrap($Message, 10, "\n", true); 
$MessageW = htmlentities($MessageW); 
$MessageW = nl2br($MessageW); 
+0

거기에 마지막 단어 앞에자를 수있는 방법이 있습니다. 그래서 단어를 자르지 않습니다. – 1ftw1

+0

@ 1ftw1 그렇습니다. 그러나 10 자보다 큰 줄은 맞지 않을 것이고, 새로운 것과 함께 다시 올 것입니다. 질문 "왜 내 랩 어 랩이 작동하지 않습니까?" =/ – Lekensteyn

+0

Lekensteyn에게 큰 도움을 주셔서 감사합니다. XSS는 DB에서 읽는 것만으로도 여기에 큰 영향을 줍니까? – 1ftw1

관련 문제