strtotime
如果您提供奇怪的信息,将返回false。
echo strtotime(\'<script>\'); // bool(false)
然而,如果你做了你正在做的事情并且嵌套了两个语句,你可能不会得到你所期望的。
echo strtotime(\'+1 day\',strtotime(\'<script>\')); // int(86400)
以及
date
如果给定奇怪的数据,则返回宇宙的开始,即创建之日(1970年1月1日)。
echo date(\'1 F j Y\',strtotime(\'+1 day\',strtotime(\'<script>\')));
所以,我不认为你真的有消毒问题,但它可能不会按你想要的方式工作。
也就是说,为了以防万一,我会去掉不应该在日期字符串中的每个字符。大概
$display_date = preg_replace(\'/[^A-Za-z0-9+]*/\',\'\',$display_date); // assuming that you are encoding the spaces with a "+"
这将在很大程度上削弱注射的效果,但不会给你合理的日期。
我看不到你在向DB发送任何信息。您不应该对页面输出进行清理(虽然清理输出很好),并期望它一直持续到表单处理或链接被单击时。您应该在查询运行之前对此进行清理(并使用prepare
) 但我根本看不到这部分代码。