htmlentities不转换HTML标签

时间:2014-07-23 14:47:31

标签: php forms validation html-entities

当我提交表单时,PHP会像我写的那样回应标签,而不是将它们转换为htmlentities。有什么问题?

PHP:

<?php

$name = htmlentities(substr($_POST["name"], 0, 100), ENT_QUOTES);
$email = htmlentities(substr($_POST["email"], 0, 100), ENT_QUOTES);
$msg = htmlentities(substr($_POST["message"], 0, 500), ENT_QUOTES);

echo ($name.'<br>'.$email.'<br>'.$msg);

HTML:

  <html>

  <body>

      <form role="form" action="test.php" method="POST">

            <p>Name:<input type="text" placeholder="Name" maxlength="100" name="name"></p>

            <p>Email address:<input type="text" placeholder="Email" maxlength="100" name="email"></p>

            <p>Message:<textarea rows="4" name="message" placeholder="Message" maxlength="500"></textarea></p>

              <input type="submit" value="submit">

        </form>

  </body>

  </html>

1 个答案:

答案 0 :(得分:3)

  1. 您输入文字<example>
  2. 您提交给PHP
  3. PHP转换为文本&lt;example&gt;
  4. 浏览器获取包含HTML源代码&lt;example&gt;
  5. 的HTML文档
  6. 浏览器解析HTML并:
    1. &lt;视为在文档中显示<的说明
    2. example视为要显示的文字
    3. &gt;视为在文档中显示>的说明
  7. 如果htmlentities无效,那么<example>将被视为未知标记,您将看不到任何内容。

    如果您要转换为HTML实体,然后显示 HTML文档中的实体 ,那么您需要通过htmlentities <运行它们强>两次