自己没事研究研究 PHP生成短连接 好多人都花钱买新浪的接口来生成短连接,我自己就写了一个 当然核心代码还是借助网络,我只是负责整合了一下而已。
我是在我本地测试的,接下来详细说下。
我做的是把域名信息都存在数据库里面,数据库表是这样的
1.创建个数据库表
CREATE TABLE `links` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `url` varchar(255) DEFAULT NULL, `ctime` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=111 DEFAULT CHARSET=UTF8;
2.配置本地域名
我用的是phpstudy,你用wamp,或者 xampp都一样,根据我的phpstudy来就行
我phpstudy一个右键就可以设置了,如下图(右键-站点域名管理)
箭头几个位置是要注意的,自己设置域名 然后选择你写的代码的位置,端口你看着定,写完了 点新增,右侧就出现你设置的了。
肯定有一些用xammp或者用 wamp的朋友这个时候懵逼了,怎么办 ,我想办法装一个xampp,给你们截代码吧,
VirtualHost *:80 DocumentRoot E:/project/short ServerName d.cn Directory E:/project/short DirectoryIndex index.html index.php AllowOverride All Order deny,allow Allow from all /Directory /VirtualHost
Allow from all /Directory /VirtualHost
这代代码 写在哪个文件呢,写在xampp/apache/conf/extra/httpd-vhosts.conf 你的xampp装哪个盘就去哪个盘找了,还有 DocumentRoot也要写你的对应的位置哦
3.改域名配置文件
位置在
C:/Windows/System32/drivers/etc/hosts
我写的是这样的
4.配置伪静态文件
在项目的根目录下创建一个.htaccess文件,里面代码是
IfModule mod_rewrite.c RewriteEngine onRewriteRule ^(/S{1,7})$ index.php?code=$1 [L] /IfModule
5.写系统公共函数
func.php
?phpfunction b64dec($b64) { //64进制转换成10进制 $map = array( 0 = 0, 1 = 1, 2 = 2, 3 = 3, 4 = 4, 5 = 5, 6 = 6, 7 = 7, 8 = 8, 9 = 9, A = 10, B = 11, C = 12, D = 13, E = 14, F = 15, G = 16, H = 17, I = 18, J = 19, K = 20, L = 21, M = 22, N = 23, O = 24, P = 25, Q = 26, R = 27, S = 28, T = 29, U = 30, V = 31, W = 32, X = 33, Y = 34, Z = 35, a = 36, b = 37, c = 38, d = 39, e = 40, f = 41, g = 42, h = 43, i = 44, j = 45, k = 46, l = 47, m = 48, n = 49, o = 50, p = 51, q = 52, r = 53, s = 54, t = 55, u = 56, v = 57, w = 58, x = 59, y = 60, z = 61, _ = 62, = = 63 ); $dec = 0; $len = strlen($b64); for ($i = 0; $i $len; $i++) { $b = $map[$b64{$i}]; if ($b === NULL) { return FALSE; } $j = $len - $i - 1; $dec += ($j == 0 ? $b : (2 (6 * $j - 1)) * $b); } return $dec;}function decb64($dec) { //10进制转换成64进制 if ($dec 0) { return FALSE; } $map = array( 0= 0 ,1= 1 ,2= 2 ,3= 3 ,4= 4 ,5= 5 ,6= 6 ,7= 7 ,8= 8 ,9= 9 , 10= A ,11= B ,12= C ,13= D ,14= E ,15= F ,16= G ,17= H ,18= I ,19= J , 20= K ,21= L ,22= M ,23= N ,24= O ,25= P ,26= Q ,27= R ,28= S ,29= T , 30= U ,31= V ,32= W ,33= X ,34= Y ,35= Z ,36= a ,37= b ,38= c ,39= d , 40= e ,41= f ,42= g ,43= h ,44= i ,45= j ,46= k ,47= l ,48= m ,49= n , 50= o ,51= p ,52= q ,53= r ,54= s ,55= t ,56= u ,57= v ,58= w ,59= x , 60= y ,61= z ,62= _ ,63= = , ); $b64 = do { $b64 = $map[($dec % 64)] . $b64; $dec /= 64; } while ($dec = 1); return $b64;}
6.写核心方法
创建index.php
?phpinclude func.php define( HOST , localhost define( DB_NAME , test define( USER , root define( PASS , root function make_short_url($url){ $url=str_ireplace( http:// , ,$url); $pdo = new PDO( mysql:host= .HOST. dbname= .DB_NAME,USER,PASS); $rs = $pdo - query( select id from links where url= .$url. $row = $rs - fetch(); if($row==false){ $pdo - exec( insert into links(url,ctime) values( .$url. , .mktime(). ) $id=$pdo - lastinsertid(); return http://d.cn/ .decb64($id); }else{ return http://d.cn/ .decb64($row[ id function get_long_url($code){ $pdo = new PDO( mysql:host= .HOST. dbname= .DB_NAME,USER,PASS); $rs = $pdo - query( select url from links where id= .b64dec($code). $row = $rs - fetch(); if($row==false){ print 链接错误 exit; }else{ return http:// .$row[ url }//参数的接收与短链接返回部分if($_GET[ code ]){ $code=trim($_GET[ code ], / $url=get_long_url($code); if($url){ header( location:$url }elseif($_GET[ url ]){ $url=trim($_GET[ url print make_short_url($url);}
最后浏览器测试下
把生成的地址 粘贴到浏览器地址栏一访问就跳转到 www.cctv.com了
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !
相关推荐:
PHP根据秒PHP持续时长的方法
php生成xml数据的方法
以上就是php生成短连接的方法的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答