当前位置:首页 > 其他 > 正文内容

简单的PHP图床程序

23vps1年前 (2023-06-05)其他652

首先,我们需要创建一个登录页面,让用户输入密码进行登录验证。然后,我们需要创建一个上传页面,允许用户上传图片。接着,我们需要在上传图片的时候,给图片随机生成一个文件名,并将其保存在uploads目录下。最后,我们需要创建一个页面,用于展示uploads目录下的图片,按照上传时间倒序显示,并支持分页显示。让我们开始吧!

首先,我们需要创建一个登录页面:login.php。以下是一个简单的登录页面示例代码:

阿里云限量代金券 | 此广告位出租25元/月
<?php
session_start();

if(isset($_POST['password'])) {
    $password = $_POST['password'];
    if($password == 'your_password') {
        $_SESSION['logged_in'] = true;
        header('Location: upload.php');
        exit();
    } else {
        $error = 'Invalid password!';
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <?php if(isset($error)) { ?>
        <p><?php echo $error; ?></p>
    <?php } ?>
    <form method="post">
        <label>Password:</label>
        <input type="password" name="password" required>
        <button type="submit">Login</button>
    </form>
</body>
</html>

在这个示例代码中,我们使用了PHP的session来保存用户的登录状态。当用户输入正确的密码后,我们将SESSION['logged_in']设置为true,然后重定向到上传页面upload.php。如果密码输入错误,我们将error设置为'Invalid password!',并在页面上显示错误消息。

接下来,我们需要创建一个上传页面upload.php。以下是一个简单的上传页面示例代码:

<?php
session_start();

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

if(isset($_FILES['file'])) {
    $file_name = $_FILES['file']['name'];
    $file_tmp = $_FILES['file']['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
    $allowed_ext = array('jpg', 'jpeg', 'png', 'gif');
    if(in_array($file_ext, $allowed_ext)) {
        $new_file_name = uniqid('', true) . '.' . $file_ext;
        move_uploaded_file($file_tmp, 'uploads/' . $new_file_name);
        header('Location: index.php');
        exit();
    } else {
        $error = 'Invalid file type!';
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Upload</title>
</head>
<body>
    <h1>Upload</h1>
    <?php if(isset($error)) { ?>
        <p><?php echo $error; ?></p>
    <?php } ?>
    <form method="post" enctype="multipart/form-data">
        <label>Choose file:</label>
        <input type="file" name="file" required>
        <button type="submit">Upload</button>
    </form>
</body>
</html>

在这个示例代码中,我们首先检查用户是否已经登录。如果用户没有登录,我们将重定向到登录页面login.php。如果用户已经登录,我们将检查用户是否上传了文件。如果用户上传了文件,我们将检查文件类型是否为jpg、jpeg、png或gif。如果文件类型正确,我们将为文件生成一个随机文件名,并将文件保存在uploads目录下。最后,我们将重定向到主页index.php。

现在,我们需要创建一个主页index.php,用于展示uploads目录下的图片。以下是一个简单的主页示例代码:

<?php
session_start();

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

$per_page = 20;
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$start = ($page - 1) * $per_page;

$files = array();
$dir = opendir('uploads');
while($file = readdir($dir)) {
    if($file != '.' && $file != '..') {
        $files[$file] = filemtime('uploads/' . $file);
    }
}
closedir($dir);

arsort($files);

$total_files = count($files);
$total_pages = ceil($total_files / $per_page);

$files = array_slice($files, $start, $per_page);
?>

<!DOCTYPE html>
<html>
<head>
    <title>Gallery</title>
</head>
<body>
    <h1>Gallery</h1>
    <a href="upload.php">Upload</a>
    <hr>
    <?php foreach($files as $file => $time) { ?>
        <a href="uploads/<?php echo $file; ?>">
            <img src="uploads/<?php echo $file; ?>" style="max-width: 200px; max-height: 320px;">
        </a>
    <?php } ?>
    <hr>
    <?php for($i = 1; $i <= $total_pages; $i++) { ?>
        <a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a>
    <?php } ?>
</body>
</html>

在这个示例代码中,我们首先检查用户是否已经登录。如果用户没有登录,我们将重定向到登录页面login.php。如果用户已经登录,我们将获取uploads目录下的所有文件,并将它们按照上传时间倒序排序。我们还使用了分页功能,每页显示10个图片。最后,我们将循环遍历每个文件,并将其显示在页面上。我们还在页面底部添加了分页链接,允许用户浏览更多的图片。

这就是一个简单的PHP单文件图床的实现方法。需要注意的是,这个示例代码并没有考虑安全性问题,例如文件上传的安全性、SQL注入等问题。在真实的应用中,您需要考虑这些安全性问题并采取相应的措施。


本程序在php7.2下测试运行正常无报错

本网站由提供服务

扫描二维码推送至手机访问。

版权声明:本文由主机测评网发布,如需转载请注明出处。

本文链接:https://23vps.com/post/71.html

标签: 建站
分享给朋友:

“简单的PHP图床程序” 的相关文章

Windows系统镜像下载网站

提到原版的Windows系统,各位老司机熟知的都是MSDN,但是这个网址里只能下载到Win10 1909以前的系统,后面的系统都要在新网站下载而且还得登录。而且这个对新手很不友好,当我发给装机小白的时候,他们都看不懂该选哪个。再给大家推荐一个下载Windows系统的地方,网址:https://hel...

syncthing文件同步软件

syncthing文件同步软件

这是一款可以满足办公、文件共享、团队协作、家庭存储等文件同步需求的开源软件,不依赖中心服务器,完全由自己掌握数据,安全可靠。Syncthing是免费且开源的,而且跨平台支持windows、mac、linux、android等主流平台,除了PC、手机以外,在部分路由器、树莓派等硬件上都能轻松运行,听说...

网络测压小工具webBenchmark

这是一个HTTP基准测试工具,可以用来耗尽服务器带宽或流量限额。特点:每个请求都有随机的 User-Agent可自定义请求参数中的 Referer并发线程取决于您的服务器性能。项目地址:https://github.com/maintell/webBenchmark/ 起源这个起源于MJJ论坛刷“剑...

搭建Syncthing发现和中继服务器和配置Syncthing客户端

搭建Syncthing发现和中继服务器和配置Syncthing客户端

折腾借口Syncthing好是挺好的,但就是同步不给力,公共网络服务其质量参差不齐,网络也说不清。最好的解决方案还是自己搭建发现服务器Syncthing Discovery Server和中继服务器Syncthing Relay Server,有效解决网络连接差,非局域网连接慢的问题。不同于Resi...

魔方财务迁移教程

魔方财务迁移教程

主机哥的魔方财务需要迁移到新的服务器压缩打包所有网站文件备份下载数据库文件在新服务器上安装宝塔添加网站设置伪静态location / { if (!-e $request_filename) { rewrite ^(.*)$ ...

parsec串流远程桌面神器,用远程桌面可以玩游戏

parsec串流远程桌面神器,用远程桌面可以玩游戏

主机哥最近发现一款不错的国外远程桌面工具,可以内网穿透直连,甚至可以流畅玩游戏看视频不卡顿,都说很厉害,自己台式机电脑上装了一下,但是用我自己笔记本电脑连接台式机时提示-15000错误:点击Read More弹出链接:https://support.parsec.app/hc/en-us/artic...