2017-08-15 148 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