构建同一局域网下文件共享网页
首先,我会将这个内容分成以下步骤:
目录
1. 安装必要的软件和工具
2. 搭建本地服务器
3. 编写账号系统和登录页面
4. 实现多人登录
5. 实现文件上传和共享功能
以下是每个步骤的详细说明和代码示例。
1. 安装必要的软件和工具
为了完成这个项目,您需要安装以下软件和工具:
- Apache或Nginx服务器
- PHP
- MySQL
这些软件和工具可以通过您的操作系统的包管理器来安装,也可以从官方网站下载并手动安装。
2. 搭建本地服务器
在本地计算机上搭建Web服务器是实现这个项目的第一步。您可以使用Apache或Nginx,这里我们选择Apache。
- 安装Apache服务器
sudo apt-get update sudo apt-get install apache2 - 启动Apache服务器
sudo systemctl start apache2 - 验证Apache服务器是否正在运行 打开浏览器并访问http://localhost,如果出现默认Apache欢迎页面,则说明Apache服务器已经安装并运行成功。
3. 编写账号系统和登录页面
接下来,我们将编写一个简单的账号系统和登录页面。这个系统将使用PHP和MySQL数据库来存储和管理用户账号信息。
- 创建数据库 首先,我们需要创建一个MySQL数据库来存储用户账号信息。打开MySQL客户端并创建一个新的数据库。
mysql -u root -p CREATE DATABASE login; - 创建用户表 接下来,我们将创建一个名为users的表来存储用户账号信息。
USE login; CREATE TABLE users (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,username VARCHAR(30) NOT NULL,password VARCHAR(30) NOT NULL ); - 创建注册页面 现在,我们将创建一个简单的注册页面,用于允许用户创建新的账号。该页面将包括一个表单,其中包含用户名和密码字段。
<!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> - 创建登录页面 现在,我们将创建一个登录页面,允许用户使用其用户名和密码登录到系统中。该页面将包括一个表单,其中包含用户名和密码字段。
<!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> - 创建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. 实现多人登录
要实现多人登录,我们需要使用会话来跟踪用户。当用户登录到系统中时,我们将在会话中存储他们的用户名。当用户上传或共享文件时,我们将检查他们的会话来确定他们是否有权限执行该操作。
- 创建一个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服务器上创建一个目录,用于存储上传的文件。我们还需要将共享文件列表保存到服务器上的一个文件中。
- 创建一个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服务器,并使用您创建的账号系统进行登录和文件上传/共享。
相关文章:
构建同一局域网下文件共享网页
首先,我会将这个内容分成以下步骤: 目录 1. 安装必要的软件和工具 2. 搭建本地服务器 3. 编写账号系统和登录页面 4. 实现多人登录 5. 实现文件上传和共享功能 以下是每个步骤的详细说明和代码示例。 1. 安装必要的软件和工具 为了完成这个项目&…...
程序员未来是不是会大量失业?
程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 会,但是主要原因并不是来自最近爆火的AIGC。 生成式AI对比与传统的工具的确很强大,但是要说替代某种工作岗位还为时尚早。最近铺天盖地的相关推文,热度一波未平又起…...
解密普元大文件传输平台新版本21种特性
本文主要介绍大文件传输平台及其传输特性,以平台版本升级为切入点,探讨大文件传输平台对多种传输场景的支持及部署管控方面能力的增强。目 录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框架时,可以使用v-for指令对数据进行循环遍历并渲染到模板中。v-for可以遍历数组、对象、字符串、指定次数等。 以下是v-for的用法: 遍历数组 <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、组合模式
哲学思想 组合模式是一种设计模式,用于将对象组合成树形结构以表示部分-整体层次结构。该模式允许客户端统一处理单个对象和对象组合。 从哲学的角度来看,组合模式可以被视为关于整体和部分之间关系的哲学思想。在这个模式中,整体和部分之间…...
实验五 网络安全加固
目录 一、实验内容 二、实验环境 三、实验步骤 一、实验内容 在GRE VPN实验基础上,对网络进行安全加固。 1、在S0上配置端口安全,设置服务器端口MAC绑定、限制端口MAC连接数量为1,超过最大值则丢弃数据帧。 2、配置OSPF路由协议认证。 3…...
MongoDB综述【入门指南】
写这篇博客,正好是2023年4月5日15:29:31,是清明节,放假一天,我坐在我的小小租房室内,思考着没思考到啥,哈哈哈,感觉好着急啊!看完了一本《城南旧事》,但是就是不踏实,好吧~我来写一篇最近在学的一个技术 为了更优秀的自己~奥利给!! 首先,我们从最初级小白开始(因为自己也是小白…...
Python 3 备忘清单_开发速查表分享
Python 3 备忘清单 Python 3开发速查备忘单是 Python 3 编程语言的单页参考表入门,为开发人员分享快速参考备忘单。 开发速查表大纲 入门 介绍 Hello World 变量 数据类型 Slicing String Lists If Else 循环 函数 文件处理 算术 加等于 f-字符串(Python 3.6) P…...
Thinkphp 6.0模版的加载包含输出
本节课我们来学习一下模版标签中的文件的包含、输出以及加载。 一.包含文件 1. 使用{include}标签来加载公用重复的文件,比如头部、尾部和导航部分; 2. 在模版 view 目录创建一个 public 公共目录,分别创建 header、footer 和 nav…...
ROS实践11 自定义头文件并调用
文章目录运行环境:思路:1.1 编写头文件1.2 includepath添加头文件路径1.3 编写可执行文件1.4 配置文件1.5 编译运行运行环境: ubuntu20.04 noetic 宏基暗影骑士笔记本 思路: 类和函数: 头文件 声明 可执行文件 定义…...
一位年薪35W的测试被开除,回怼的一番话,令人沉思
一位年薪35W测试工程师被开除回怼道:“反正我有技术,在哪不一样” 一技傍身,万事不愁,当我们掌握了一技之长后,在职场上说话就硬气了许多,不用担心被炒,反过来还可以炒了老板,这一点…...
【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. 命令行重命名唤醒任务叙述:有一个x.sh文件可以在命令行执行,sh x.sh,这样太麻烦。 将其做成app且配上logo,下次直接点击使用将其路径全名重命名,可以直接用重…...
10.网络爬虫—MongoDB详讲与实战
网络爬虫—MongoDB详讲与实战MongoDBMongoDB安装创建数据目录1.数据库操作2.集合操作3.文档操作4.索引操作5.聚合操作6.备份与恢复MongoDB增删改查mongodb集合的增删改查数据插入到表数据的查看删除数据更新数据PyMongo连接数据库第二步 选择需要使用的数据库和集合PyMongo增删…...
C4D -> Three.js资产制作与导入流程
这篇文章介绍从 Cinema 4D 中的 UV 模型到用于 Three.js 的 .glb/.gltf 资产和纹理的整个过程,该网格将依赖 MeshStandardMaterial 来复制你在 Redshift 中看到的内容, 没有由 Three.js 处理的任何照明。 推荐:用 NSDT场景设计器 快速搭建3D场…...
【博学谷学习记录】大数据课程-学习十三周总结
Hive的交互方式 第一种交互方式:bin/hive hive 创建一个数据库 create database mytest; show databases; 第二种交互方式:使用sql语句或者sql脚本进行交互 不进入hive的客户端直接执行hive的hql语句 hive -e “create database mytest2” 或者我们…...
Spring Cloud快速入门
文章目录Spring Cloud快速入门一、基础概念1、微服务架构2、微服务技术栈3、什么是Spring Cloud?4、Spring Cloud和Spring Boot的联系?5、比较成熟的互联网架构二、Rest环境搭建1、搭建提供者1.1、创建一个父工程1.2、创建一个springcloud-api模块1.3、创建一个spr…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
