📅  最后修改于: 2023-12-03 15:38:05.538000             🧑  作者: Mango
在 PHP 中,创建简码可以大大缩短网址并提高链接分享的可读性,是一个很有用的功能。下面将介绍如何使用 PHP 创建简码。
简码是一种短小的代码,可以将长网址转换为较短、易于记忆、易于分享的字符串。例如,“http://www.example.com/article/how-to-use-php-create-short-urls” 可以转换为 “http://example.com/1234”。
以下是使用 PHP 创建简码的方法:
创建一个 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();
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";
使用 PHP 创建简码可以缩短网址并提高链接分享的可读性。上文介绍了两种创建简码的方法,即使用 MySQL 数据库和 PHP 自带函数,有需要的程序员可以选择一种适合自己的方法来实现。