当前位置: 首页 > news >正文

构建同一局域网下文件共享网页

首先,我会将这个内容分成以下步骤:

目录

1. 安装必要的软件和工具

2. 搭建本地服务器

3. 编写账号系统和登录页面

4. 实现多人登录

5. 实现文件上传和共享功能


以下是每个步骤的详细说明和代码示例。

1. 安装必要的软件和工具

为了完成这个项目,您需要安装以下软件和工具:

  • Apache或Nginx服务器
  • PHP
  • MySQL

这些软件和工具可以通过您的操作系统的包管理器来安装,也可以从官方网站下载并手动安装。

2. 搭建本地服务器

在本地计算机上搭建Web服务器是实现这个项目的第一步。您可以使用Apache或Nginx,这里我们选择Apache。

  1. 安装Apache服务器
    sudo apt-get update
    sudo apt-get install apache2
    
  2. 启动Apache服务器
    sudo systemctl start apache2
    
  3. 验证Apache服务器是否正在运行 打开浏览器并访问http://localhost,如果出现默认Apache欢迎页面,则说明Apache服务器已经安装并运行成功。

3. 编写账号系统和登录页面

接下来,我们将编写一个简单的账号系统和登录页面。这个系统将使用PHP和MySQL数据库来存储和管理用户账号信息。

  1. 创建数据库 首先,我们需要创建一个MySQL数据库来存储用户账号信息。打开MySQL客户端并创建一个新的数据库。
    mysql -u root -p
    CREATE DATABASE login;
    

  2. 创建用户表 接下来,我们将创建一个名为users的表来存储用户账号信息。
    USE login;
    CREATE TABLE users (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,username VARCHAR(30) NOT NULL,password VARCHAR(30) NOT NULL
    );
    
  3. 创建注册页面 现在,我们将创建一个简单的注册页面,用于允许用户创建新的账号。该页面将包括一个表单,其中包含用户名和密码字段。
    <!DOCTYPE html>
    <html>
    <head><title>注册页面</title>
    </head>
    <body><h2>注册新账号</h2><form method="post" action="register.php"><label>用户名:</label><br><input type="text" name="username" required><br><label>密码:</label><br><input type="password" name="password" required><br><br><input type="submit" value="注册"></form>
    </body>
    </html>
    

  4. 创建登录页面 现在,我们将创建一个登录页面,允许用户使用其用户名和密码登录到系统中。该页面将包括一个表单,其中包含用户名和密码字段。
    <!DOCTYPE html>
    <html>
    <head><title>登录页面</title>
    </head>
    <body><h2>登录到您的账号</h2><form method="post" action="login.php"><label>用户名:</label><br><input type="text" name="username" required><br><label>密码:</label><br><input type="password" name="password" required><br><br><input type="submit" value="登录"></form>
    </body>
    </html>
    

  5. 创建PHP代码 现在,我们需要编写PHP代码来处理用户注册和登录。创建两个PHP文件:register.php和login.php。

register.php代码:

<?php
// 连接到数据库
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "login";
$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接
if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
}// 处理用户注册
if ($_SERVER["REQUEST_METHOD"] == "POST") {$username = $_POST["username"];$password = $_POST["password"];// 检查用户名是否已存在$sql = "SELECT * FROM users WHERE username='$username'";$result = $conn->query($sql);if ($result->num_rows > 0) {echo "该用户名已被使用,请选择另一个用户名。";} else {// 将新用户插入到数据库中$sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";if ($conn->query($sql) === TRUE) {echo "账号创建成功。";} else {echo "出现错误:" . $sql . "<br>" . $conn->error;}}
}// 关闭数据库连接
$conn->close();
?>

login.php代码:

<?php
// 启动会话
session_start();// 连接到数据库
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "login";
$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接
if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
}// 处理用户登录
if ($_SERVER["REQUEST_METHOD"] == "POST") {$username = $_POST["username"];$password = $_POST["password"];// 检查用户名和密码是否匹配$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";$result = $conn->query($sql);if ($result->num_rows > 0) {// 用户名和密码匹配,将用户信息保存到会话中$_SESSION["username"] = $username;header("Location: index.php");} else {echo "用户名或密码错误,请重试。";}
}// 关闭数据库连接
$conn->close();
?>

 

4. 实现多人登录

要实现多人登录,我们需要使用会话来跟踪用户。当用户登录到系统中时,我们将在会话中存储他们的用户名。当用户上传或共享文件时,我们将检查他们的会话来确定他们是否有权限执行该操作。

  1. 创建一个index.php文件 在Web服务器的根目录中创建一个名为index.php的文件。这是用户登录后将访问的主页。

index.php代码:

