首先.PHP是最好的......╮(╯▽╰)╭算了
本文供应了两种方法来天生短网址.第一种是在自己做事器上存储短网址数据.须要自己编码和存储.第二种利用百度短网址接口.大大减少编码事情和不必要的掩护(天生的短网址也是可以永久保存的哦!)
ps:为了您的眼睛.所有代码都利用图片展示
短网址
短网址可以将长的URL地址缩短编码成短的URL.生活中常见比如你收到的短信链接(短信长度限定).QQ空间,微博,微信(分享字段长度的限定)平分享出去的链接
第一种实现思路
自己得有一个数据库,至少须要三个字段.假设三个字段是ID,SN和URL.
ID自增.SN便是编码后对应原URL的短网址.URL存长网址(原网址).根据SN查询URL然后跳转即可.
实现
既然要把长的东西缩短.自然就须要短网址存储大量的信息.到底是多少呢?至少得百亿乃至更多吧!
于是我们采取62进制来编码.好处便是.比方被我打了:字段长度达到七位(比如:xxxxxxx).可以存储62^7.即62的7次方.没错便是3521614606208条短网址.
第一步:安全性
当程序员开始编码时.至少要考虑两方面,第一安全性.第二.筱崎爱........
从安全性开始谈起.大概短网址利用从1开始自增的数字就好.干嘛还须要编码呢?比方又要被打了(有这样一个短网址.我们访问: https://dwz.cn/1直接跳转到其原来的https://www.toutiao.com/ore/article/new_article/?article_type=0?ct=503316480&z=0&ipn=d&spn=0&di=201437181110&pi=0&rn=1&tn=baiduimagedetail&is=0,0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2没错后面可能还有几百个乃至更多字符....)这样的 https://dwz.cn/1短网址不是更直不雅观?
O(∩_∩)O哈哈~你这样做估计所有对你网站不怀美意的人都要笑了
坏处便是别人直接通过数字的自增便可以要求你所有网址.估计做事器和隐私信息要废了.当然这些不是本文考虑范围.
办理方法便是利用62进制进行编码.须要一个编码表.这个编码表就相称于你的密文.要求短网址的时候来比拟密文然后去访问原网址.就避免网址暴露在外
第二步:做一个编码表
为了安全性做一个打乱的编码表.编码表是0-9,大小写a-z.然后利用str_shuffle()打乱的字符串.
第三步:核心类.里面的方法便是将10进制转换为62进制返回的短网址字符串
将上面返回的字符串作为密文.给一个数值就返回62进制的编码的字符串
类中该当存在两个方法.即编码和反编码.转短网址的时候须要进行编码.反过来访问短网址的时候须要进行反编码.即10进制转62进制 和 62进制转10进制
第四步:天生短网址
现在要做的事情便是传入一个网址就天生相应的短网址,即10进制转62进制.并返回.都是一些数据库逻辑(不做详细判断)
第五步:根据短网址访问原网址
即对url地址的反编码.即62进制转10进制
假设我们短网址统一接口是:www.dwz.cn/ . 个中便是62进制编码的字符串.获取url中的进行反编码后数据库查询出原网址即可.利用short_url类中的dec10()方法.传入62进制的字符串得到10进制的整数.然后去数据库查询即可.
第二种利用百度的短网址接口,地址是 dwz.cn.
接口调用示例:
天生短网址
要求:向dwz.cn/create.php发送post要求,发送数据包括url=长网址
返回:json格式的数据
status!=0 出错,查看err_msg得到缺点信息(UTF-8编码)
成功,返复天生的短网址 tinyurl字段
end