網(wǎng)址縮短的發(fā)展歷史其實(shí)不長,他的出現(xiàn)主要是基于微博(如新浪微博,,)、短博客、移動(dòng)營銷的崛起而發(fā)展起來的。在這些環(huán)境中,過長的網(wǎng)址使得用戶視覺體驗(yàn)度極差網(wǎng)址縮短哪個(gè)好用網(wǎng)址縮短哪個(gè)好用,所以有必要將很長的網(wǎng)址進(jìn)行縮短。那么網(wǎng)址縮短的原理是什么呢?下文將簡(jiǎn)要介紹一下。
網(wǎng)址縮短的工作原理主要有兩種形式
1、將原網(wǎng)址通過MD5轉(zhuǎn)化成一串小字母,這種方法簡(jiǎn)單,但是這種算法是不可逆的,所以別想著直接反轉(zhuǎn)短地址,如果你想深入了解這種算法,可以百度“MD5”+”網(wǎng)址縮短”
2、數(shù)據(jù)庫類型的存儲(chǔ)式,通過給每個(gè)長網(wǎng)址自動(dòng)分配ID和CODE來實(shí)現(xiàn)網(wǎng)址的轉(zhuǎn)換,然后當(dāng)用戶訪問時(shí),通過查詢數(shù)據(jù)里面ID和CODE對(duì)應(yīng)的原網(wǎng) 址,實(shí)現(xiàn)實(shí)時(shí)跳轉(zhuǎn)。這種方式是可逆的,而且便于管理和統(tǒng)計(jì),目前主流的網(wǎng)址縮短程序都是應(yīng)用的這種方式,如:phurl,yourl,suo.nz網(wǎng)址縮 短
PHP實(shí)現(xiàn)網(wǎng)址縮短的代碼如下:
() {
$ = (" FROM ".."") or (, , ());
$ = ($);
$[0];
}
() {
(" ".." SET = ( + 1)") or (, , ());
(() > 0) ? true : false;
}
($code) {
$ = (" COUNT(id) FROM ".."urls WHERE code = '$code'") or (, , ());
$ = ($);
($[0] > 0) ? true : false;
}
($alias) {
$ = (" COUNT(id) FROM ".."urls WHERE alias = '$alias'") or (, , ());
$ = ($);
($[0] > 0) ? true : false;
}
($url) {
$ = (" id, code, alias FROM ".."urls WHERE url LIKE '$url'") or (, , ());
if (($) > 0) {
($);
}
false;
}
($) {
$out = "";
$codes = "";
while ($ > 53) {
$key = $ % 54;
$ = floor($ / 54) - 1;
$out = $codes{$key}.$out;
}
$codes{$}.$out;
}
($url, $code, $alias) {
(" INTO ".."urls (url, code, alias, ) ('$url', '$code', '$alias', NOW())") or (, , ());
();
}
($id, $alias) {
(" ".."urls SET alias = '$alias' WHERE id = '$id'") or (, , ());
}
($alias) {
$ = (" url FROM ".."urls WHERE code = '$alias' OR alias = '$alias'") or (, , ());
if (($) > 0) {
$ = ($);
$[0];
}
false;
}
() {
$data = ();
$data['host'];
}
() {
$ = ();
("/.([^/]+)/", $, $);
$[1];
}
原文來自:短網(wǎng)址