当前位置:首页 > PHP

php实现短网址

2026-02-27 18:59:19PHP

实现短网址的原理

短网址服务的核心是将原始长URL通过算法或映射关系转换为短字符串。常见实现方式包括自增ID、哈希算法或预生成短码。PHP中可通过数据库存储原始URL与短码的映射关系,并通过重定向实现访问跳转。

数据库设计

创建数据表存储URL映射关系,基本字段如下:

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

生成短码方法

使用Base62编码将自增ID转换为短字符串:

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

存储URL映射

处理URL提交并生成短码:

function createShortUrl($longUrl, $pdo) {
    $stmt = $pdo->prepare("INSERT INTO short_urls (long_url) VALUES (?)");
    $stmt->execute([$longUrl]);
    $id = $pdo->lastInsertId();
    $shortCode = generateShortCode($id);

    $stmt = $pdo->prepare("UPDATE short_urls SET short_code = ? WHERE id = ?");
    $stmt->execute([$shortCode, $id]);

    return $shortCode;
}

重定向处理

通过短码查询原始URL并跳转:

function redirectShortUrl($shortCode, $pdo) {
    $stmt = $pdo->prepare("SELECT long_url FROM short_urls WHERE short_code = ?");
    $stmt->execute([$shortCode]);
    $url = $stmt->fetchColumn();

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

调用示例

创建短链接:

$pdo = new PDO('mysql:host=localhost;dbname=shortener', 'username', 'password');
$shortCode = createShortUrl('https://example.com/very/long/url', $pdo);
echo "Short URL: https://yourdomain.com/" . $shortCode;

处理短链接访问:

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$shortCode = ltrim($path, '/');
redirectShortUrl($shortCode, $pdo);

优化建议

增加缓存机制提升查询性能,使用Memcached或Redis存储热门短码映射。添加有效期控制和访问统计功能,防止短码被暴力破解可考虑添加随机盐值。HTTPS支持确保传输安全,自定义短码功能需验证唯一性。

php实现短网址

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

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Cont…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…