PHP随机URL名称(短URL)
发布时间:2020-12-13 16:39:14 所属栏目:PHP教程 来源:网络整理
导读:在使用像JSFiddle这样的网站之后,我注意到他们自动生成由各种大小写字符组成的随机和唯一的URL. 我们可以从我们的预订页面中受益.怎么做 这不是随机的,根据您的数据库记录的ID. 怎么运行的: 基本上你有一个字符串是唯一的,但它可以解密代表一个数字,你应该
在使用像JSFiddle这样的网站之后,我注意到他们自动生成由各种大小写字符组成的随机和唯一的URL.
我们可以从我们的预订页面中受益.怎么做
这不是随机的,根据您的数据库记录的ID.
怎么运行的: 基本上你有一个字符串是唯一的,但它可以解密代表一个数字,你应该把它看作一个简短的加密/解密. 您有一个函数可以使用唯一的ID,然后从该ID创建一个唯一的“短字符串”,然后可以反转该过程以从短字符串中获取唯一的ID. 这是一个我已经找到一个网站的剪辑: function alphaID($in,$to_num = false,$pad_up = false,$passKey = null) { $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; if ($passKey !== null) { /* Although this function's purpose is to just make the * ID short - and not so much secure,* with this patch by Simon Franz (http://blog.snaky.org/) * you can optionally supply a password to make it harder * to calculate the corresponding numeric ID */ for ($n = 0; $n<strlen($index); $n++) { $i[] = substr( $index,$n,1); } $passhash = hash('sha256',$passKey); $passhash = (strlen($passhash) < strlen($index)) ? hash('sha512',$passKey) : $passhash; for ($n=0; $n < strlen($index); $n++) { $p[] = substr($passhash,1); } array_multisort($p,SORT_DESC,$i); $index = implode($i); } $base = strlen($index); if ($to_num) { // Digital number <<-- alphabet letter code $in = strrev($in); $out = 0; $len = strlen($in) - 1; for ($t = 0; $t <= $len; $t++) { $bcpow = bcpow($base,$len - $t); $out = $out + strpos($index,substr($in,$t,1)) * $bcpow; } if (is_numeric($pad_up)) { $pad_up--; if ($pad_up > 0) { $out -= pow($base,$pad_up); } } $out = sprintf('%F',$out); $out = substr($out,strpos($out,'.')); } else { // Digital number -->> alphabet letter code if (is_numeric($pad_up)) { $pad_up--; if ($pad_up > 0) { $in += pow($base,$pad_up); } } $out = ""; for ($t = floor(log($in,$base)); $t >= 0; $t--) { $bcp = bcpow($base,$t); $a = floor($in / $bcp) % $base; $out = $out . substr($index,$a,1); $in = $in - ($a * $bcp); } $out = strrev($out); // reverse } return $out; } 例 alphaID(9007199254740989); //-> PpQXn7COf alphaID('PpQXn7COf',true); //-> 9007199254740989 这里有一个脚本链接:https://github.com/kvz/deprecated/blob/kvzlib/php/functions/alphaID.inc.php (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |