生成短网址是一个常见的需求。php是一种强大的后端编程语言,可以使用其来生成一个简洁的短网址。
下面是一个仿微博短网址的php短网址生成代码的攻略,包含以下步骤:
首先需要创建一个MySQL数据库,用于存储短网址和原始网址之间的映射关系。可以使用下面的SQL语句在MySQL中创建一个数据表(表名为urls
):
CREATE TABLE `urls` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`url` text NOT NULL,
`shortened` varchar(10) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `shortened` (`shortened`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
通过使用PHP的MySQLi或PDO扩展,可以连接到MySQL数据库。下面是一个使用MySQLi的代码示例,连接到名为test_db
的数据库:
$db = new mysqli('localhost', 'username', 'password', 'test_db');
if ($db->connect_errno) {
die('Failed to connect to MySQL: ' . $db->connect_error);
}
下一步是生成一个6位随机的短码来代表原始网址。我们可以通过使用PHP的uniqid()
函数来生成一个唯一标识符,然后再使用substr()
函数来截取标识符的前6个字符。
以下是PHP生成短码的示例代码:
$shortened = substr(uniqid(), 0, 6);
一旦有了短码,就可以将其和原始网址一起存储到数据库中。下面是一个使用PHP向数据库中插入数据的示例代码:
$url = 'http://www.example.com/';
$shortened = substr(uniqid(), 0, 6);
$query = "INSERT INTO urls (url, shortened) VALUES ('$url', '$shortened')";
$result = $db->query($query);
if ($result) {
echo "Inserted successfully";
} else {
echo "Error inserting data";
}
最后一步是将用户重定向到原始网址,我们可以通过使用PHP的header()
函数将其重定向到以短码为后缀的网址。
以下是PHP重定向的示例代码:
$shortened_url = 'http://www.example.com/' . $shortened;
header('Location: ' . $shortened_url);
下面是一个简单的实例,展示如何将用户输入的网址转换成短网址并存储到数据库,并且如何通过短网址访问原始网址:
$db = new mysqli('localhost', 'username', 'password', 'test_db');
if ($db->connect_errno) {
die('Failed to connect to MySQL: ' . $db->connect_error);
}
// 获取用户输入的网址
if (!empty($_POST['url'])) {
$url = $_POST['url'];
// 生成短码并插入到数据库中
$shortened = substr(uniqid(), 0, 6);
$query = "INSERT INTO urls (url, shortened) VALUES ('$url', '$shortened')";
$result = $db->query($query);
if ($result) {
$shortened_url = 'http://www.example.com/' . $shortened;
echo "Shortened URL: <a href=\"$shortened_url\">$shortened_url</a>";
} else {
echo "Error inserting data";
}
}
// 根据短码获取原始网址并重定向到该网址
if (!empty($_GET['short'])) {
$shortened = $_GET['short'];
$query = "SELECT url FROM urls WHERE shortened = '$shortened'";
$result = $db->query($query);
if ($result && $result->num_rows > 0) {
$row = $result->fetch_assoc();
header('Location: ' . $row['url']);
exit;
} else {
echo "URL not found";
}
}
// 显示输入框用于输入网址
echo <<<HTML
<form method="post">
<label>URL:</label>
<input type="text" name="url">
<input type="submit" value="Shorten">
</form>
HTML;
以上示例代码中需要将'localhost'
、'username'
、和 'password'
替换为实际的MySQL服务器、用户名和密码。同时需要将'http://www.example.com/'
替换为实际的网站域名。
通过按照上述步骤,可以在PHP中轻松地生成一个简洁的短网址系统,以满足不同的需求。