📜  如何使用 php 创建简码(1)

📅  最后修改于: 2023-12-03 15:38:05.538000             🧑  作者: Mango

如何使用 PHP 创建简码

在 PHP 中,创建简码可以大大缩短网址并提高链接分享的可读性,是一个很有用的功能。下面将介绍如何使用 PHP 创建简码。

1. 什么是简码?

简码是一种短小的代码,可以将长网址转换为较短、易于记忆、易于分享的字符串。例如,“http://www.example.com/article/how-to-use-php-create-short-urls” 可以转换为 “http://example.com/1234”。

2. 创建简码的方法

以下是使用 PHP 创建简码的方法:

2.1 使用 MySQL 数据库

创建一个 MySQL 数据库,包括一张数据表。数据表可以包括五个字段:id、long_url、short_url、created_at 和 updated_at。然后,使用 PHP 语言编写一个提交表单的程序,将用户输入的长网址保存到数据表中,并生成对应的简码。用户使用简码访问页面时,通过简码查询数据表,获取对应的长网址并重定向到该网址。

//连接到 MySQL 数据库
$conn = new mysqli("localhost", "username", "password", "database");

//长网址提交表单处理
if(isset($_POST['long_url'])){
    $long_url = $_POST['long_url'];

    //验证 URL 格式
    if(filter_var($long_url, FILTER_VALIDATE_URL)){
        //查询数据表是否已有该长网址
        $result = $conn->query("SELECT short_url FROM urls WHERE long_url='$long_url'");
        if($result->num_rows == 0){
            //生成简码
            $short_url = substr(md5(time()), 0, 8);

            //插入数据表
            $conn->query("INSERT INTO urls (long_url, short_url) VALUES ('$long_url', '$short_url')");
        }else{
            //从数据库中获取已有的简码
            $row = $result->fetch_assoc();
            $short_url = $row['short_url'];
        }

        //显示生成的简码
        echo "Your Short URL: http://example.com/$short_url";
    }else{
        //URL 格式不正确
        echo "Invalid URL!";
    }
}

//简码访问处理
if(isset($_GET['s'])){
    $short_url = $_GET['s'];

    //查询对应的长网址
    $result = $conn->query("SELECT long_url FROM urls WHERE short_url='$short_url'");
    if($result->num_rows == 1){
        //重定向到长网址
        $row = $result->fetch_assoc();
        header("Location: ".$row['long_url']);
    }else{
        //简码不存在
        echo "Invalid Short URL!";
    }
}

//关闭数据库连接
$conn->close();
2.2 使用 PHP 自带函数

PHP 自带函数 base_convert() 可以将数字以指定进制进行转换。可以将长网址的 MD5 值转换为 62 进制,然后取出前几位作为简码。例如,“http://www.example.com/article/how-to-use-php-create-short-urls” 的 MD5 值为 “4b439f5981fed94ee3e95b352fad11f3”,转换为 62 进制后为 “fSlkZvgBdSH”。取出前六位 “fSlkZv” 作为简码,“http://example.com/fSlkZv” 就可以跳转到原网址了。

//长网址处理
$long_url = "http://www.example.com/article/how-to-use-php-create-short-urls";
$short_url = substr(base_convert(md5($long_url), 16, 62), 0, 6);
echo "Your Short URL: http://example.com/$short_url";
3. 总结

使用 PHP 创建简码可以缩短网址并提高链接分享的可读性。上文介绍了两种创建简码的方法,即使用 MySQL 数据库和 PHP 自带函数,有需要的程序员可以选择一种适合自己的方法来实现。