正常的网址带上参数的那种可能会很长,尤其是我们在印刷纸质品如企业宣传册中要印上某个长的url的话非常难看,而且也没几个人会去记这个网址,虽然现在可以用扫二维码的方式打开长网址。但是人们可以使用短网址来实现优美的链接,尤其是有字数限制的应用如微博。
短网址的实现原理就是有一个数据表会配置文件将短网址和实际网址进行对应,当请求某个短网址时,程序跳转到对应的实际网址上去,从而实现网址的访问。
微信小程序视频源码集合
链接: https://pan.baidu.com/s/1dFPTMO5
密码: 点击获取链接
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 | //生成短网址 function code62( $x ){ $show = '' ; while ( $x >0){ $s = $x % 62; if ( $s >35){ $s = chr ( $s +61); } elseif ( $s >9&& $s <=35){ $s = chr ( $s +55); } $show .= $s ; $x = floor ( $x /62); } return $show ; } function shorturl( $url ){ $url =crc32( $url ); $result =sprintf( "%u" , $url ); return code62( $result ); } echo shorturl( 'http://www.jb51.net/' ); //1EeIv2 |
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 | include_once ( 'connect.php' ); //连接数据库 $url = $_GET [ 'url' ]; if (isset( $url ) && ! empty ( $url )){ $sql = "select url from shorturl where codeid='$url'" ; $query = mysql_query( $sql ); if ( $row =mysql_fetch_array( $query )){ $real_url = $row [ 'url' ]; header( 'Location: ' . $real_url ); } else { header( 'HTTP/1.0 404 Not Found' ); echo 'Unknown link.' ; } } else { header( 'HTTP/1.0 404 Not Found' ); echo 'Unknown link.' ; } |
1 2 3 4 5 | #Apache规则: RewriteRule ^/(.*)$ /link.php?url= $1 [L] #如果使用nginx,规则这样写: rewrite ^/(.*)$ /link.php?url= $1 last; |
1 2 3 4 | baidu = https: //www.baidu.com/ qq = http: //www.qq.com/ hw = http: //www.hw.com/ dm = http: //www.dm.com/view-blog-362.html |
1 2 3 4 5 6 7 8 9 | $links = parse_ini_file ( 'links.ini' ); if (isset( $_GET [ 'l' ]) && array_key_exists ( $_GET [ 'l' ], $links )){ header( 'Location: ' . $links [ $_GET [ 'l' ]]); } else { header( 'HTTP/1.0 404 Not Found' ); echo 'Unknown link.' ; } |
1 2 3 4 5 | #Apache规则: RewriteRule ^/(.*)$ /index.php?l= $1 [L] #如果使用nginx,规则这样写: rewrite ^/(.*)$ /index.php?l= $1 last; |
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 | <?php function shorturl( $input ) { $base32 = array ( 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' , '0' , '1' , '2' , '3' , '4' , '5' ); $hex = md5( $input ); $hexLen = strlen ( $hex ); $subHexLen = $hexLen / 8; $output = array (); for ( $i = 0; $i < $subHexLen ; $i ++) { //把加密字符按照8位一组16进制与0x3FFFFFFF(30位1)进行位与运算 $subHex = substr ( $hex , $i * 8, 8); $int = 0x3FFFFFFF & (1 * ( '0x' . $subHex )); $out = '' ; for ( $j = 0; $j < 6; $j ++) { //把得到的值与0x0000001F进行位与运算,取得字符数组chars索引 $val = 0x0000001F & $int ; $out .= $base32 [ $val ]; $int = $int >> 5; } $output [] = $out ; } return $output ; } ?> |