我正在为我的老板构建一个 PHP 内联网。一个简单的客户、订单、报价系统。它将被拒绝从 Internet 访问,并且只能由 3 人使用。我不太关心安全性,因为我关心验证。 Javascript 在所有机器上都被禁用。
我遇到的问题是:
- 员工将有效数据输入包含以下任何
:;[]"'
等的表单。 - 将此数据形成 $_POSTS 到 validationAndProcessing.php 页面,并确定员工是否将数据输入到字段中。如果他们不这样做,他们将被重定向回数据输入页面,他们错过的字段会以红色突出显示。
- htmlspecialchars() 应用于根据之前输入的内容重新填充到表单的所有数据。
- 如果成功将数据输入数据库,然后员工将被带到显示数据页面,然后将表单重新提交到 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
选项应该是您正在寻找的。p>
不过,在正确设置的数据流中,这根本不应该是可能的,除非有来自用户或第 3 方服务的数据可能已经或不可能包含 HTML 编码的字符。 (并不是说我在我的职业生涯中没有构建过一些设置不当的数据流。但这就是为什么我知道为什么它们如此重要,它们是干净的和定义明确的。:-)
关于php - htmlspecialchars() - 如何以及何时使用和避免多次使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2957324/