-1

私のプロムレムの例については、このリンクにアクセスしてください: http://jflaugher.mystudentsite.net/cmweb241/cmweb241_lab2.html

エコーで htmlspecialchars を使用する際に問題が発生していることを除けば、すべて正常に動作しています。HTML文字ではなく、エンティティがエコーに表示されることを望んでいます。エコー内に htmlspecialchars を配置しようとしましたが、段落タグが表示されます。エコーで htmlspecialchar を利用し、段落タグにエコーを表示するにはどうすればよいですか? 私はPHPに非常に慣れていないため、しばらくこれに取り組んできましたが、どこにも行きませんでした。

たとえば、「&」を入力すると、それがエコー バックされます。「&」の代わりに、エンティティ & をエコーする必要があります。

 <?php
  $username = htmlspecialchars(str_replace(array("'", "\""), "", $_POST['username']));
  $password = htmlspecialchars(str_replace(array("'", "\""), "", $_POST['password']));
  $comment = htmlspecialchars(str_replace(array("'", "\""), "", $_POST['comment']));

  echo  "<p> Your Username is: $username .</p> ";
  echo " <p>Your Password is: $password . </p>";
  echo " <p>Your Comment was: $comment . </p>";

 ?>
4

4 に答える 4

2

入力するとします&
htmlspecialcharsこれをに変え&amp;ます。
&amp;はのHTMLエンティティで&あるため、ブラウザで結果を表示すると。が表示されます&

これはの通常の目的であり、メディア(HTML)に適切にエスケープすることにより、表示されている文字htmlspecialcharsを保持します。

&可視化する場合&amp;は、ブラウザがを受信する必要があります&amp;amp;htmlspecialcharsそれを行うには2回適用します。

htmlspecialchars(htmlspecialchars($_POST['username']))

たぶん、The Great Escapism(または:テキスト内のテキストを操作するために知っておくべきこと)は、トピックをよりよく理解するのに役立ちます。

于 2013-02-08T17:43:53.343 に答える
1

エンティティを表示したい場合は、htmlspecialchars()2 回適用することができます。これにより、すべてがオンに&なり&amp;&amp;amp;エンティティ自体が表示されます。

<pre></pre>別の方法は、出力をタグでラップすることです。

于 2013-02-08T17:40:14.543 に答える
1

これが何を意味するのかわかりません:

HTML文字ではなく、エンティティがエコーに表示されることを望んでいます。

エンティティを Web ページに表示したいということですか? htmlspecialchars文字をエンティティに変換していますが、ブラウザはそれらのエンティティを文字として表示します。

ブラウザでエンティティを実際に表示したい場合は、値をダブルエスケープできます。

$username = htmlspecialchars(htmlspecialchars(str_replace(array("'", "\""), "", 
                             $_POST['username'])));

しかし、それがあなたが行っているエクササイズの目的だとは思いません。

于 2013-02-08T17:38:52.650 に答える
0

このアプローチを試してください:

<?php
$string = "<tag>&";

$string = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
print $string;

それは印刷されます:

&lt;tag&gt;&amp;

HTML/PHP で XSS を防ぐ方法は?

于 2013-02-08T17:46:03.340 に答える