短网址程序做成怎么样才最火?

本文阅读 3 分钟
首页 知识 正文
暂无AI摘要
摘要由智能技术生成

nginx+纯PHP8.0+SQLite数据库运行,仅管理员登陆使用+添加短网址自定义路径,默认4位随机数(字母+数字),添加后支持修改标题+长链接。
扩展功能,添加其它域名,快速添加(登陆后,首页前端输入长链接直接生产短网址支持批量生成)
数据统计,访问量(今天昨天30天,单网址总访问量)-添加时间-到期时间。
打开方法:不限制打开方式,微信内打开,手机浏览器打开,电脑浏览器打开,微信QQ防红图片引导浏览器打开,暂停打开。
首页需要添加备案号
安装流程:访问域名,进入安装页面,填写管理员名称+密码,进入后台登陆页面,登陆使用。
1.安装页面(install.php):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>安装</title>
</head>
<body>
    <h1>安装</h1>
    <form action="install.php" method="post">
        <label for="username">管理员名称:</label>
        <input type="text" name="username" id="username" required><br>
        <label for="password">密码:</label>
        <input type="password" name="password" id="password" required><br>
        <input type="submit" value="安装">
    </form>
</body>
</html>

2.安装处理(install.php):

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 连接SQLite数据库
    $db = new SQLite3('short_url.db');
    $db->exec('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT, password TEXT)');

    // 添加管理员账户
    $hashed_password = password_hash($password, PASSWORD_DEFAULT);
    $db->exec("INSERT INTO users (username, password) VALUES ('$username', '$hashed_password')");

    // 跳转到后台登录页面
    header('Location: login.php');
    exit;
}
?>

3.后台登录页面(login.php):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
    <h1>登录</h1>
    <form action="login.php" method="post">
        <label for="username">用户名:</label>
        <input type="text" name="username" id="username" required><br>
        <label for="password">密码:</label>
        <input type="password" name="password" id="password" required><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

4.登录处理(login.php):

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 连接SQLite数据库
    $db = new SQLite3('short_url.db');

    // 验证用户名和密码
    $result = $db->query("SELECT * FROM users WHERE username='$username'");
    if ($result && $row = $result->fetchArray(SQLITE3_ASSOC)) {
        if (password_verify($password, $row['password'])) {
            $_SESSION['user_id'] = $row['id'];
            header('Location: admin.php');
            exit;
        } else {
            echo '密码错误';
        }
    } else {
        echo '用户名不存在';
    }
}
?>

后台管理页面(admin.php):

<?php
session_start();

if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>管理</title>
</head>
<body>
    <h1>管理</h1>
    <!-- 添加短网址表单 -->
    <form action="add_short_url.php" method="post">
        <label for="long_url">长链接:</label>
        <input type="text" name="long_url" id="long_url" required><br>
        <label for="custom_path">自定义路径:</label>
        <input type="text" name="custom_path" id="custom_path"><br>
        <label for="title">标题:</label>
        <input type="text" name="title" id="title"><br>
        <input type="submit" value="添加短网址">
    </form>
    <!-- 批量添加短网址表单 -->
    <form action="batch_add_short_urls.php" method="post">
        <label for="long_urls">长链接列表(每行一个):</label><br>
        <textarea name="long_urls" id="long_urls" rows="10" cols="30"></textarea><br>
        <input type="submit" value="批量添加短网址">
    </form>
</body>
</html>

添加短网址处理(add_short_url.php):

<?php
session_start();

if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $long_url = $_POST['long_url'];
    $custom_path = $_POST['custom_path'];
    $title = $_POST['title'];

    // 连接SQLite数据库
    $db = new SQLite3('short_url.db');

    // 生成短网址
    $short_url = generate_short_url($long_url, $custom_path);

    // 添加短网址记录
    $add_time = time();
    $expire_time = strtotime('+30 days', $add_time);
    $visit_count = 0;
    $db->exec("INSERT INTO urls (long_url, short_url, title, add_time, expire_time, visit_count) VALUES ('$long_url', '$short_url', '$title', $add_time, $expire_time, $visit_count)");

    // 跳转回管理页面
    header('Location: admin.php');
    exit;
}
?>

批量添加短网址处理(batch_add_short_urls.php):

<?php
session_start();

if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $long_urls = explode("\n", $_POST['long_urls']);
    $custom_path = $_POST['custom_path'];
    $title = $_POST['title'];

    // 连接SQLite数据库
    $db = new SQLite3('short_url.db');

    foreach ($long_urls as $long_url) {
        // 生成短网址
        $short_url = generate_short_url($long_url, $custom_path);

        // 添加短网址记录
        $add_time = time();
        $expire_time = strtotime('+30 days', $add_time);
        $visit_count = 0;
        $db->exec("INSERT INTO urls (long_url, short_url, title, add_time, expire_time, visit_count) VALUES ('$long_url', '$short_url', '$title', $add_time, $expire_time, $visit_count)");
    }

    // 跳转回管理页面
    header('Location: admin.php');
    exit;
}
?>
本文来自投稿,不代表本站立场,如若转载,请注明出处:
Image
-- 展开阅读全文 --
CentOS7端口被占用的解决办法
« 上一篇 06-21
Aria2的win客户端AriaNg 1.3.3下载器
下一篇 » 06-23

发表评论

发表评论
简单图床 - EasyImage

热门文章

标签TAG

热评文章

最近回复

AI点评
2024年12月03日

AI点评
2024年12月03日

AI点评
2024年12月03日

AI点评
2024年12月03日