如果出现错误,则输出表单输入

时间:2012-07-16 09:41:55

标签: php html

所以我总是听到并且读到如果要将其输出回html,则需要清理任何用户输入。我想知道的是,如果出现错误,是否需要清理输出的任何输入?

例如,在我的表单错误处理中,我有它,所以页面重新显示,显示错误消息并告诉用户出了什么问题,但也输出他们的输入作为表单的值,所以他们不必重新输入它,他们可以看到他们出错的地方。我的问题是,当输出为表单字段的值时,我是否需要使用htmlspecialchars()来清理用户的输入?

以下是我现在的输入字段之一。

<label for="email">E-mail Address: <?php if($btnPressed) { checkInput($_POST['email'], true, true); } // Check the validity of the input ?></label>
<input type="text" name="email" id="email" value="<?php if($btnPressed) { echo $_POST['email']; } // Output the user's input if an error occurred ?>" maxlength="50" />

以下是我认为应该做的事情。

<label for="email">E-mail Address: <?php if($btnPressed) { checkInput($_POST['email'], true, true); } // Check the validity of the input ?></label>
<input type="text" name="email" id="email" value="<?php if($btnPressed) { echo htmlspecialchars($_POST['email']); } // Output the user's input if an error occurred ?>" maxlength="50" />

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

是的,您需要通过htmlspecialchars运行数据。

否则你有两个主要问题。

  1. 第三方可以链接(或提交隐藏的表单与JS(因为您使用$_POST他们必须使用此方法))到您的网站发送他们喜欢的任何数据(包括"><script... )作为访问其攻击站点的用户。
  2. 如果用户在其数据中输入"(因为它是拼写错误或因为他们的数据确实包含"字符),当您将其显示回来时它会中断。