>백엔드 개발 >PHP 튜토리얼 >PHP에서 짧은 주소(var_export)를 만드는 방법

PHP에서 짧은 주소(var_export)를 만드는 방법

WBOY
WBOY원래의
2016-07-25 09:04:281180검색
复主代码

处理页면 show.php:

  1. include 'functions.php';
  2. 'shorturls.php'를 포함합니다.
  3. $entry = $_POST['제출'];
  4. $url = $_POST['url'];
  5. $출력 = '';
  6. if($entry == 'Shorten Url' AND $url)
  7. {
  8. if(!in_array($url,$shortUrls))
  9. {
  10. $uif = alphaID (count($shortUrls),false,6);
  11. if(!array_key_exists($uif,$shortUrls))
  12. {
  13. $shortUrls[$uif] = $url;
  14. $file = fopen('shorturls.php','w');
  15. fwrite($file,'');
  16. fclose($file);
  17. $output = '원본 URL : '.$url.'
    URL 단축: http://www.yourdomain.com/api/s ='.$uif.'';
  18. }
  19. else $output = '접속 오류';
  20. }
  21. else
  22. {
  23. $uif = array_search($url,$shortUrls);
  24. $output = '원본 URL : '.$url.'
    URL 단축: http://www.yourdomain.com/api/s ='.$uif.'';
  25. }
  26. echo $output.'

    뒤로';
  27. }
  28. ?>
复代码

关联页화면 기능.php

  1. 함수 alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
  2. {
  3. $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  4. if ($passKey !== null) {
  5. // 이 함수의 목적은 단지
  6. // ID를 짧게 만드는 것이고 그다지 안전하지는 않지만,
  7. // 이 패치를 사용하면 Simon Franz (http://blog.snaky.org/)
  8. // 선택적으로 비밀번호를 제공하여 더 어렵게 만들 수 있습니다.
  9. // 해당 숫자 ID를 계산하는 것이
  10. for ($n = 0; $n
  11. $passhash = hash('sha256',$passKey);
  12. $passhash = (strlen($passhash) < strlen($index))
  13. ? hash('sha512',$passKey)
  14. : $passhash;
  15. for ($n=0; $n < strlen($index); $n ) $p[] = substr($passhash, $n ,1);
  16. array_multisort($p, SORT_DESC, $i);
  17. $index = implode($i);
  18. }
  19. $base = strlen($index);
  20. if ($to_num) {
  21. // 디지털 숫자 <<-- 알파벳 문자 코드
  22. $in = strrev($in);
  23. $out = 0;
  24. $len = strlen($in) - 1;
  25. for ($t = 0; $t <= $len; $t ) {
  26. $bcpow = bcpow($base, $len - $t);
  27. $out = $out strpos($index, substr($in, $t, 1)) * $bcpow;
  28. }
  29. if (is_numeric($pad_up)) {
  30. $pad_up--;
  31. if ($pad_up > 0) $out -= pow($base, $pad_up);
  32. }
  33. $out = sprintf('%F', $out);
  34. $out = substr($out, 0, strpos($out, '.'));
  35. }
  36. else
  37. {
  38. // 디지털 숫자 -->> 알파벳 문자 코드
  39. if (is_numeric($pad_up)) {
  40. $pad_up--;
  41. if ($pad_up > 0) $in = pow($base, $pad_up);
  42. }
  43. $out = "";
  44. for ($t = Floor(log($in, $base)); $t >= 0; $t--) {
  45. $bcp = bcpow($base, $t);
  46. $a = 바닥($in / $bcp) % $base;
  47. $out = $out . substr($index, $a, 1);
  48. $in = $in - ($a * $bcp);
  49. }
  50. $out = strrev($out); // 역방향
  51. }
  52. return $out;
  53. }
  54. ?>
复代码

关联页면 shorturls.php

复代码

원리: 将提交的网址存放数组里面, 同时为の产生一个唯一的键, 之后将该数组存放文本中,当然你也可以存放到数据库中,此实例为存放到文本中。

유익한 즐거움

1. array_search() 실행 array_search(값,배열,엄격) array_search()는 in_array()를 사용하여 in_array()를 검색하는 데 사용됩니다.返回 false。

2. var_export() 실행 는 var_dump()와 다른 방식으로 서로 다른 방식으로 PHP 代码을 사용합니다. 您可以通过将函数的第二个参数设置为 TRUE, 从而返回变weightative表示.

var_export() 및 var_dump()를 사용합니다.

最后是 接受页면 리디렉션.php

  1. include 'shorturls.php';
  2. $uid = $_GET['uid'];
  3. $addr = ($uid AND array_key_exists($uid,$shortUrls)) ? $shortUrls[$uid]: '/';
  4. header('위치:'.$addr);
  5. ?>
复主代码

此页face需要结合 .htaccess 또는 .waccess 使사용:

  1. RewriteEngine 켜기
  2. RewriteRule ^s=(.*)$ /redirect.php?uid=$1 [R=301,L]
제제대码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.