Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?
- $id=200; // номер корректной ссылки (id файла)
- error_reporting(0);
- $st="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"; // 62 символа
- $n_st=strlen($st);
- function ran_array ($n_letter) // для каждого нового порядкового символа в короткой ссылке генерируется своя последовательность символов
- {
- global $st,$n_st;
- $st1="";
- for ($i=0; $i<$n_st; $i++ )
- {
- $smeshenie=$i+abs(372-$n_letter*123+$n_letter*$n_letter);
- $st0[$smeshenie]=$st[$i];
- }
- foreach ($st0 as $key => $value) $st1=$st1.$value;
- return $st1;
- }
- function link_gen ($n)
- {
- global $st,$n_st;
- $k=103*$n; // какое кол-во разных ссылок должно быть с учетом того, что 99% нерабочие
- $n_letter=ceil(sqrt($k)); // определяем сколько символов будет в короткой ссылке
- $i=0;
- $s=$k;
- while ($s>$n_st)
- {
- $i++;
- $a[$i]=$s%$n_st;
- $s=floor($s/$n_st);
- $a[$i+1]=$s;
- }
- $link="";
- for ($ii=$i+1; $ii>0; $ii--) {$n_s=ran_array($ii); $letter=$n_s[$a[$ii]]; $link=$link.$letter;};
- return $link;
- }
- $link=link_gen($id);
- echo "id=$id link=$link <br>";
- function link_decod ($link)
- {
- global $st,$n_st;
- $i=strlen($link)-1;
- for ($ii=$i; $ii>=0; $ii--) {$x=$i-$ii+1; $n_s=ran_array($ii); $a[$x]=strpos($n_s,$link[$ii]);};
- $n=0; $s=0;
- krsort ($a);
- foreach ($a as $key => $value)
- {
- $s++; if ($s==1) $n=$value*$n_st;
- if ($s==2) $n=$n+$value;
- if ($s>2) $n=$value+$n*$n_st;
- }
- $n2=$n/103;
- if ($n%103!=0) $n2="not good link";
- return $n2;
- }
- $id=link_decod ($link);
- echo "decod link=$link id=$id <br>";
- $link="3t378fiueg";
- $id=link_decod ($link);
- echo "decod link=$link id=$id <br>";
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement