我是PHP的新手,但对C,
有很好的理解当我想在我用PHP创建的API上访问一些帖子数据时,我使用:
$_POST['date_set']
获取一个为日期传递的值 - 这一切都很完美,但我读到我应该像这样取出它:
$date_set = trim(urldecode($_POST['date_set']));
此值始终返回00:00:00后的值,该值为存储在我的数据库中的日期。
当我使用 $ _ POST ['date_set'] 直接访问时,我得到了所发布的任何值,例如:2013-08-28 10:31:03
有人能告诉我我搞砸了什么吗?
答案 0 :(得分:2)
你应该尝试一下,
$date_set = $_POST['date_set'].explode(' ');//('2013-08-28 10:31:03').explode(' ')
echo $date_set[1];
或
echo date('H:i:s',strtotime($_POST['date_set'])));
//echo date('H:i:s',strtotime('2013-08-28 10:31:03'));
如果你是非常新的php ,请阅读date()
答案 1 :(得分:1)
您只运行urldecode
数据是URL编码的。 PHP将在填充$_POST
之前对其进行解码,因此您当然不应该使用它。 (如果您正在处理双重编码数据,则可能必须这样做,但正确的解决方案应该是不对数据进行双重编码)。
trim
删除了前导和尾随空格。如果您有一个可以输入恶意空格的自由格式输入,这将非常有用。之后你需要做进一步的健全检查。
答案 2 :(得分:1)
urldecode — Decodes URL-encoded string
Description
string urldecode ( string $str )
Decodes any %## encoding in the given string. Plus symbols ('+') are decoded to a space character.
urldecode:仅用于GET请求。你应该没有使用$ _POST ['date_set']。
答案 3 :(得分:1)
你最好这样做
if(isset($_POST['date_set'])){
$date_set = $_POST['date_set'];
}
然后您可以根据需要使用$ date_set。 如果$ date_set仍然得到00:00:00,则问题来自提供$ _POST值的代码。