php實現短鏈結系統

2021-09-13 18:08:17 字數 3057 閱讀 7827

實現思路:

將傳入的長鏈結存入資料庫中,並記錄建立時間,返回自增id。

將返回的id進行10進製轉64進製編碼:如自增id為10時,64進製轉換為a;即使當我們記錄到1億條時,1億的64進製為:f9eea,才5個字元長度,非常適合作為短鏈結的引數。

然後組合成 http://網域名稱/編碼引數/。我們既得到了短鏈結。當我們訪問短鏈結時,解析引數轉為10進製。到資料庫中查詢獲得相應的鏈結,進行301跳轉。此功能既為完成。

步驟如下:

1、修改host檔案->配置**虛擬目錄->進行url重寫

1.1 修改hosts檔案,將測試網域名稱指向本機ip

c:\windows\system32\drivers\etc\hosts

127.0.0.1 d.cn

1.2 配置apache,新增虛擬網域名稱對映,參考:

documentroot "d:/webroot/test/link"

servername d.cn

directoryindex index.html index.php

allowoverride all

order deny,allow

allow from all

documentroot "d:/webroot"

servername localhost

directoryindex index.html index.php

allowoverride all

order deny,allow

allow from all

1.3 配置.htaccess檔案,將短連線重定向,設定如下:

rewriteengine on

rewriterule ^(\s)$ index.php?code=$1 [l]

url短鏈結的實現原理和方法

2、增加64進製編碼與解碼方法:

func.php

<?php 

function b64dec($b64) ];

if ($b === null)

$j = $len - $i - 1;

$dec += ($j == 0 ? $b : (2 << (6 * $j - 1)) * $b);

}return $dec;

}function decb64($dec)

$map = array(

0=>'0',1=>'1',2=>'2',3=>'3',4=>'4',5=>'5',6=>'6',7=>'7',8=>'8',9=>'9',

10=>'a',11=>'b',12=>'c',13=>'d',14=>'e',15=>'f',16=>'g',17=>'h',18=>'i',19=>'j',

20=>'k',21=>'l',22=>'m',23=>'n',24=>'o',25=>'p',26=>'q',27=>'r',28=>'s',29=>'t',

30=>'u',31=>'v',32=>'w',33=>'x',34=>'y',35=>'z',36=>'a',37=>'b',38=>'c',39=>'d',

40=>'e',41=>'f',42=>'g',43=>'h',44=>'i',45=>'j',46=>'k',47=>'l',48=>'m',49=>'n',

50=>'o',51=>'p',52=>'q',53=>'r',54=>'s',55=>'t',56=>'u',57=>'v',58=>'w',59=>'x',

60=>'y',61=>'z',62=>'_',63=>'=',

);$b64 = '';

do while ($dec >= 1);

return $b64;

}

3、建立資料表links

create table `links` (

`id` int(11) unsigned not null auto_increment,

`url` varchar(255) default null,

`ctime` int(11) default null,

primary key (`id`)

) engine=myisam auto_increment=26262628 default charset=latin1;

-- ----------------------------

-- records of links

-- ----------------------------

insert into `links` values ('10900', '', '1489568387');

insert into `links` values ('10901', '', '1489569782');

4、建立短鏈結生成與長鏈結獲取功能

index.php

<?php 

include 'func.php';

define("host","localhost");

define("db_name","test");

define("user","root");

define("pass","123456");

function make_short_url($url)else}

function get_long_url($code)else

}//引數的接收與短鏈結返回部分

if($_get['code'])

}elseif($_get['url'])

5、測試

返回內容為:在瀏覽器中訪問即會跳轉到

乙個短鏈結已經基本實現,仍然有一些可待優化的地方。如跳轉方式改為301跳轉;資料庫資料量大時,可以採取分庫操作。或者用memcache或者redis快取伺服器來代替mysql,提公升效率等等

php mysql 短鏈結 PHP生成短鏈結案例

首先我們建立的檔案有三個,api檔案 生成短連線呼叫 index檔案 訪問短連線時跳轉使用 config檔案 連線資料庫用的 呼叫方法 網域名稱 api.php?url nginx規則 location elseelseelseelse echo json encode array code 201...

設計短鏈結系統

短鏈結轉換是將任意乙個長的 url 如 轉為乙個固定長度的url,如itlym.cn sd5d1r,並可以通過訪問短 url 來跳轉到長url上。呼叫簡訊服務傳送簡訊時,會有字數限制或因字數長短收取不同費用。如何設計乙個可靠的短鏈結系統 由於url字元限制,推薦為大小寫字母加數字,共62種字元。一般...

短鏈結實現方法

短鏈結只有十幾位,有時候卻可以代替幾十位上百位字母的url進行使用,之前一直沒注意,今天想起來研究一下。略微搜尋資料,發現短鏈結並不是包含了原來幾十位上百位的url的全部資訊,而是短鏈指向乙個跟你原鏈結可能完全不同的ip,短鏈中攜帶的引數經這個ip的服務解析後,或是還原,或者根據key找value,...