• 分析php生成短网址/短链接原理和用法实例


    本文实例讲述了php生成短网址/短链接原理和用法。分享给大家供大家参考,具体如下:

    需求

    在我们的项目当中,如果需要更好传播我们的活动链接,但是链接太长1来是不美观,2来是太过于“笨重”,例如拼多多,淘宝联盟,他们的推广链接都是有短链接的,还有新浪微博。

    但是,这些始终都是别人的,我们调用别人的API进行生成,不稳定,所以可以自己做一个,注册一个稍微短一些的域名就行。

    生成源码api.php

    m(empty($url))) {
      echo "{"code":"1","url":"未传入URL"}";
    }else{
      //定义数据库配置
      $dbhost = "xxx";//数据库服务器地址
      $dbuser = "xxx";//数据库账号
      $dbpwd = "xxx";//数据库密码
      $dbname = "xxx";//数据库名
    
      //连接数据库
      $con = mysql_connect($dbhost,$dbuser,$dbpwd);
      if (!$con)
       {
       die('Could not connect: ' . mysql_error());
       }
      mysql_select_db($dbname, $con);
    
      //检查数据库是否已经存在该URL
      $check = mysql_query("SELECT * FROM 表名 WHERe long_url = '$url'");
      $check_result = mysql_num_rows($check);
      //如果已经存在,则直接返回之前生成的链接
      if ($check_result) {
        while ($row_yicunzai = mysql_fetch_array($check)) {
          $yicunzai_key = $row_yicunzai["dwz_key"];
          //返回KEY
          echo "{"code":"0","url":"域名".$yicunzai_key.""}";
        }
      }else{
        //生成KEY
        $key_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        $key = substr(str_shuffle($key_str),mt_rand(0,strlen($key_str)-11),4);
    
        //生成短链接
        mysql_query("INSERT INTO lkydwz (long_url, dwz_key) VALUES ('$url', '$key')");
    
        //返回结果
        echo "{"code":"0","url":"域名".$key.""}";
      }
    
      //断开数据库连接
      mysql_close($con);
    }
    
    ?>

    访问源码index.php

    正在跳转";
    //过滤数据
    if (trim(empty($key))) {
      echo "链接不存在";
    }else{
      //解析KEY
      //定义数据库配置
      $dbhost = "xxx";//数据库服务器地址
      $dbuser = "xxx";//数据库账号
      $dbpwd = "xxx";//数据库密码
      $dbname = "xxx";//数据库名
      //连接数据库
      $con = mysql_connect($dbhost,$dbuser,$dbpwd);
      if (!$con)
       {
       die('Could not connect: ' . mysql_error());
       }
      mysql_select_db($dbname, $con);
    
      //查询数据库,通过KEY获取长链接进行跳转
      //检查数据库是否存在该KEY
      $check = mysql_query("SELECT * FROM 表名 WHERe dwz_key = '$key'");
      $check_result = mysql_num_rows($check);
      //如果存在,则解析出长链接并跳转
      if ($check_result) {
        while ($row_long_url = mysql_fetch_array($check)) {
          $long_url = $row_long_url["long_url"];
          // echo "";
          header("Location: $long_url");
        }
      }else{
        echo "链接不存在";
      }
    }
    ?>

    Apache规则.htaccess

    RewriteEngine On
    #Rewritebase / 
    RewriteRule ^(w+)$ index.php?id=$1

    数据库字段

    id(int)自增
    dwz_key(varchar)
    long_url(text)
    creat_time(TIMESTAMP)

    使用方法

    1、访问api.php?url=长链接,即可生成短链接,例如返回JSON

    {"code":"0","url":"http://xxx.cn/Hp8R"}

    2、新建.htaccess,把上面规则复制进去,保存
    3、新建index.php,把上面代码拷贝进去,配置好数据库。访问http://xxx.cn/Hp8R,就会自动跳转到你的长链接

    相关学习推荐:编程视频

    以上就是分析php生成短网址/短链接原理和用法实例的详细内容,更多请关注考高分网其它相关文章!

  • 相关阅读:
    ln 硬链接与软链接
    Fujitsu存储多路径管理
    Ansible 模块详解
    思科光纤交换机9124管理手册
    Fujitsu DX100S3配置方案
    富士通存储的TPP池和SDPV池
    Solaris 10 ZFS文件系统挂载
    经分测试M5000重启进入维护模式
    finally在return之后还是之前运行
    gradle构建
  • 原文地址:https://www.cnblogs.com/68xi/p/15969918.html
Copyright © 2020-2023  润新知