我想在使用Codeigniter构建的站点URL中传递如下所示的MySQL Datetime值。 所以datetime值是例如。
2012-05-04 07:41:45
我希望它可以使用一些编码或字符串转换功能在站点URL中传递。 因为我已经尝试过使用php urlencode()函数,但它无法正常工作。
在URL中传递此内容的原因是因为我正在查询与该Datetime相关的数据库中的某些记录。所以我必须将它作为参数传递给Controller,为此我必须在URL下传递它。
有什么建议吗?
提前致谢。
答案 0 :(得分:3)
易:
function receiving_function($time)
{
$date = date("Y-m-d h:i:s", $time); // Format this however you want the data
}
function sending_data()
{
$date = strtotime("2012-05-04 07:41:45");
redirect ('/yourcontroller/receiving_function/'.$date).
}
答案 1 :(得分:1)
如果您的日期时间在时间戳边界内,则可以将其转换为Unix时间戳:
function mysql2timestamp($datetime){
$val = explode(" ",$datetime);
$date = explode("-",$val[0]);
$time = explode(":",$val[1]);
return mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);
}
答案 2 :(得分:1)
只需使用strtotime
echo strtotime('2012-05-04 07:41:45');
输出:
1336088505
您也可以base64_encode
保留确切的字符串,但我怀疑这是值得的; - )
答案 3 :(得分:1)
为了保留确切的字符串,我有时会将任何非标准的url查询值从ASCII转换为十六进制。在下一页上,将十六进制转换为ASCII。
请参阅http://www.pgregg.com/projects/php/code/hexstr.phps
在某些情况下,我发现在传递搜索查询关键字时也很有用。
答案 4 :(得分:1)
“有一个应用程序!”
Codeigniter提供了一个方便的加密类 - 没有对base64的主要改进,但好处是你可以选择你想要的密码。
你可以不从$ _GET收集而不是传入URI吗?
$this->load->library('encrypt');
$datetime = "2012-05-04 07:41:45";
$encrypted_string = $this->encrypt->encode($datetime);
$hello_again = $this->encrypt->decode($encrypted_string);