テキスト入力を受け入れるフォームがあります。&や;などの文字を受け入れられるようにしたいと思います。および>および<。これらは、ユーザーが提供するデータに役立つ文字です。たとえば、ユーザーに次のように言ってもらいたい
アンパサンド(&)は&としてエンコードされます(プレビューから、ここではそれもできません。アンパサンド(&)は&amp;としてエンコードされているように見えますが、amp;amp;と入力する必要がありました。アンパサンドの後、正しく表示されます。)(ところで、プレビューはかっこいいですが、スクリプトが有効になっているユーザーには期待できません)
データを解析し、問題が発生した場合は、編集と再送信のために、同じフィールドに事前に入力された同じフォームでユーザーのエントリをユーザーに提示します。
生データを提示すると、ブラウザによって敵対的な入力(スクリプトやHTMLなど)が実行されるリスクがあります。ただし、(htmlspecialcharactersなどを介して)フィルタリングすると、ユーザーは入力した文字(たとえば、アンパサンド)(の表現)が表示されますが、再送信すると、=実際に=送信されます。置換(この場合は&amp;のように見えます)。これには、アンパサンドが含まれていることがわかります。それでも入力に問題がある場合は、編集のために再度表示され、置換のレベルがさらに深くなります。
ユーザーデータは、ユーザーが実際に送信したものがサニタイズされたバージョンのデータと同一である場合にのみ受け入れられます。これは、サーバー上のテキストファイルと、Webサイトの背後にある組織に送信される電子メールに送信されます。
「答えられる質問」は「これも可能か」だと思います。
ホセ
編集:
<?php
$var=$_GET["test2"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Input Escape Test</title>
</head><body>
The php parser would store the following input:<br>
<?php echo $var ?>
<br>
<form method="get" action="test.php"><p>
<label for "test2">Test - question five: <br>type in a character on the first line<br>and its HTML entity on the second line.
<textarea name="test2" cols="50" rows="3"><?php echo $var; ?></textarea><br/>
<input type="submit"/>
</p></form>
</body></html>
結果は、ユーザーがアンパサンドとアンパサンドセミコロンで質問に答えようとするフォームになります。それが拒否された場合(たとえば、他の不正な文字が原因で)、ユーザーには、削除された文字を除いた入力が返されます。ただし、アンプのセミコロンも表示されません(ソースには含まれていますが)。次に、ユーザーは表示された結果に別のアンプセミコロンを追加しようとします。
ユーザーがアンパサンドセミコロンが表示されるのを確認する唯一の方法は(入力が拒否された場合)、アンパサンドセミコロンとセミコロンを入力することです。
最後に満足しました。ユーザーは[送信]をもう一度クリックすると、アンプのセミコロンが再び消えたように見えます。ユーザーは、自分の(送信された)回答がどのように保存されるかを知りません。
ユーザーが次のように入力できるようにします。アンパサンドセミコロン。拒否された場合はアンパサンドセミコロンを参照し、受け入れた場合はアンパサンドセミコロンを保存します。
ホセ