php - htmlspecialchars() - 如何以及何时使用和避免多次使用

标签 php mysql html validation forms

我正在为我的老板构建一个 PHP 内联网。一个简单的客户、订单、报价系统。它将被拒绝从 Internet 访问,并且只能由 3 人使用。我不太关心安全性,因为我关心验证。 Javascript 在所有机器上都被禁用。

我遇到的问题是:

  1. 员工将有效数据输入包含以下任何:;[]"'等的表单。
  2. 将此数据形成 $_POSTS 到 validationAndProcessing.php 页面,并确定员工是否将数据输入到字段中。如果他们不这样做,他们将被重定向回数据输入页面,他们错过的字段会以红色突出显示。
  3. htmlspecialchars() 应用于根据之前输入的内容重新填充到表单的所有数据。
  4. 如果成功将数据输入数据库,然后员工将被带到显示数据页面,然后将表单重新提交到 validationAndProcessing.php 页面。

我的问题是:

如果员工在第 1 步中重复输入任何数据,则每次将 htmlspecialchars() 应用于数据时,他们都会在第 1 步和第 4 步之间继续移动。

So that:- &
becomes:- &
becomes:- &
becomes:- &

等..

如何停止将 htmlspecialchars() 多次应用于已清理的数据?

谢谢, 亚当

最佳答案

检查 manual page on htmlspecialchars :

string htmlspecialchars ( string $string [, int $quote_style = ENT_COMPAT [, string $charset [, bool $double_encode = true ]]] )

$double_encode 选项应该是您正在寻找的。

不过,在正确设置的数据流中,这根本不应该是可能的,除非有来自用户或第 3 方服务的数据可能已经或不可能包含 HTML 编码的字符。 (并不是说我在我的职业生涯中没有构建过一些设置不当的数据流。但这就是为什么我知道为什么它们如此重要,它们是干净的和定义明确的。:-)

关于php - htmlspecialchars() - 如何以及何时使用和避免多次使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957324/

相关文章:

mysql - 选择每个学生分数四舍五入到 10 的部分名称

php - 最快与最好 ​​- 唯一索引或检查是否存在

css - Div 以相反的顺序出现

javascript - 使用 JavaScript 的 Directions Google Map API

php - 测试 Facade 时无法重新声明::shouldReceive()

javascript - 在保存时通过 Ajax 运行 UPDATE 查询

php - 显示用户表和潜在客户表中的数据

php - Route::currentRouteAction 在 laravel 5.4 中不起作用

当查询很大时MySQL无法正常工作

javascript - Jquery - 不透明度切换和指针操作取消不适用于移动设备