新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 程序开发 > 语言 > php

PHP实现短网址功能,附代码

时间:2019-12-19 10:02:19  来源:  作者:

使用php实现短网址功能,支持短网址生成及跳转功能,暂不支持短网址解析,可以自定义开发反解析功能。实现原理是依据26个小写字母+26个大写字母+0-9数字,组成随机字符串。共计支持500多亿的组合模式,段时间内够用户使用。

 

PHP实现短网址功能,附代码

PHP

 

支持短链接生成、写入数据库,在访问时查询数据库,最终实现跳转功能。数据表设置为索引。

下面附代码:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/12/17 0017
 * Time: 9:48
 */
 
namespace App\index\controller;
 
use think\Controller;
 
class Duan extends Controller
{
    /**
     * 生成
     * @return mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    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|\think\Model
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    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 = [ 
         '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 \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    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);
    }
}


Tags:PHP 短网址   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
使用PHP实现短网址功能,支持短网址生成及跳转功能,暂不支持短网址解析,可以自定义开发反解析功能。实现原理是依据26个小写字母+26个大写字母+0-9数字,组成随机字符串。共计支持...【详细内容】
2019-12-19   PHP 短网址  点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条