短地址(Short URL)是一种将长网址缩短为简短易记的网址的技术。在PHP中实现短地址功能,通常涉及到以下几个基础概念和技术:
以下是一个简单的PHP实现短地址的示例:
<?php
// 数据库连接
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "short_url_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 生成短地址
function generateShortUrl($longUrl) {
global $conn;
$hash = hash('md5', $longUrl);
$shortUrl = substr($hash, 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();
?>
通过以上方法,可以在PHP中实现一个基本的短地址功能,并解决一些常见问题。
领取专属 10元无门槛券
手把手带您无忧上云