php如何生成短链接地址_php短链生成算法与数据库映射设计

看不見的法師
发布: 2025-11-28 21:31:28
原创
598人浏览过
短链接生成核心是通过自增ID的62进制转换生成短码,并在数据库中映射长链接。使用PHP将唯一ID转为短字符串(如12345→"3d7"),存储至带唯一索引的表中,查询时通过短码快速定位原链接并301跳转,结合缓存与防刷机制优化性能与安全。

php如何生成短链接地址_php短链生成算法与数据库映射设计

短链接的生成核心在于将长网址转换为简短、易记的字符串,并通过数据库映射实现跳转。PHP 实现这一功能主要包含两个部分:短链算法设计与数据库映射机制。

短链生成算法

常用的短链算法是将唯一ID进行进制转换,生成短字符串。通常使用 62 进制(0-9, a-z, A-Z)来缩短长度。

步骤如下:

  • 为每条长链接分配一个自增 ID(如 MySQL 的主键)
  • 将该 ID 转换为 62 进制字符串
  • 补足位数或添加随机因子增强安全性(可选)
示例代码:
function idToShort($id) {
    $chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $base = strlen($chars);
    $short = '';

    while ($id > 0) {
        $short = $chars[$id % $base] . $short;
        $id = intval($id / $base);
    }

    return $short ?: '0';
}

// 示例:ID 为 12345,生成短码 "3d7"
echo idToShort(12345); // 输出类似结果
登录后复制

数据库映射设计

短链系统依赖数据库存储原始 URL 与短码之间的对应关系。表结构应简洁高效,支持快速查询和去重。

立即学习PHP免费学习笔记(深入)”;

Mootion
Mootion

Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。

Mootion 177
查看详情 Mootion

推荐表结构:

CREATE TABLE short_links (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    long_url TEXT NOT NULL,
    short_code CHAR(8) NOT NULL UNIQUE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_short_code (short_code),
    INDEX idx_long_url (long_url(255))
);
登录后复制

说明:

  • id:自增主键,用于生成短码
  • long_url:原始长链接,建议加前缀索引以提升查重效率
  • short_code:生成的短码,必须唯一,用于跳转路由

完整流程实现

用户提交长链接时,系统执行以下逻辑:

  • 检查是否已存在相同的 long_url,若存在则直接返回已有短码
  • 否则插入新记录,获取自增 ID,将其转换为 short_code
  • 保存 short_code 到数据库并返回短链接(如:yourdomain.com/abc123

跳转时,通过 $_GET['code'] 获取 short_code,查询 long_url 并执行 301 跳转。

跳转示例:
$code = $_GET['code'] ?? '';
if (!preg_match('/^[a-zA-Z0-9]{1,10}$/', $code)) {
    http_response_code(400);
    exit('Invalid code');
}

// 查询数据库
$stmt = $pdo->prepare("SELECT long_url FROM short_links WHERE short_code = ?");
$stmt->execute([$code]);
$row = $stmt->fetch();

if ($row) {
    header('Location: ' . $row['long_url'], true, 301);
} else {
    http_response_code(404);
    echo 'Link not found';
}
登录后复制

优化与安全建议

  • 使用缓存(如 Redis)缓存热门链接,减少数据库压力
  • 限制单个 IP 提交频率,防止刷量
  • 可加入过期时间字段,实现临时链接
  • 避免暴露自增 ID 规律,可在生成 short_code 后加盐或打乱顺序
基本上就这些,核心是 ID 映射 + 进制转换 + 数据库索引优化。

以上就是php如何生成短链接地址_php短链生成算法与数据库映射设计的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号