2017-08-15 153 views
0

生成一些漂亮的网址,我会拿两个字符串PHP编码到64字符长度

-unix时间戳

-string(长度为16个字符)

是否有某种方式同时使用和编码他们到64字符串的固定长度的字符串?

+0

你打算以后再解码吗,还是你真的认为是哈希? 64个字符有特殊含义还是只是一个任意数字? –

+0

它应该是一个漂亮的网址(example/order/xyz)。 xyz应该总是一个64个字符的字符串,我当然会稍后编码它来检索顺序。 – seikzer

+0

我不确定你可以加密一个字符串到正好64个字符(或为什么正好有64个字符是重要的)。尝试使用一些常见的加密方法,只是追加或附加缺少的字符数量。 –

回答

0

您可以使用str_pad()功能与BASE64_ENCODE的字符串一起:

http://php.net/manual/en/function.str-pad.php

该函数返回的输入字符串填充左,右,或双方指定的填充长度。如果未提供可选参数pad_string,则会用空格填充输入,否则将使用pad_string中的字符填充至极限。

例子:

$string = urlencode(base64_encode($string)); 
$padded = str_pad($tstamp."_".$string."_", 64, "0"); 

您的网址,然后可以像:

/order/timestamp_base64string_00000..../

每个_分离得到你所需要的URL的一部分,你将不得不urldecode()然后base64_decode()的字符串。

我建议你更愿意使用会话(cookie)来维护这些信息从一个页面到另一个页面,或者使用一个可以在URL中使用ID的中间存储系统。

+0

查看我的回答以上:)。 – seikzer

+0

我相应地更新了我的答案。 – Fabien