<!DOCTYPE html>
<html>
<head><title>欢迎来到文件共享系统</title>
</head>
<body><?phpsession_start();// 检查用户是否已登录if (isset($_SESSION["username"])) {$username = $_SESSION["username"];echo "<h2>欢迎回来,$username。</h2>";} else {header("Location: login.html");}?><br><h3>上传文件</h3><form action="upload.php" method="post" enctype="multipart/form-data"><input type="file" name="fileToUpload" id="fileToUpload"><input type="submit" value="上传文件" name="submit"></form><br><h3>共享文件</h3><?php// 显示共享文件列表$dir = "uploads/";if (is_dir($dir)) {if ($dh = opendir($dir)) {while (($file = readdir($dh)) !== false) {if ($file != "." && $file != "..") {echo "<a href='uploads/$file'>$file</a><br>";}}closedir($dh);}}?>
</body>
</html>

 

2.创建一个upload.php文件 现在,我们将创建一个PHP脚本,用于处理文件上传。这个脚本将上传文件到服务器并将文件名添加到共享文件列表中。

upload.php代码:

<?php
session_start();
// 检查用户是否已登录
if (!isset($_SESSION["username"])) {header("Location: login.html");exit();
}// 上传文件到服务器
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {echo "文件上传成功。";
} else {echo "出现错误,文件上传失败。";
}// 添加共享文件到列表
$filename = basename($target_file);
$filelist = "uploads/filelist.txt";
$fp = fopen($filelist, "a");
fwrite($fp, "$filename\n");
fclose($fp);
?>

 3.创建一个logout.php文件 最后,我们需要创建一个PHP脚本,用于让用户退出系统并清除他们的会话。

logout.php代码:

<?php
session_start();
// 清除会话并重定向到登录页面
session_destroy();
header("Location: login.html");
exit();
?>

5. 实现文件上传和共享功能

要实现文件上传和共享功能,我们需要在Web服务器上创建一个目录,用于存储上传的文件。我们还需要将共享文件列表保存到服务器上的一个文件中。

  1. 创建一个uploads目录 在Web服务器的根目录下创建一个名为uploads的目录,用于存储上传的文件。
mkdir uploads

2.创建一个filelist.txt文件 在uploads目录中创建一个名为filelist.txt的文件,用于存储共享文件的列表。

touch uploads/filelist.txt

3.修改文件夹权限 确保上传文件夹和文件列表文件具有正确的权限,以便Web服务器可以读取和写入这些文件。

chmod -R 777 uploads/
chmod 666 uploads/filelist.txt

 4.更改PHP代码以处理文件上传和共享 在upload.php代码中,我们将添加共享文件到列表的代码,以将上传的文件名添加到filelist.txt文件中。我们还将修改index.php代码,以显示共享文件列表并允许用户下载文件。

upload.php代码:

<?php
session_start();
// 检查用户是否已登录
if (!isset($_SESSION["username"])) {header("Location: login.html");exit();
}// 上传文件到服务器
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {echo "文件上传成功。";
} else {echo "出现错误,文件上传失败。";
}// 添加共享文件到列表
$filename = basename($target_file);
$filelist = "uploads/filelist.txt";
$fp = fopen($filelist, "a");
fwrite($fp, "$filename\n");
fclose($fp);
?>

 index.php代码:

<!DOCTYPE html>
<html>
<head><title>欢迎来到文件共享系统</title>
</head>
<body><?phpsession_start();// 检查用户是否已登录if (!isset($_SESSION["username"])) {header("Location: login.php");exit();} else {$username = $_SESSION["username"];}?><h2>欢迎回来,<?php echo $username; ?>。</h2><br><h3>上传文件</h3><form action="upload.php" method="post" enctype="multipart/form-data"><input type="file" name="fileToUpload" id="fileToUpload"><input type="submit" value="上传文件" name="submit"></form><br><h3>共享文件</h3><?php// 显示共享文件列表$dir = "uploads/";if (is_dir($dir)) {if ($dh = opendir($dir)) {while (($file = readdir($dh)) !== false) {if ($file != "." && $file != "..") {echo "<a href='uploads/$file'>$file</a><br>";}}closedir($dh);}}?><br><a href="logout.php">退出系统</a>
</body>
</html>
  • 我们使用了会话来跟踪用户。如果用户未登录,则他们将被重定向到登录页面。
  • 我们将用户的用户名存储在变量$username中,并在欢迎消息中使用它。
  • 我们使用一个循环来显示共享文件列表,而不是手动列出每个文件。这使得代码更加灵活和易于维护。

 5.修改Web服务器配置以允许上传文件 默认情况下,Web服务器不允许上传文件。我们需要修改Web服务器配置文件以允许上传文件。

