【PHP实现短网址功能,附代码】使用php实现短网址功能,支持短网址生成及跳转功能,暂不支持短网址解析,可以自定义开发反解析功能 。实现原理是依据26个小写字母+26个大写字母+0-9数字,组成随机字符串 。共计支持500多亿的组合模式,段时间内够用户使用 。
文章插图
PHP
支持短链接生成、写入数据库,在访问时查询数据库,最终实现跳转功能 。数据表设置为索引 。
下面附代码:
<?php/** * Created by PhpStorm. * User: Administrator * Date: 2019/12/17 0017 * Time: 9:48 */ namespace Appindexcontroller; use thinkController; class Duan extends Controller{/*** 生成* @return mixed* @throws thinkdbexceptionDataNotFoundException* @throws thinkdbexceptionModelNotFoundException* @throws thinkexceptionDbException*/public function index(){$host = 'http://aabb.cn/';$url= 'https://blog.gitee.com/';//检测链接是否存在,存在则直接返回$res = $this->check($url, 1);if($res) {echo '生成成功,链接:' . $host . $res;die;}//不存在,生成,写入并返回$code = $this->createStr();//检测$res = $this->check($code, 0);if($res) {$code = $this->createStr();}$result = db("sort")->insert(['create_time' => time(),'update_time' => time(),'url'=> $url,'code'=> $code,]);if($result) {echo '生成成功,链接:' . $host . $code;die;} else {echo '生成失败';die;}}/*** 检测资源是否存在* @param $data* @param $type* @return array|false|PDOStatement|string|thinkModel* @throws thinkdbexceptionDataNotFoundException* @throws thinkdbexceptionModelNotFoundException* @throws thinkexceptionDbException*/public function check($data, $type){if($type) {$where['url'] = $data;} else {$where['code'] = $data;}$res = db("sort")->where($where)->find();if($res and ($type == 1)) {return $res['code'];}if($res and ($type == 0)) {return $this->createStr();}}/*** 生成字符串* @return string*/public function createStr(){$data = https://www.isolves.com/it/cxkf/yy/php/2019-12-19/['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', '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', '6', '7','8', '9' ];$info = array_rand($data, 6);$res= '';foreach($info as $k => $v) {$res .= $data[$v];}return $res;}/*** 访问链接* @param $code* @throws thinkdbexceptionDataNotFoundException* @throws thinkdbexceptionModelNotFoundException* @throws thinkexceptionDbException*/public function info($code){if(!$code) {echo "无法访问";die;}$data = db("sort")->where([ 'code' => $code ])->field('url')->find();if(!$data) {echo '无法获取连接';die;}$this->redirect($data['url'], 301);}}
推荐阅读
- PHP实现字符串内中文标点替换
- 如何突破JFinal黑名单机制实现任意文件上传
- 每秒570000的写入,MySQL如何实现?
- SpringBoot使用Redis实现 自动缓存 更新 删除
- php代码怎么热更新,用实战操作教你,快收藏吧
- 浅解用PHP实现MVC
- 普洱茶贮存,不应单纯追求贮存时间的长短
- 景宁,春茶开采 制茶加工全面实现机械化
- 易烊千玺谷爱凌冬奥短片首映,导演丁晟:不亚于拍电影
- 蕾丝裙|董卿剪超短发脸好小,穿蕾丝裙头身比惊艳人,站姿好乖巧