rinald_未来往事

URL数字安全码随机拼组生成及校验

PHP
URL数字随机重组校验,URL地址id随机加密生成及逆向校验 URL加密解密
PHP版本:
  1. echo geturl(888);  
  2. //输出结果:http://fity.cn/post/984-1186-187-2698712709009 //每次刷新数值都会全部改变。  
  3. //实现原理:对数字888重组后为999,然后999+187=1186。可应用到一些防刷、防采页面,如投票防刷(id数字不公开全在服务端处理好)。  
  4.   
  5. /** 地址拼组 */  
  6. function geturl($a){  
  7.   return $href = "http://fity.cn/post/".renum($a);  
  8. }  
  9. /** 数字重组  未来往事博客:http://fity.cn */  
  10. function renum($a){  
  11.   $n = numScaler($a);  
  12.   $c = SetRandNum(strlen($a));  
  13.   $d = SetRandNum(strlen($a));  
  14.   $n = intval($n) + intval($d);  
  15.   $b = getMillisecond();  
  16.   $b = numScaler($b);  
  17.   return $c."-".$n."-".$d."-".$b;  
  18. }  
  19. /** 数字换算 */  
  20. function numScaler($a){  
  21.   $str=str_split((string)$a);  
  22.   $b="";  
  23.   foreach($str as $key => $val){  
  24.     switch($val){  
  25.       case "0":$b .="0";break;  
  26.       case "1":$b .="2";break;  
  27.       case "2":$b .="5";break;  
  28.       case "3":$b .="8";break;  
  29.       case "4":$b .="6";break;  
  30.       case "5":$b .="1";break;  
  31.       case "6":$b .="3";break;  
  32.       case "7":$b .="4";break;  
  33.       case "8":$b .="9";break;  
  34.       case "9":$b .="7";break;  
  35.     }  
  36.   }  
  37.   return $b;  
  38. }  
  39. /** 随机值生成  未来往事博客:http://fity.cn */  
  40. function SetRandNum($n){  
  41.   $a="";  
  42.   for($i=0;$i<$n;$i++){  
  43.     $a .= floor(random()*10);  
  44.   }  
  45.   return $a;  
  46. }  
  47. /** 0.0-1.0随机值生成 */  
  48. function random(){  
  49.     return mt_rand() / (mt_getrandmax() + 1);  
  50. }  
  51. /** 获取当前时间戳,精确到毫秒 */  
  52. function getMillisecond() {  
  53.   list($t1$t2) = explode(' ', microtime());       
  54.   return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);  
  55. }  

jquery版本:
  1. <a id="888" style="cursor:pointer" onclick="geturl(this)" target="_blank" title="未来往事博客测试文章">未来往事博客测试文章</a>  
  2. <input type='hidden' name='randcode' id='randcode' value='1483953255201' />  
  3.   
  4. <script src="https://code.jquery.com/jquery-1.8.2.min.js" integrity="sha256-9VTS8JJyxvcUR+v+RTLTsd0ZWbzmafmlzMmeZO9RFyk=" crossorigin="anonymous"></script>  
  5. <script type="text/javascript">  
  6. function geturl(a){  
  7.   a.href="http://fity.cn/post/"+renum(a.id)  
  8. }  
  9. /** 数字重组  未来往事博客:http://fity.cn */  
  10. function renum(a){  
  11.   var n=numScaler(a);  
  12.   var c=SetRandNum(a.length);  
  13.   var d=SetRandNum(a.length);  
  14.   n=parseInt(n)+parseInt(d);  
  15.   var b = $("#randcode").val(); //获取含毫秒的时间戳  
  16.   b=numScaler(b.toString());  
  17.   return c+"-"+n+"-"+d+"-"+b;  
  18. }  
  19. /** 数字换算 */  
  20. function numScaler(a){  
  21.   var b="";  
  22.   $.each(a,function(i,e){  
  23.     switch(e){  
  24.     case"0":b+="0";break;  
  25.     case"1":b+="2";break;  
  26.     case"2":b+="5";break;  
  27.     case"3":b+="8";break;  
  28.     case"4":b+="6";break;  
  29.     case"5":b+="1";break;  
  30.     case"6":b+="3";break;  
  31.     case"7":b+="4";break;  
  32.     case"8":b+="9";break;  
  33.     case"9":b+="7";break  
  34.     }  
  35.   });  
  36.   return b  
  37. }  
  38. /** 随机值生成  未来往事博客:http://fity.cn */  
  39. function SetRandNum(n){  
  40.   var a="";  
  41.   for(var i=0;i<n;i++)a+=Math.floor(Math.random()*10);  
  42.   return a  
  43. }  
  44. </script>  
原文作者:rinald
原文地址:http://fity.cn/post/604.html
互联网技术更新较快,本站很多文章具有实效性,我会及时更新原文,但转载的文章无法通知更新。为了不给读者造成困惑或误导,请您在转载时保留此出处信息,尊重别人也是尊重自己。

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。