Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.83 KB | None | 0 0
  1. <?
  2. $id=200; // номер корректной ссылки (id файла)
  3. error_reporting(0);
  4.  
  5. $st="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; // 62 символа
  6. $n_st=strlen($st);
  7.  
  8.  
  9. function ran_array ($n_letter)  // для каждого нового порядкового символа в короткой ссылке генерируется своя последовательность символов
  10. {
  11.     global $st,$n_st;
  12.     $st1="";
  13.     for ($i=0; $i<$n_st; $i++ )
  14.     {
  15.         $smeshenie=$i+abs(372-$n_letter*123+$n_letter*$n_letter);
  16.         $st0[$smeshenie]=$st[$i];
  17.     }
  18.     foreach ($st0 as $key => $value) $st1=$st1.$value;
  19.     return $st1;
  20. }
  21.  
  22. function link_gen ($n)
  23. {
  24.     global $st,$n_st;
  25.     $k=103*$n; // какое кол-во разных ссылок должно быть с учетом того, что 99% нерабочие
  26.     $n_letter=ceil(sqrt($k)); // определяем сколько символов будет в короткой ссылке  
  27.     $i=0;
  28.     $s=$k;
  29.     while ($s>$n_st)
  30.     {
  31.         $i++;
  32.         $a[$i]=$s%$n_st;
  33.         $s=floor($s/$n_st);
  34.         $a[$i+1]=$s;
  35.     }
  36.     $link="";
  37.     for ($ii=$i+1; $ii>0; $ii--) {$n_s=ran_array($ii); $letter=$n_s[$a[$ii]]; $link=$link.$letter;};
  38.    
  39.     return $link;
  40. }
  41.  
  42. $link=link_gen($id);
  43. echo "id=$id link=$link <br>";
  44.  
  45. function link_decod ($link)
  46. {
  47.     global $st,$n_st;
  48.     $i=strlen($link)-1;
  49.     for ($ii=$i; $ii>=0; $ii--) {$x=$i-$ii+1; $n_s=ran_array($ii); $a[$x]=strpos($n_s,$link[$ii]);};
  50.     $n=0; $s=0;
  51.     krsort ($a);
  52.     foreach ($a as $key => $value)
  53.     {
  54.         $s++; if ($s==1) $n=$value*$n_st;
  55.         if ($s==2) $n=$n+$value;
  56.         if ($s>2) $n=$value+$n*$n_st;
  57.     }
  58.     $n2=$n/103;
  59.     if ($n%103!=0) $n2="not good link";
  60.     return $n2;
  61. }
  62. $id=link_decod ($link);
  63. echo "decod link=$link id=$id <br>";
  64.  
  65. $link="3t378fiueg";
  66. $id=link_decod ($link);
  67. echo "decod link=$link id=$id <br>";
  68.  
  69. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement