WEB:建立短链接服务
来源:互联网 发布:sql select as 编辑:程序博客网 时间:2024/06/06 00:47
现有在线服务
在实现分享功能的时候特别需要短链接服务,已有的在线url shorten服务包括:
1. TinyUrl,API地址 http://tinyurl.com/api-create.php?url=your-url
2. Bitly(bit.ly, 不能访问...)
3. Yourls,API地址 http://yourls.org/#API
4. dwz,百度提供的服务,API地址:http://dwz.cn/create.php
5. u2l,在线服务,API地址:http://www.u2l.info/encode?url=your-url
6. Goo,Google提供的服务,API地址:http://goo.gl/
百度的dwz服务限制很多,可能有白名单限制,不受信任的域名不能工作
建立自己的服务
为了服务更稳定,性能更好,以及避免一些UI跨域调用的麻烦,可以建立自己的短链接服务:
1. 短链接生成,可以使用一些字符串hash函数,最简单的用md5来做,也可以随机生成一个固定长度的字母数字串
2. 把短链接和原始链接建立对应关系,可放在文件(量小的情况下)、内存数据库或MySQL中
3. 请求过来的时候,解析出短链接,根据2建立的对应关系查询到长链接,然后重定向
以下是基于PHP和MySQL的示范代码:
1. 短链接生成,可以使用一些字符串hash函数,最简单的用md5来做,也可以随机生成一个固定长度的字母数字串
2. 把短链接和原始链接建立对应关系,可放在文件(量小的情况下)、内存数据库或MySQL中
3. 请求过来的时候,解析出短链接,根据2建立的对应关系查询到长链接,然后重定向
以下是基于PHP和MySQL的示范代码:
function getLongURL($s){$host = ""; $user = ""; $pass = ""; $db = "";$mysqli = new mysqli($host, $user, $pass, $db);if (mysqli_connect_errno()) { die("Unable to connect !"); }$query = "SELECT * FROM urls WHERE shorturl = '$s';";if ($result = $mysqli->query($query)) { if ($result->num_rows > 0) {while($row = $result->fetch_assoc()) {return($row);} } else { return false; }} else {return false;}$mysqli->close();}function redirectTo($longURL){header("Referer: http://www.your-domain-here.com");header("Location: $longURL", TRUE, 301);exit;}$expectedURL = trim($_SERVER['URL']);$split = preg_split("{:80\/}",$expectedURL);$shortURL = $split[1];// security: strip all but alphanumerics & dashes$shortURL = preg_replace("/[^a-z0-9-]+/i", "", $shortURL);$isShortURL = false;$result = getLongURL($shortURL);if ($result) { $isShortURL = true; }$longURL = $result['longURL'];if ($isShortURL){redirectTo($longURL, $shortURL);} else {//do as usual link}
by iefreer
0 0
- WEB:建立短链接服务
- 苹果“短” 链接服务
- 短链接服务架构设计与实现
- Python建立Web文件服务
- ShareSDK短链接服务域名更换为l.mob.com
- 一个go语言实现的短链接服务
- 调用新浪网址缩短服务生成网址短链接
- 短链接
- 短链接
- 建立新的web服务目录
- Eclipse中建立JSR181的web服务
- 长链接/短链接
- 为MyEclipse的Web项目建立Web服务接口
- 建立链接
- 建立链接
- 长链接转短链接
- 长链接转短链接
- TCP长链接/短链接
- [深入浅出Cocoa]详解键值观察(KVO)及其实现机理
- OV9712 CMOS基于JZ4775调试(一)
- VS2012打断点调试挂掉
- 对不起,我爱你黄陈晨
- Android 中Touch(触屏)事件传递机制
- WEB:建立短链接服务
- 跳跃链表
- cocos2d-x在eclipse上搭建开发环境(全网最标准方法,不要cywin)
- ubuntu12.04.4下安装python模块PIL
- C++: byte和int的相互转化
- PHP之 开始篇
- php中的sprintf(),printf()
- 斯坦福机器学习-week5 学习笔记(1)——神经网络训练BP算法与Gradient checking
- Android使用https链接