Home Backend Development PHP Tutorial How to generate short link in php

How to generate short link in php

Jul 04, 2018 pm 04:40 PM

 这篇文章主要介绍了关于php生成短连接的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

自己没事研究研究  PHP生成短连接 好多人都花钱买新浪的接口来生成短连接,我自己就写了一个 当然核心代码还是借助网络,我只是负责整合了一下而已。

我是在我本地测试的,接下来详细说下。

我做的是把域名信息都存在数据库里面,数据库表是这样的

 1.创建个数据库表

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=111 DEFAULT CHARSET=UTF8;
Copy after login

2.配置本地域名

我用的是phpstudy,你用wamp,或者 xampp都一样,根据我的phpstudy来就行

我phpstudy一个右键就可以设置了,如下图(右键-站点域名管理)

箭头几个位置是要注意的,自己设置域名 然后选择你写的代码的位置,端口你看着定,写完了 点新增,右侧就出现你设置的了。

肯定有一些用xammp或者用 wamp的朋友这个时候懵逼了,怎么办 ,我想办法装一个xampp,给你们截代码吧,

<VirtualHost *:80>
    DocumentRoot "E:/project/short"
    ServerName d.cn    <Directory "E:/project/short">
        DirectoryIndex index.html index.php 
        AllowOverride All
        Order deny,allow
        Allow from all    </Directory>
</VirtualHost>
 
 
<VirtualHost *:80>
    DocumentRoot "E:/project/short"
    ServerName localhost    <Directory "E:/project/short">
        DirectoryIndex index.html index.PHP 
        AllowOverride All
        Order deny,allow
        Allow from all    </Directory>
</VirtualHost>
Copy after login

这代代码 写在哪个文件呢,写在xampp/apache/conf/extra/httpd-vhosts.conf 你的xampp装哪个盘就去哪个盘找了,还有 DocumentRoot也要写你的对应的位置哦

3.改域名配置文件

位置在
C:\Windows\System32\drivers\etc\hosts

我写的是这样的

4.配置伪静态文件

在项目的根目录下创建一个.htaccess文件,里面代码是

<IfModule mod_rewrite.c>RewriteEngine on
RewriteRule ^(\S{1,7})$ index.php?code=$1 [L]</IfModule>
Copy after login

5.写系统公共函数

func.php

<?php
function b64dec($b64) { //64进制转换成10进制
    $map = array(        &#39;0&#39;=>0,&#39;1&#39;=>1,&#39;2&#39;=>2,&#39;3&#39;=>3,&#39;4&#39;=>4,&#39;5&#39;=>5,&#39;6&#39;=>6,&#39;7&#39;=>7,&#39;8&#39;=>8,&#39;9&#39;=>9,
        &#39;A&#39;=>10,&#39;B&#39;=>11,&#39;C&#39;=>12,&#39;D&#39;=>13,&#39;E&#39;=>14,&#39;F&#39;=>15,&#39;G&#39;=>16,&#39;H&#39;=>17,&#39;I&#39;=>18,&#39;J&#39;=>19,
        &#39;K&#39;=>20,&#39;L&#39;=>21,&#39;M&#39;=>22,&#39;N&#39;=>23,&#39;O&#39;=>24,&#39;P&#39;=>25,&#39;Q&#39;=>26,&#39;R&#39;=>27,&#39;S&#39;=>28,&#39;T&#39;=>29,
        &#39;U&#39;=>30,&#39;V&#39;=>31,&#39;W&#39;=>32,&#39;X&#39;=>33,&#39;Y&#39;=>34,&#39;Z&#39;=>35,&#39;a&#39;=>36,&#39;b&#39;=>37,&#39;c&#39;=>38,&#39;d&#39;=>39,
        &#39;e&#39;=>40,&#39;f&#39;=>41,&#39;g&#39;=>42,&#39;h&#39;=>43,&#39;i&#39;=>44,&#39;j&#39;=>45,&#39;k&#39;=>46,&#39;l&#39;=>47,&#39;m&#39;=>48,&#39;n&#39;=>49,
        &#39;o&#39;=>50,&#39;p&#39;=>51,&#39;q&#39;=>52,&#39;r&#39;=>53,&#39;s&#39;=>54,&#39;t&#39;=>55,&#39;u&#39;=>56,&#39;v&#39;=>57,&#39;w&#39;=>58,&#39;x&#39;=>59,
        &#39;y&#39;=>60,&#39;z&#39;=>61,&#39;_&#39;=>62,&#39;=&#39;=>63
    );    $dec = 0;    $len = strlen($b64);    for ($i = 0; $i < $len; $i++) {        $b = $map[$b64{$i}];        if ($b === NULL) {            return FALSE;
        }        $j = $len - $i - 1;        $dec += ($j == 0 ? $b : (2 << (6 * $j - 1)) * $b);
    }    return $dec;
}function decb64($dec) { //10进制转换成64进制
    if ($dec < 0) {        return FALSE;
    }    $map = array(        0=>&#39;0&#39;,1=>&#39;1&#39;,2=>&#39;2&#39;,3=>&#39;3&#39;,4=>&#39;4&#39;,5=>&#39;5&#39;,6=>&#39;6&#39;,7=>&#39;7&#39;,8=>&#39;8&#39;,9=>&#39;9&#39;,
        10=>&#39;A&#39;,11=>&#39;B&#39;,12=>&#39;C&#39;,13=>&#39;D&#39;,14=>&#39;E&#39;,15=>&#39;F&#39;,16=>&#39;G&#39;,17=>&#39;H&#39;,18=>&#39;I&#39;,19=>&#39;J&#39;,
        20=>&#39;K&#39;,21=>&#39;L&#39;,22=>&#39;M&#39;,23=>&#39;N&#39;,24=>&#39;O&#39;,25=>&#39;P&#39;,26=>&#39;Q&#39;,27=>&#39;R&#39;,28=>&#39;S&#39;,29=>&#39;T&#39;,
        30=>&#39;U&#39;,31=>&#39;V&#39;,32=>&#39;W&#39;,33=>&#39;X&#39;,34=>&#39;Y&#39;,35=>&#39;Z&#39;,36=>&#39;a&#39;,37=>&#39;b&#39;,38=>&#39;c&#39;,39=>&#39;d&#39;,
        40=>&#39;e&#39;,41=>&#39;f&#39;,42=>&#39;g&#39;,43=>&#39;h&#39;,44=>&#39;i&#39;,45=>&#39;j&#39;,46=>&#39;k&#39;,47=>&#39;l&#39;,48=>&#39;m&#39;,49=>&#39;n&#39;,
        50=>&#39;o&#39;,51=>&#39;p&#39;,52=>&#39;q&#39;,53=>&#39;r&#39;,54=>&#39;s&#39;,55=>&#39;t&#39;,56=>&#39;u&#39;,57=>&#39;v&#39;,58=>&#39;w&#39;,59=>&#39;x&#39;,
        60=>&#39;y&#39;,61=>&#39;z&#39;,62=>&#39;_&#39;,63=>&#39;=&#39;,
    );    $b64 = &#39;&#39;;    do {        $b64 = $map[($dec % 64)] . $b64;        $dec /= 64;
    } while ($dec >= 1);    return $b64;
    
}
Copy after login

