URLの短縮とbase62への復元

大家讲道理
リリース: 2016-11-08 17:29:58
オリジナル
1449 人が閲覧しました

网址缩短与还原, 思路是采用htaccess 转发网址到指定controller , 采用mysql 数据库存储数据  , 示例:  http://2vm.win/  

缩短效果:  http://2vm.win/s/shorturl              http://2vm.win/d/d

二维码:  http://2vm.win/s/shorturl/qr            http://2vm.win/d/d/qr

function enbase62($number,$encode = ''){
    $base62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    while($number > 0){
        $mod = bcmod($number, 62);
        $encode .= $base62[$mod];
        $number = bcdiv(bcsub($number, $mod), 62);
    }
    return strrev($encode);
}
 
function debase62($encode, $number = 0){
    $base62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $length = strlen($encode);
    $baselist = array_flip(str_split($base62));
    for($i = 0; $i < $length; $i++){
        $number = bcadd($number, bcmul($baselist[$encode[$i]], bcpow(62, $length - $i - 1)));
    }
    return $number;
}
ログイン後にコピー
CREATE TABLE `waoo_shorturl` (
  `short_id` int(12) NOT NULL AUTO_INCREMENT COMMENT &#39;自增id&#39;,
  `short_name` varchar(50) DEFAULT NULL COMMENT &#39;别名&#39;,
  `title` varchar(100) DEFAULT NULL COMMENT &#39;标题&#39;,
  `link` varchar(800) DEFAULT NULL COMMENT &#39;网址链接&#39;,
  `create_time` datetime DEFAULT NULL COMMENT &#39;创建时间&#39;,
  `uid` int(10) DEFAULT NULL COMMENT &#39;拥有者&#39;,
  `status` tinyint(1) DEFAULT &#39;1&#39; COMMENT &#39;1有效, 0封禁 -1删除&#39;,
  `top_domain` varchar(100) DEFAULT NULL COMMENT &#39;顶级域名&#39;,
  `all_domain` varchar(100) NOT NULL COMMENT &#39;域名全文&#39;,
  `create_ip` varchar(15) NOT NULL COMMENT &#39;ip&#39;,
  PRIMARY KEY (`short_id`),
  UNIQUE KEY `short_name` (`short_name`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8
ログイン後にコピー
<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On
 
  RewriteRule /d/(?!index)(.*) /d/index/?short_id=$1 [L,NC]
  RewriteRule /s/(?!index)(.*) /s/index/?short_name=$1 [L,NC]
   
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>
ログイン後にコピー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!