这是我现在拥有的。
$date = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['date']))));
有人告诉我,在将$date
传递给strtotime()
之前,我需要确保{{1}}是安全/合法的。我怎么做?我抬头看了http://us3.php.net/strtotime,但它确实没有告诉我我在想什么。
有人可以更详细地向我解释如何清洁提交到strtotime吗?
答案 0 :(得分:5)
事先没有理由对这个价值进行消毒。可能发生的最糟糕的事情是时间无效且strtotime()
返回false(您还可以使用它来检查日期字符串是否有效)。
此外,没有理由修剪和转义date( 'Y-m-d' )
函数的返回值:它永远不会返回带尾随空格的值或任何应该转义的值。
答案 1 :(得分:3)
这远远超出你需要做的事情。 strtotime()函数应该执行您需要的所有“验证” - 它将返回有效日期,或者不返回。之后,您不需要修剪或转义date()的输出 - 输出由您确定。这就是我要做的事情:
$date = strtotime($_POST['date']);
if($date) {
$date = date('Y-m-d', $date);
//do stuff based on valid date
}
else {
//handle invalid date.
}