首页 > 后端开发 > php教程 > php 创建短地址 (var_export)的方法

php 创建短地址 (var_export)的方法

WBOY
发布: 2016-07-25 09:04:28
原创
1176 人浏览过
复制代码

处理页面 show.php:

  1. include 'functions.php';
  2. include 'shorturls.php';
  3. $entry = $_POST['submit'];
  4. $url = $_POST['url'];
  5. $output = '';
  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 = 'Original Url : '.$url.'
    Shorten Ulr : http://www.yourdomain.com/api/s='.$uif.'';
  18. }
  19. else $output = 'access error';
  20. }
  21. else
  22. {
  23. $uif = array_search($url,$shortUrls);
  24. $output = 'Original Url : '.$url.'
    Shorten Ulr : http://www.yourdomain.com/api/s='.$uif.'';
  25. }
  26. echo $output.'

    Back';
  27. }
  28. ?>
复制代码

关联页面 functions.php

  1. function alphaID($in, $to_num = false, $pad_up = false, $passKey = null)
  2. {
  3. $index = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  4. if ($passKey !== null) {
  5. // Although this function's purpose is to just make the
  6. // ID short - and not so much secure,
  7. // with this patch by Simon Franz (http://blog.snaky.org/)
  8. // you can optionally supply a password to make it harder
  9. // to calculate the corresponding numeric ID
  10. for ($n = 0; $n
  11. $passhash = hash('sha256',$passKey);
  12. $passhash = (strlen($passhash) ? hash('sha512',$passKey)
  13. : $passhash;
  14. for ($n=0; $n
  15. array_multisort($p, SORT_DESC, $i);
  16. $index = implode($i);
  17. }
  18. $base = strlen($index);
  19. if ($to_num) {
  20. // Digital number $in = strrev($in);
  21. $out = 0;
  22. $len = strlen($in) - 1;
  23. for ($t = 0; $t $bcpow = bcpow($base, $len - $t);
  24. $out = $out + strpos($index, substr($in, $t, 1)) * $bcpow;
  25. }
  26. if (is_numeric($pad_up)) {
  27. $pad_up--;
  28. if ($pad_up > 0) $out -= pow($base, $pad_up);
  29. }
  30. $out = sprintf('%F', $out);
  31. $out = substr($out, 0, strpos($out, '.'));
  32. }
  33. else
  34. {
  35. // Digital number -->> alphabet letter code
  36. if (is_numeric($pad_up)) {
  37. $pad_up--;
  38. if ($pad_up > 0) $in += pow($base, $pad_up);
  39. }
  40. $out = "";
  41. for ($t = floor(log($in, $base)); $t >= 0; $t--) {
  42. $bcp = bcpow($base, $t);
  43. $a = floor($in / $bcp) % $base;
  44. $out = $out . substr($index, $a, 1);
  45. $in = $in - ($a * $bcp);
  46. }
  47. $out = strrev($out); // reverse
  48. }
  49. return $out;
  50. }
  51. ?>
复制代码

关联页面 shorturls.php

复制代码

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

有关的函数

1. array_search() 函数 array_search(value,array,strict) array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。

2. var_export() 函数 此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。 您可以通过将函数的第二个参数设置为 TRUE,从而返回变量的表示。

比较 var_export() 和 var_dump().

最后是 接受页面 redirect.php

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

此页面需要结合 .htaccess or .waccess 使用:

  1. RewriteEngine On
  2. RewriteRule ^s=(.*)$ /redirect.php?uid=$1 [R=301,L]
复制代码


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板