1

我想在使用 Codeigniter 构建的站点 URL 中传递如下所示的 MySQL 日期时间值。所以日期时间值是例如

2012-05-04 07:41:45

我希望它使用某种编码或字符串转换之王在站点 URL 中传递。正如我已经尝试过使用 php urlencode() 函数但它不起作用。

在 URL 中传递它的原因是因为我正在从与该日期时间相关的数据库中查询一些记录。所以我必须将它作为参数传递给控制器​​,为此我必须在 URL 下传递它。

有什么建议吗?

提前致谢。

4

5 回答 5

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).
}
于 2012-05-10T07:40:24.990 回答
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]);
}
于 2012-05-10T07:32:56.587 回答
1

只需使用strtotime

echo strtotime('2012-05-04 07:41:45');

输出:

1336088505

您也base64_encode可以保留确切的字符串,但我怀疑这真的值得;-)

于 2012-05-10T07:37:35.320 回答
1

为了保留准确的字符串,我有时会将任何非标准 url 查询值从 ASCII 转换为十六进制。在下一页,将十六进制转换为 ASCII。

参考http://www.pgregg.com/projects/php/code/hexstr.phps

在某些情况下,我发现它在传递搜索查询关键字时也很有用。

于 2012-05-10T07:41:04.877 回答
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);
于 2013-01-10T14:52:15.440 回答