php程序员业余承接网页制作、软件开发。

有需要请联系13714715608

看看案例...

怎样将长的URL压缩成短的URL

2016-11-12T04:23:15.000000Z wudimei

短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]);