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

简单的PHP图床程序

23vps11个月前 (06-05)其他348

首先,我们需要创建一个登录页面,让用户输入密码进行登录验证。然后,我们需要创建一个上传页面,允许用户上传图片。接着,我们需要在上传图片的时候,给图片随机生成一个文件名,并将其保存在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 vps批量下载测速工具

windows vps批量下载测速工具

主机哥不是有很多服务器么,一般都放在那吃灰,昨天就突发奇想,能不能弄个工具可以给所有服务器测试下下载速度?在loc论坛问了下,没人知道那么只好自己慢慢找了,功夫不负有心人,还是找到了,这是一款Windows版软件:DownTesters。软件名称:DownTesters官方网站:https://ww...

Windows系统镜像下载网站

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

MobaXterm配置SSHTunnel

MobaXterm配置SSHTunnel

MobaXterm作为一款良心的SSH工具,它支持SSHTunnel隧道功能,网上的教程讲的并不详细,所以主机哥写个教程:由于主机哥买了台NAT服务器,由于NAT服务器只有SSH端口没有其他公网端口,安装宝塔后要访问8888端口进行面板设置才能用,这时候SSHTunnel就可以用上了点击Tunnel...

syncthing文件同步软件

syncthing文件同步软件

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

windows server 2019 Hyper-V 开nat小鸡学习笔记

windows server 2019 Hyper-V 开nat小鸡学习笔记

主机哥开了台16-16的云主机,恰巧支持嵌套虚拟化,于是拿来测试下开小鸡,做个笔记。主机哥后来用windows server 2019物理机安装hyper-v然后给小鸡开启嵌套虚拟化后也成功小鸡生小鸡(俗称套娃)。教程准备:windows server 2019 服务器英文版改成中文由于主机哥的主机...

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

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

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