当前位置:首页 > 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转换为短字符串:

php实现短网址

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并跳转:

php实现短网址

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 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php实现即时通讯

php实现即时通讯

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

php实现推送

php实现推送

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

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…