对于Apache服务器,我们需要编辑/etc/apache2/sites-available/000-default.conf文件,并在其中添加以下代码:

<Directory /var/www/html>Options Indexes FollowSymLinks MultiViewsAllowOverride AllOrder allow,denyallow from all<LimitExcept GET POST>deny from all</LimitExcept>
</Directory><Directory /var/www/html/uploads>Options Indexes FollowSymLinks MultiViewsAllowOverride AllOrder allow,denyallow from all<LimitExcept GET POST>deny from all</LimitExcept>
</Directory>

保存并关闭文件后,重新启动Apache服务器以使更改生效。

sudo systemctl restart apache2

 对于Nginx服务器,我们需要编辑/etc/nginx/nginx.conf文件,并在其中添加以下代码:

http {...server {...location /uploads/ {autoindex on;allow all;client_max_body_size 100M;}...}
}

 保存并关闭文件后,重新启动Nginx服务器以使更改生效。

sudo systemctl restart nginx

 现在,可以使用任何现代Web浏览器访问Web服务器,并使用您创建的账号系统进行登录和文件上传/共享。

相关文章:

构建同一局域网下文件共享网页

首先&#xff0c;我会将这个内容分成以下步骤&#xff1a; 目录 1. 安装必要的软件和工具 2. 搭建本地服务器 3. 编写账号系统和登录页面 4. 实现多人登录 5. 实现文件上传和共享功能 以下是每个步骤的详细说明和代码示例。 1. 安装必要的软件和工具 为了完成这个项目&…...

程序员未来是不是会大量失业?

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 会&#xff0c;但是主要原因并不是来自最近爆火的AIGC。 生成式AI对比与传统的工具的确很强大&#xff0c;但是要说替代某种工作岗位还为时尚早。最近铺天盖地的相关推文&#xff0c;热度一波未平又起…...

解密普元大文件传输平台新版本21种特性

本文主要介绍大文件传输平台及其传输特性&#xff0c;以平台版本升级为切入点&#xff0c;探讨大文件传输平台对多种传输场景的支持及部署管控方面能力的增强。目 录01 普元大文件传输平台‍‍02 普元文件传输平台新版本特性‍‍‍‍‍‍03 信创项目案例‍‍04 总结01普元大…...

每日一问-ChapGPT-20230406-中医基础-脉诊

文章目录每日一问-ChapGPT系列起因每日一问-ChapGPT-20230406-中医基础-脉诊脉诊脉诊的左右手脉诊拓展01沉脉:02迟脉:03促脉:04代脉:05动脉:06短脉:07伏脉:08浮脉:09革脉:10洪脉:11滑脉:12缓脉:13疾脉:14结脉:15紧脉:16芤脉:17散脉:18牢脉:19弦脉:20弱脉:21濡脉:22细脉:23微脉:…...

Nuxt项目asyncData服务端请求数据渲染

或许有些人会比较喜欢在mounted里去请求数据 但在Nuxt项目中是绝对不能这样操作的 因为 mounted的特性也说的比较明白了 当页面挂载完之后执行 但显然 seo只读你页面挂载的内容 如果你在这请求 那么对不起 你请求回来的数据渲染到界面上seo爬虫是看不到的 Nuxt项目请求数据 可…...

Vue 13 - 列表渲染 v-for

V-for介绍 当使用Vue.js框架时&#xff0c;可以使用v-for指令对数据进行循环遍历并渲染到模板中。v-for可以遍历数组、对象、字符串、指定次数等。 以下是v-for的用法&#xff1a; 遍历数组 <div v-for"(item, index) in items" :key"index"> {{…...

XML复习

目录什么是XMLXML中的内容可以干什么XML文件的创建以及其格式XML的文档约束-DTD约数XML的文档约束-schema约束Dom4J 解析XML 文档什么是XML XML 全称(extensible Markup Lanage) 可扩展标记语言它是一种数据的表示形式, 可以存储复杂的数据格式以及我们自己定义的格式.XML经常…...

【python设计模式】10、组合模式

哲学思想 组合模式是一种设计模式&#xff0c;用于将对象组合成树形结构以表示部分-整体层次结构。该模式允许客户端统一处理单个对象和对象组合。 从哲学的角度来看&#xff0c;组合模式可以被视为关于整体和部分之间关系的哲学思想。在这个模式中&#xff0c;整体和部分之间…...

实验五 网络安全加固

目录 一、实验内容 二、实验环境 三、实验步骤 一、实验内容 在GRE VPN实验基础上&#xff0c;对网络进行安全加固。 1、在S0上配置端口安全&#xff0c;设置服务器端口MAC绑定、限制端口MAC连接数量为1&#xff0c;超过最大值则丢弃数据帧。 2、配置OSPF路由协议认证。 3…...

