使用PHP生成短网址的方案(1)

小天天天天    PHP    999+ 次    2017-04-11 03:22:31


    PHP+MySQl实现短网址的生成和读取

常规的方案我们将生成好的短网址和原网址对应到一张数据表中,然后供读取使用。我们先来看如何生成唯一的短网址。

//生成短网址 
function code62($x){ 
    $show=''; 
    while($x>0){ 
        $s=$x % 62; 
        if ($s>35){ 
            $s=chr($s+61); 
        }elseif($s>9&&$s<=35){ 
            $s=chr($s+55); 
        } 
        $show.=$s; 
        $x=floor($x/62); 
    } 
    return $show; 
} 
function shorturl($url){ 
    $url=crc32($url); 
    $result=sprintf("%u",$url); 
    return code62($result); 
} 
echo shorturl('{#ZC_BLOG_HOST#}');

使用以上PHP代码可以生成唯一的6位的短网址,然后我们将生成的短网址与原网址一起写入到MySQL表中,插入数据库的代码这里我就不写了,这是PHP基础。

接着,我们有一个link.php用来接收读取url并实现真实跳转。

include_once('connect.php'); //连接数据库 
$url = $_GET['url']; 
if(isset($url) && !empty($url)){ 
    $sql = "select url from shorturl where codeid='$url'"; 
    $query = mysql_query($sql); 
    if($row=mysql_fetch_array($query)){ 
        $real_url = $row['url']; 
        header('Location: ' . $real_url); 
    }else{ 
        header('HTTP/1.0 404 Not Found'); 
        echo 'Unknown link.'; 
    } 
}else{ 
    header('HTTP/1.0 404 Not Found'); 
    echo 'Unknown link.'; 
}

代码中,如果得到短网址对应的真实url,会使用header跳转到真实的页面上去,否则返回404代码。

这样我们就能使用:{#ZC_BLOG_HOST#}link.php?url=xxxxxx来访问短网址了

#Apache规则: 
RewriteRule ^/(.*)$ /link.php?url=$1 [L] 
 
#如果使用nginx,规则这样写: 
rewrite ^/(.*)$ /link.php?url=$1 last;





如果你觉得本篇文章对您有帮助,请打赏作者

上一篇: ThinkPHP的数据统计查询常用方法

下一篇: 百万数据查询优化技巧

最新评论

暂无评论

热门文章

最新评论

网站数据

网站文章数:481

今日UV/PV/IP:20/24/20

昨日UV/PV/IP:11/14 /10

TOP