2011-02-07 5 views
1

html 양식은 textarea 입력을 허용하며 입력 값을 표시 할 때 입력 값을 textarea에 넣기 위해 $ _POST 값을 사용하고 있습니다. 예를 들면.양식 입력에서 를 (를) 추가하지 못하게하려면 어떻게해야합니까?

<html> 
<?php if($_POST['input'){ 
<form method="post" action="<?=$PHP_SELF?>"> 
<textarea name="input" cols="60" rows="20"><?=$_POST['input']?></textarea> 
<input type="submit" value="Test it"> 
</form> 
<?php 
} else { 
?> 
Please copy in a text of your choice 
<br /><br /> 
<form method="post" action="<?=$PHP_SELF?>"> 
<textarea name="input" cols="60" rows="20"></textarea> 
<input type="submit" value="Test it"> 
</form> 
</html> 

모든 것은 그 모든 작은 따옴표에 추가 백 슬래시 '\', 큰 따옴표를 제외하고 잘 작동합니다. 백 슬래시가 추가되지 않도록 설정하려면 어떻게해야합니까?

답변

2

마법 인용문 사용 안함 - 공유 호스팅을 사용 중인데 hoster가 어리 석고 바꿔서는 안되는 경우 (그 이유가 어리석은 이유를 보려면 페이지 참조) 모든 값에 stripslashes()을 사용하십시오 당신은 $_GET, $_POST, $_COOKIE 배열을 나간다.

참고로 htmlspecialchars()을 통해 전송하지 않고 입력 값을 다시 출력 (PHP_SELF 포함)하여 HTML 출력에 반향시키지 마십시오. 그렇지 않으면 보안 문제가 있습니다. 자세한 내용은 http://en.wikipedia.org/wiki/Cross-site_scripting을 참조하십시오.

+0

조심하세요! 그 백 슬래시는 SQL 인젝션을 막기위한 것입니다 - 최선의 방법은 아니지만 PHP 방법은 ... – rdmueller

+2

정확합니다. 추가에서는''대신''를 사용하십시오. 그렇지 않으면 예기치 않은 결과가 발생하거나 (예 : 출력과 같이 html이 잘못됨) 악의적 인 의도 (XSS)로 사용될 수도 있습니다. – yankee

+1

아니요 "PHP 방식"은 mysqli_real_escape_string 또는 준비된 명령문이나 데이터베이스 커넥터가 제공하는 것을 사용하는 것입니다. 마법 인용은 항상 실수입니다. – etarion

0

stripslashes을 사용할 수도 있습니다.

<textarea name="input" cols="60" rows="20"><?php echo stripslashes($_POST['input']); ?></textarea> 
2

이 같은이 문제 해결 긴 검색 후 :

페이지에서 사용자가 텍스트 영역의 콘텐츠를 표시하려면, 당신은 교체해야 물론이

< ? php echo stripslashes($shortcode_name) ? > 

추가 $shortcode_name에 귀하의 짧은 코드를 입력하십시오. 그게 전부입니다. 솔벤트

관련 문제