网址缩短(URL Shortening)是一种将长网址转换为更短网址的服务,常用于简化分享链接、节省字符空间或隐藏原始网址。PHP是一种广泛使用的服务器端脚本语言,适合用于实现网址缩短服务。
网址缩短服务通常包括以下几个核心组件:
以下是一个简单的PHP实现网址缩短服务的示例代码:
<?php
// 数据库连接
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "url_shortener";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 生成短网址
function generateShortUrl($longUrl) {
global $conn;
$shortUrl = hash('md5', $longUrl);
$shortUrl = substr($shortUrl, 0, 8); // 取前8位作为短网址
// 检查短网址是否已存在
$sql = "SELECT * FROM url_mapping WHERE short_url = '$shortUrl'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 如果已存在,重新生成
return generateShortUrl($longUrl);
} else {
// 存储到数据库
$sql = "INSERT INTO url_mapping (long_url, short_url) VALUES ('$longUrl', '$shortUrl')";
$conn->query($sql);
return $shortUrl;
}
}
// 重定向到原始网址
if (isset($_GET['url'])) {
$shortUrl = $_GET['url'];
$sql = "SELECT long_url FROM url_mapping WHERE short_url = '$shortUrl'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
header("Location: " . $row["long_url"]);
exit();
} else {
echo "短网址无效";
}
} else {
// 示例:生成短网址
$longUrl = "https://www.example.com/very/long/url/that/needs/to/be/shortened";
$shortUrl = generateShortUrl($longUrl);
echo "原始网址: $longUrl<br>";
echo "短网址: http://yourdomain.com/?url=$shortUrl";
}
$conn->close();
?>
通过以上示例代码和解释,你可以实现一个基本的网址缩短服务,并根据需要进行扩展和优化。
领取专属 10元无门槛券
手把手带您无忧上云