2011-02-07 3 views
1

htmlフォームは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

魔法の引用符を無効にする - 共有のホストで、あなたのホストが愚かで、あなたがそれを変更/変更したくない場合は、すべての値にstripslashes()を使用してくださいあなたは$_GET, $_POST, $_COOKIEアレイの外に出ます。

補足として、入力値をhtmlspecialchars()経由で送信せずにHTML出力に戻す(PHP_SELFを含む)か、セキュリティ上の問題があります。詳細については、http://en.wikipedia.org/wiki/Cross-site_scriptingを参照してください。

+0

注意してください!これらのバックスラッシュは、SQLインジェクションを防ぐためにあります - 最良の方法ではなく、PHPの方法です... – rdmueller

+2

正確に。 ADDITIONでは '<?= $ _ POST ['input']?>'の代わりに '<?= htmlspecialchars($ _ POST ['input'])?>'を使用します。そうしないと、予期せぬ結果(例えば、出力としてHTMLが無効になるなど)が発生したり、悪意のある意図(XSS)に使用される可能性があります。 – yankee

+1

いいえ、 "PHPのやり方"は、mysqli_real_escape_stringまたはプリペアドステートメントを使用することです。データベースコネクタが提供するものであれば、魔法の引用符は常に間違いです。 – etarion

0

stripslashesも使用できます。あなたがテキストエリアの内容を表示したいページで

、ちょうどあなたが交換する必要がある。もちろん、この

< ? php echo stripslashes($shortcode_name) ? > 

を追加します。私はこのようにこの問題を解決し、長い検索の後

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

$shortcode_nameにショートコードを入力してください。 それはすべてです。 解説

関連する問題