MongoDB综述【入门指南】

写这篇博客,正好是2023年4月5日15:29:31,是清明节,放假一天,我坐在我的小小租房室内,思考着没思考到啥,哈哈哈,感觉好着急啊!看完了一本《城南旧事》,但是就是不踏实,好吧~我来写一篇最近在学的一个技术 为了更优秀的自己~奥利给!! 首先,我们从最初级小白开始(因为自己也是小白…...

Python 3 备忘清单_开发速查表分享

Python 3 备忘清单 Python 3开发速查备忘单是 Python 3 编程语言的单页参考表入门&#xff0c;为开发人员分享快速参考备忘单。 开发速查表大纲 入门 介绍 Hello World 变量 数据类型 Slicing String Lists If Else 循环 函数 文件处理 算术 加等于 f-字符串(Python 3.6) P…...

Thinkphp 6.0模版的加载包含输出

本节课我们来学习一下模版标签中的文件的包含、输出以及加载。 一&#xff0e;包含文件 1. 使用{include}标签来加载公用重复的文件&#xff0c;比如头部、尾部和导航部分&#xff1b; 2. 在模版 view 目录创建一个 public 公共目录&#xff0c;分别创建 header、footer 和 nav…...

ROS实践11 自定义头文件并调用

文章目录运行环境&#xff1a;思路&#xff1a;1.1 编写头文件1.2 includepath添加头文件路径1.3 编写可执行文件1.4 配置文件1.5 编译运行运行环境&#xff1a; ubuntu20.04 noetic 宏基暗影骑士笔记本 思路&#xff1a; 类和函数&#xff1a; 头文件 声明 可执行文件 定义…...

一位年薪35W的测试被开除,回怼的一番话,令人沉思

一位年薪35W测试工程师被开除回怼道&#xff1a;“反正我有技术&#xff0c;在哪不一样” 一技傍身&#xff0c;万事不愁&#xff0c;当我们掌握了一技之长后&#xff0c;在职场上说话就硬气了许多&#xff0c;不用担心被炒&#xff0c;反过来还可以炒了老板&#xff0c;这一点…...

【Docker】Docker常用命令

帮助启动类命令 启动docker systemctl start docker停止docker systemctl stop docker重启docker systemctl restart docker查看docker状态 systemctl status docker[root192 ~]# systemctl status docker ● docker.service - Docker Application Container EngineLoaded…...

【linux基础】7.linux系统自定义应用名和应用图标

"懦弱之人毫无价值"1. 做应用和图标1.1.测试和加入侧边栏3. 命令行重命名唤醒任务叙述&#xff1a;有一个x.sh文件可以在命令行执行,sh x.sh&#xff0c;这样太麻烦。 将其做成app且配上logo&#xff0c;下次直接点击使用将其路径全名重命名&#xff0c;可以直接用重…...

10.网络爬虫—MongoDB详讲与实战

网络爬虫—MongoDB详讲与实战MongoDBMongoDB安装创建数据目录1.数据库操作2.集合操作3.文档操作4.索引操作5.聚合操作6.备份与恢复MongoDB增删改查mongodb集合的增删改查数据插入到表数据的查看删除数据更新数据PyMongo连接数据库第二步 选择需要使用的数据库和集合PyMongo增删…...

C4D -> Three.js资产制作与导入流程

这篇文章介绍从 Cinema 4D 中的 UV 模型到用于 Three.js 的 .glb/.gltf 资产和纹理的整个过程&#xff0c;该网格将依赖 MeshStandardMaterial 来复制你在 Redshift 中看到的内容&#xff0c; 没有由 Three.js 处理的任何照明。 推荐&#xff1a;用 NSDT场景设计器 快速搭建3D场…...

【博学谷学习记录】大数据课程-学习十三周总结

Hive的交互方式 第一种交互方式&#xff1a;bin/hive hive 创建一个数据库 create database mytest; show databases; 第二种交互方式&#xff1a;使用sql语句或者sql脚本进行交互 不进入hive的客户端直接执行hive的hql语句 hive -e “create database mytest2” 或者我们…...

Spring Cloud快速入门

文章目录Spring Cloud快速入门一、基础概念1、微服务架构2、微服务技术栈3、什么是Spring Cloud?4、Spring Cloud和Spring Boot的联系&#xff1f;5、比较成熟的互联网架构二、Rest环境搭建1、搭建提供者1.1、创建一个父工程1.2、创建一个springcloud-api模块1.3、创建一个spr…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

命令行关闭Windows防火墙

命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)​方法二:CMD命令…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学

一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件&#xff0c;其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时&#xff0c;价带电子受激发跃迁至导带&#xff0c;形成电子-空穴对&#xff0c;导致材料电导率显著提升。…...