6.写核心方法

创建index.php

<?php
include &#39;func.php&#39;;define("HOST","localhost");define("DB_NAME","test");
define("USER","root");define("PASS","root"); 
function make_short_url($url){    $url=str_ireplace("http://","",$url);    
$pdo = new PDO("mysql:host=".HOST.";dbname=".DB_NAME,USER,PASS); 
    $rs = $pdo ->query("select id from links where url=&#39;".$url."&#39;");    
    $row = $rs -> fetch(); 
    if($row==false){        
    $pdo -> exec("insert into links(url,ctime) values(&#39;".$url."&#39;,&#39;".mktime()."&#39;)"); 
        $id=$pdo -> lastinsertid(); 
        return "http://d.cn/".decb64($id);
    }else{        return "http://d.cn/".decb64($row[&#39;id&#39;]);
    }
} 
function get_long_url($code){    
$pdo = new PDO("mysql:host=".HOST.";dbname=".DB_NAME,USER,PASS); 
    $rs = $pdo ->query("select url from links where id=&#39;".b64dec($code)."&#39;");    
    $row = $rs -> fetch(); 
    if($row==false){        print "链接错误";        exit;
    }else{        return "http://".$row[&#39;url&#39;];
    }
}//参数的接收与短链接返回部分if($_GET[&#39;code&#39;]){    
$code=trim($_GET[&#39;code&#39;],"/");    $url=get_long_url($code);    
if($url){        header("location:$url");
    }
}elseif($_GET[&#39;url&#39;]){    
$url=trim($_GET[&#39;url&#39;]);    
print make_short_url($url);
}
Copy after login

最后浏览器测试下

把生成的地址 粘贴到浏览器地址栏一访问就跳转到 www.cctv.com了

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

PHP根据秒PHP持续时长的方法

php生成xml数据的方法

The above is the detailed content of How to generate short link in php. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How does session hijacking work and how can you mitigate it in PHP? How does session hijacking work and how can you mitigate it in PHP? Apr 06, 2025 am 12:02 AM

Session hijacking can be achieved through the following steps: 1. Obtain the session ID, 2. Use the session ID, 3. Keep the session active. The methods to prevent session hijacking in PHP include: 1. Use the session_regenerate_id() function to regenerate the session ID, 2. Store session data through the database, 3. Ensure that all session data is transmitted through HTTPS.

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

Framework Security Features: Protecting against vulnerabilities. Framework Security Features: Protecting against vulnerabilities. Mar 28, 2025 pm 05:11 PM

Article discusses essential security features in frameworks to protect against vulnerabilities, including input validation, authentication, and regular updates.

See all articles