我已经阅读了关于这个主题的大约5-10个不同的帖子,但没有一个给出一个明确的例子。他们解释了背景故事。
示例:
http://wwwurl.com/1将为http://wwwurl.com/ASd234s 再次 http://wwwurl.com/5000000将是http://wwwurl.com/Y2v0R4r
我能否获得一个明确的功能代码示例来完成这项工作,谢谢。
答案 0 :(得分:0)
一个非常愚蠢的例子 - 使用例如substr(md5($id), 10, 15)
,其中$ id是您的1-500000记录ID号。在32个字符的哈希码中,在位置10和15之间生成相同哈希的概率(但您也可以使用位置24-28等)限制为零...
保存映射ID< - >也会更好。 HASH到DB表,可以轻松找到基于URL的相关记录。
整个源代码 - 基于URL的哈希创建,URL重写,映射保存和记录检索是一个非常复杂的问题,可以在数千种变体中实现,主要取决于程序员的技能,经验以及他正在实施的系统这进入......
答案 1 :(得分:0)
要将id编号减少为较短的字符串,请转换为base 35 ....
$short_id=base_convert($id, 10, 35);
如果你想让它更难以预测序列是什么,请将其填充并用已知字符串填充xor:
function shortcode($id)
{
$short_id=str_pad($short_id, 4, '0', STR_PAD_LEFT);
$final='';
$key='a59t'; // 500000 = 'bn5p'
for ($x=0; $x<strlen($short_id); $x++) {
$final=chr('0') | (ord(substr($short_id, $x, 1)) ^ ord(substr($key, $x, 1));
}
return $final;
}
要获得原始身份证,请撤消该流程。