类似于微博短网址的实现


在大概大年初三的时候,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加上类似的功能的。


协议: 本文根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License 进行授权。

标签: php apache myoilife oiinhand 天海信息科技


  • 这篇文章一条评论也没有……

撰写新评论

account_circle
mail
insert_link
mode_comment