在大概大年初三的时候,MyOILife的林兔兔(lin_toto)用mol.la来个短网址引导进MyOILife,在企鹅讨论组里和我们讨论如何实现跳转,这引发了我的思考,但是没有结果。
在昨天,天海信息科技的COO Deamwork又说起这个事情,并且给了思路,经过一夜的思考,我突然有了思路。
我们可以先开启Apache的RewriteEngine,然后对index.php后面进行包装,达到看似http://a.a/abcd实为http://a.a/index.php?url=abcd的效果,代码如下:
RewriteEngine on RewriteCond $1 !^(index\.php|robots\.txt) RewriteRule ^(.*)$ /index.php?url=$1 [L]
这差不多就是.htaccess的代码了。
接下来PHP的代码部分,我想我和我的程序猿伙伴们都应该很清楚的知道了吧?
首先必须得到url=后面的代码
$url=$_GET['url'];
然后判断url里的内容是否为空,如果为空,那么就输出错误
if($url!=""){
$row=mysql_fetch_array(mysql_query("SELECT * FROM `存储短网址的表` WHERE `字段` = '$url'"));
if(($row[0]=="") or ($row[0]==NULL)){ //判断短码是否存在
echo "ERROR:wrong short_url_string.";//如果在数据库里查找不到$url,输出错误
exit(); //结束程序
}
header('Location: '.$row['address']); //如果成功,跳转
}
if($url==""){ //如果短码为空,错误
echo "ERROR:no short_url_string.";
}
接下来是创建,我用的是一个经过加密的随机数来取数得到短码
$origin=$_POST['address'];
$convert=substr(base64_encode(md5(rand(1000000,9999999))), 3, 6);//生成随机字符串
mysql_query("INSERT INTO `存放短码的表` (`短码`, `源地址`) VALUES ('$convert', '$origin')");
差不多了,等到合适的时候,我也会给OI in Hand加上类似的功能的。