我想知道执行以下过程是否有任何缺点或不良做法:
- $user_input -> htmlentities($user_input) -> mysql_escape($user_input) -> 将 $user_input 插入数据库
- 从数据库中选择 $user_input -> echo $user_input
而不是执行以下操作:
- $user_input -> mysql_escape($user_input) -> 将 $user_input 插入数据库
- 从数据库中选择 $user_input -> echo htmlentities($user_input)
当我们在很多地方显示相同的 $user_input 时,感觉在输入上更有效,这样做有什么缺点/不好的做法/利用能力吗?
干杯!
问题的良好回复来自:
@Matt:一般来说,为了保持内容的可读性和可维护性,尽量将其存储在尽可能接近原始、未经过滤的内容的位置。这取决于两件事: 是否有任何其他人/程序要引用此数据? 数据是否需要易于编辑?
@Sjoerd:如果您想将数据显示为 HTML 以外的其他内容,例如CSV 下载、PDF 等。
最佳答案
这取决于两件事:
- 是否有任何其他人/程序会引用此数据?
- 数据是否需要易于编辑?
方法一的优点是,在一个地方使用数据的情况下,每次都会调用htmlentities()
,你会省去这一步。
但是,如果 HTML 数据非常大,这只会留下显着的改进。一般来说,为了保持内容的可读性和可维护性,请尽量将其存储在尽可能接近原始、未过滤内容的位置。
事实上,您可能会发现无论如何存储 HTML 都是错误的。存储类似 Markdown 的内容可能会更好并在查看时将其简单地转换为 HTML。
关于PHP htmlentities() 在数据库插入之前输入,而不是输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3023728/