当前位置:首页 > PHP

php实现短网址

2026-01-28 21:57:04PHP

PHP实现短网址的方法

短网址服务通过将长URL转换为短字符串,便于分享和传播。以下是几种常见的PHP实现方法:

使用哈希算法生成短码

通过MD5或CRC32等哈希算法将长URL转换为短字符串:

php实现短网址

function generateShortUrl($url) {
    $hash = md5($url);
    return substr($hash, 0, 6); // 取前6位作为短码
}

自增ID转短码

利用数据库自增ID和进制转换生成短码:

php实现短网址

function idToShortCode($id) {
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $code = '';
    while ($id > 0) {
        $code = $chars[$id % 62] . $code;
        $id = floor($id / 62);
    }
    return $code;
}

使用第三方API

调用现成的短网址API服务(如百度、新浪等):

function getShortUrl($url) {
    $apiUrl = 'http://api.t.sina.com.cn/short_url/shorten.json?source=APPKEY&url_long='.urlencode($url);
    $result = json_decode(file_get_contents($apiUrl), true);
    return $result[0]['url_short'];
}

数据库存储映射关系

需要创建数据库表存储原始URL和短码的映射:

CREATE TABLE short_urls (
    id INT AUTO_INCREMENT PRIMARY KEY,
    long_url TEXT NOT NULL,
    short_code VARCHAR(10) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

完整示例代码

// 生成短码并存储
function createShortUrl($longUrl) {
    $shortCode = generateShortCode($longUrl);

    // 存储到数据库
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $pdo->prepare("INSERT INTO short_urls (long_url, short_code) VALUES (?, ?)");
    $stmt->execute([$longUrl, $shortCode]);

    return 'http://yourdomain.com/'.$shortCode;
}

// 重定向处理
if(isset($_GET['code'])) {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $pdo->prepare("SELECT long_url FROM short_urls WHERE short_code = ?");
    $stmt->execute([$_GET['code']]);
    $url = $stmt->fetchColumn();

    if($url) {
        header("Location: $url");
        exit;
    } else {
        header("HTTP/1.0 404 Not Found");
    }
}

注意事项

  • 考虑短码冲突问题,可以添加重试机制
  • 实现301永久重定向有利于SEO
  • 添加防滥用机制限制频繁请求
  • 定期清理过期或不活跃的短链接

以上方法可根据实际需求选择或组合使用,自增ID方式简单高效,哈希算法方式无需数据库交互但可能存在冲突。

标签: 网址php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 // 创建…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php 无限分类的实现

php 无限分类的实现

无限分类的实现方法 无限分类通常用于构建树形结构数据,如商品分类、多级菜单等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 邻接列表是最简单的实现方式,通过在每个节点中存…