文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心|保存桌面|手机浏览

d1mcou

http://www78564.xrbh.cn/comd1mcou/

相关列表
文章列表
  • 暂无文章
推荐文章
php url变短,PHP实现URL长连接转短连接方法总结
发布时间:2025-01-03        浏览次数:8        返回列表

依据第二种算法,URL长连接转短连接实现方法如下

php url变短,PHP实现URL长连接转短连接方法总结

语言:PHP5.6

服务器环境:LNMP

假设:长连接地址:http://www.test.com/index.php

短连接地址:http://t.test.com/六位code码

第一步:利用shortUrl()函数,生成短连接Code码,并将数据存入Mysql数据库

函数shorturl()

function shortUrl( $long_url )

{

$key = 'swz0823'; //自定义key值

$base32 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

// 利用md5算法方式生成hash值

$hex = hash('md5', $long_url.$key);

$hexLen = strlen($hex);

$subHexLen = $hexLen / 8;

$output = array();

for( $i = 0; $i < $subHexLen; $i++ )

{

// 将这32位分成四份,每一份8个字符,将其视作16进制串与0x3fffffff(30位1)与操作

$subHex = substr($hex, $i*8, 8);

$idx = 0x3FFFFFFF & (1 * ('0x' . $subHex));

// 这30位分成6段, 每5个一组,算出其整数值,然后映射到我们准备的62个字符

$out = '';

for( $j = 0; $j < 6; $j++ )

{

$val = 0x0000003D & $idx;

$out .= $base32[$val];

$idx = $idx >> 5;

}

$output[$i] = $out;

}

return $output;

}

$url = 'http://www.test.com/index.php';//长连接

$ret = shortUrl($url);

var_dump($ret);

################ 打印结果 ################

#将长连接url与短链接Code结果存入数据库,取其中一个用于显示即可。例:短连接地址:http://t.test.com/2aEzqe

数据库结构(可自定义)

CREATE TABLE `long_short_url` (

`id` int(32) unsigned NOT NULL AUTO_INCREMENT,

`long_url` varchar(255) DEFAULT NULL,

`short_url_code` varchar(255) DEFAULT NULL,

`create_time` varchar(32) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=387 DEFAULT CHARSET=utf8;

第二步:服务器301/302重定向Api接口如下,(假如此Api接口地址:http://www.test.com/api/longUrl?code=六位code码)

public function longUrl(){

$map['short_url'] = $_GET['code'];

$data =M('long_short_url')->where($map) ->find();

$url = $data['long_url'];

header("location:$url");

}

第四部:修改Nginx服务器nginx.conf配置文件

在底部(任意位置)增添以下代码

server {

listen 80;

server_name t.test.com;

rewrite ^/(.*) http://www.test.com/Api/longUrl?code=$1 redirect;

access_log off;

}

然后保存,重启Nginx服务器。

当我们请求通过短连接地址:http://t.test.com/2aEzqe时,服务器会通过Code短码 2aEzqe 获取对应的长 URL,并通过HTTP 301/302重定向到对应的长连接地址

另外

1.自增序列算法实现方法参考实例

2.PHP开源短连接生成系统

YOURLS (Your Own URL Shortener) 是一款使用PHP+Mysql开发的短链接程序,让你可以轻松建立属于自己的短网址生成系统。而无需第三方平台你就可以获得所有的数据统计,并且支持一系列插件扩展。

安装流程

将安装包解压并上传至服务器

将 user/config-sample.php 重命名为 user/config.php

编辑 user/config.php 文件,填入数据库信息和配置站点等选项