短url其實是把長網址保存到數據庫中,通過id或者key取出來的。
我們假設有這麼一個表格:
Url網址表
id | url |
1 | http://www.wudimei.com/company_website_design-a40.html |
2 | http://www.wudimei.com/E_commerce_Website_Design-a41.html |
這樣的網址確實比較長呀。
假設我們把網址放在 http://url.wudimei.com中
訪問 http://url.wudimei.com/1 就可以獲得第一條網址"http://www.wudimei.com/company_website_design-a40.html",訪問http://url.wudimei.com/2就可以轉向第二條,以此類推。
我用wudimei php框架寫個示例。
app/routers.php
Route::get("/(:num)" ,"App\\Frontend\\IndexController");
App\\Frontend\\IndexController.php
use App\\Models\\Url;
class IndexController{
public function index($id){
$urlObj = Url::find( $id );
header("location: ". $urlObj->url ); //跳轉到數據庫中的網址
}
}
通過id訪問網址的代碼就完成了,其實你可以改一下,把id改成字母的,你可能要用到進制轉換。
再來説一下保存網址。其實也很簡單,查找一下網址是否存在,如果不存在則插入到數據庫中。也可以為url加一個unique約束。
$url = "http://新的長網址";
$urlObj = Url::where("url", $url )->first(); //第一個結果行,返回為對象形式。
if( !isset( $urlObj->id )){
$id= Url::inset( ["url"=> $url]);
}
如果有unique約束,直插入即可。
$id= Url::inset( ["url"=> $url]);
我們期待收到您的消息