美文网首页
php 生成短链接

php 生成短链接

作者: coslight | 来源:发表于2020-04-17 15:00 被阅读0次

根据需求 - 选择自己生成短域名还是利用第三方api获得

自己生成短链接

注意:中心思想"域名转发"
既然是域名转发,所以我们需要两个域名
域名一:项目域名「www.a1.com」
域名二:中间域名「www.a2.com」

www.a1.com代码块「mvc框架,根据自己的框架调整代码」
class Api extends Base
{
    /**
     * 需要生成短连接的方法
     * @return string
     */
    public function indexAction()
    {
         $code = $_GET['psid'];
         $url =  'http://www.a1.com/api/index?psid=' . base64_encode($code); //有需要加密的参数,加密一下
         $shorturl = $this->urlShort($url);
         echo $shorturl;exit;
    }

    /**
     * 生成短链接方法
     * @return string
     */
    private function urlShort($url)
    {
        // 以下代码利用php函数生成短连接
        $do_url = crc32($url);
        $result = sprintf("%u", $do_url);
        $sUrl = '';
        while ($result > 0) {
            $s = $result % 62;
            if ($s > 35) {
                $s = chr($s + 61);
            } elseif ($s > 9 && $s <= 35) {
                $s = chr($s + 55);
            }
            $sUrl .= $s;
            $result = floor($result / 62);
        }
        // 把生成的短链接存储到redis里面「建议设置存储时间」
        self::$redis->set($sUrl, $url);
        // 设置短域名为:http://yoururl.com/「自己购买的域名」
        $data = 'http://www.a2.com/' . $sUrl;
        return $data;
    }

    /**
     * 返回短网址数据 暂不存库
     * @return string
     */
    public function geturlAction()
    {
        $dos = $_POST['dos'];
        die(self::$redis->get($dos));
    }
}
www.a2.com代码块「未使用框架,根据自己的框架调整代码」
<?php
// 获取redis存储的域名
if($_SERVER['REQUEST_URI']){
    // 正则去掉微信在链接后面加了参数
    $str = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']);
    $path=explode("/",$str);
    if(isset($path[1]) && $path[1]){
        $res = getShareSums($path[1]);
        if($res){
            $url=$res;
        }
    }
}

// 跳回长链接
header("Location: ".$url);
exit;

// 调用www.a1.com里面geturl接口获取到长链接
function getShareSums($dos){
    $datastr = "dos={$dos}";
    $url = "www.a1.com/api/geturl";
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,TRUE);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$datastr);
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
    $new_url = curl_exec($ch);
    curl_close($ch);
    return $new_url;
}

?>

利用第三方接口生成短链接

1.百度生成短链接接口
https://dwz.cn/console/apidoc

相关文章

  • php 生成短链接

    根据需求 - 选择自己生成短域名还是利用第三方api获得 自己生成短链接 注意:中心思想"域名转发"既然是域名转发...

  • Laravel 中的面试题(三)

    20、如何生成软链接? Laravel用php artisan storage:dink生成软链接。这样可以让不显...

  • 短链接生成

    在平常开发中可能会遇到url过长的情况,一大堆参数都在后面跟着将url变得很糟看着也很混乱,于是出现了短连接,可以...

  • nodejs生成短链接

    应用场景:发短信的时候,可能由于参数的问题导致链接过长,超出短信字数限制,所以链接需要越短越好 原理 生成一个唯一...

  • todo

    短链接生成. 秒杀系统 短链接生成 高并发的红包系统 分布式ID生成 分布式限流 分布式定时任务 新浪微博怎么推送...

  • Mysql分库分表实践(短链接的实现)

    业务场景 简单分析一下短链接的业务场景。参照百度短链接http://dwz.cn/ 。 根据长链接生成一个短链接。...

  • (极客时间)短 URL 生成器设计

    一、需求设计一个短URL生成器(Fuxi)短 URL 生成器,也称作短链接生成器,就是将一个比较长的 URL 生成...

  • 测试短链接生成

    一杯二锅头 好汉不回头 你说要走!你走就走! 获取授权

  • PHP短链接实现方式!

    实现思路: 将传入的长链接存入内存数据库中,并记录创建时间,返回自增ID。将返回的id进行10进制转64进制编码:...

  • 【Java工具】之Java代码生成短链接(三)

    上篇文章介绍了调用百度API生成短链接的方式,这一篇我们通过Java代码的方式生成短链接。 我们怎么通过Java代...

网友评论

      本文标题:php 生成短链接

      本文链接:https://www.haomeiwen.com/subject/lwlevhtx.html