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

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

目录

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

2. 搭建本地服务器

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

4. 实现多人登录

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


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

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

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

  • Apache或Nginx服务器
  • PHP
  • MySQL

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

2. 搭建本地服务器

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

扫描二维码关注公众号,回复: 14890002 查看本文章
  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>
    <?php
    session_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>
    <?php
    session_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 MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    <LimitExcept GET POST>
        deny from all
    </LimitExcept>
</Directory>

<Directory /var/www/html/uploads>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow 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服务器,并使用您创建的账号系统进行登录和文件上传/共享。

猜你喜欢

转载自blog.csdn.net/a871923942/article/details/129961231
今日推荐