IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 【PHP基础】之【php搭建简易的学生管理系统,有注册登录注销功能,使用session做权限管理】 -> 正文阅读

[PHP知识库]【PHP基础】之【php搭建简易的学生管理系统,有注册登录注销功能,使用session做权限管理】

功能介绍

首页index.html:
在这里插入图片描述
登录login.html:
在这里插入图片描述
注册register.html:
在这里插入图片描述
当密码正确时(使用预编译查询,会做session校验):
学生登陆成功后,会显示其分数(student.php):
在这里插入图片描述
在这里插入图片描述
老师登录成功会显示所有学生成绩,并可以修改(teacher.php):
在这里插入图片描述
在这里插入图片描述

当密码错误时:
在这里插入图片描述
注册时(使用预编译)会做密码长度和确认判断(JS):
在这里插入图片描述
注册成功会跳转到登录页面:
在这里插入图片描述
注册成功默认为学生用户,成绩为空:
在这里插入图片描述

项目结构

在这里插入图片描述

源码

index.html

<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>首页</title>
</head>
<body>
    <a href="login.html"><button type="button">登录</button></a>
    <a href="register.html"><button type="button">注册</button></a>
</body>
</html>

register.html

<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>注册</title>
  </head>
  <script>
    function refer() {
      if (document.referrer == "http://192.168.8.46/test4/register.php") {
        document.getElementById("txtHint").innerHTML = "注册失败!";
      }
    }
    function checkPwd() {
      var name = document.getElementById("pwd").value;
      if (name.length < 6) {
        pwdSpan.innerHTML = "<font color='red'>至少6位!</font>";
      } else {
        pwdSpan.innerHTML = "<font color='green'>√</font>";
      }
    }
    function checkPwdEq() {
      var pwd1 = document.getElementById("pwd").value;
      var pwd2 = document.getElementById("pwdCK").value;
      if (pwd1 === pwd2) {
        pwdCKSpan.innerHTML = "<font color='green'>√</font>";
      } else {
        pwdCKSpan.innerHTML = "<font color='red'>密码不一致!</font>";
      }
    }
  </script>
  <body onload="refer()">
    <form action="register.php" method="post">
      账号:<input type="text" name="username" id="username" />
      
      <br />
      密码:<input
        type="password"
        name="password"
        id="pwd"
        onblur="checkPwd()"
      /><span id="pwdSpan"></span>
      <br />
      确认密码:<input
        type="password"
        name="checkpassword"
        id="pwdCK"
        onblur="checkPwdEq()"
      /><span id="pwdCKSpan"></span>
      <br />
      真实姓名:<input type="text" name="realname" id="realname" />
      <br />
      <button type="submit" onclick="sendData()">注册</button>
      <br />
      <span id="txtHint" style="color: red"></span>
    </form>
  </body>
</html>

register.php

<?php
header("content-type:text/html; charset=utf-8");
$con = mysqli_connect("localhost", "root", "123456", "test");
// 检查连接
if (!$con) {
    die("连接错误: " . mysqli_connect_error());
}

mysqli_query($con, "set names utf8");
// 解决插入中文乱码问题

// 预处理及绑定
$stmt = $con->prepare("INSERT INTO `users` (username, realname, password, role) VALUES (?, ?, ?, ?)");
// 绑定字符串
$stmt->bind_param("ssss", $username, $realname, $userpwd, $role);

$username = $_POST['username'];
$realname = $_POST['realname'];
$userpwd = $_POST['password'];
$role = 'student';
// 设置参数

// 执行语句
if ($stmt->execute()) {
    header("Location: login.html");
} else {
    echo "注册失败!";
}

// 关闭预处理及sql通道
$stmt->close();
mysqli_close($con);

login.html

<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>登录页面</title>
  </head>
  <script>
    // 通过referrer判断是从那个页面来的,并提示相应信息
    function refer() {
        
      $ref = document.referrer;
      if ($ref == "http://192.168.8.46/test4/login.html") {
        document.getElementById("txtHint").innerHTML =
          "账号或密码错误,请重新登录!";
      } else if ($ref == "http://192.168.8.46/test4/register.html") {
        document.getElementById("txtHint").innerHTML = "注册成功!";
      } else if (
        $ref == "http://192.168.8.46/test4/student.php" ||
        $ref == "http://192.168.8.46/test4/teacher.php"
      ) {
        document.getElementById("txtHint").innerHTML = "注销成功!";
      }
    }
  </script>
  <body onload="refer()">
    <form action="login.php" method="post">
      账号:<input type="text" name="username" id="username" />
      <br />
      密码:<input type="password" name="password" id="password" />
      <br />
      <button type="submit" onclick="sendData()">登录</button>
      <br />
      <span id="txtHint" style="color: red"></span>
    </form>
  </body>
</html>

login.php

<?php session_start();
header("content-type:text/html; charset=utf-8");
// 解决插入中文乱码问题

$con = mysqli_connect("localhost", "root", "123456", "test");
// 检查连接
if (!$con) {
    die("连接错误: " . mysqli_connect_error());
}
mysqli_query($con, "set names utf8");
// 解决插入中文乱码问题

$stmt = $con->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
// 预处理
$stmt->bind_param("ss", $username, $password);
// 绑定字符串
$stmt->bind_result($id, $username, $realname, $password, $role, $score);
// 绑定结果集

$username = $_POST['username'];
$password = $_POST['password'];
// 接收参数

$stmt->execute();
// 执行语句

$result = $stmt->result_metadata();
// 接收结果集

while ($stmt->fetch()) {
    // echo "$id, $username, $password, $role, $score <br>";
}
// 遍历匹配结果(否则匹配条数num_rows为0)


if ($stmt->num_rows != 0) {
    // 如果查询到数据,根据role值设置Session,并跳转到对应页面
    if ($role == 'teacher') {
        $_SESSION['id'] = $id;
        $_SESSION['role'] = 'teacher';
        // 设置session
        header("Location: teacher.php");
        // 跳转页面
    } else {
        $_SESSION['id'] = $id;
        $_SESSION['role'] = 'student';
        // 设置session
        header("Location: student.php");
        // 跳转页面
    }
} else {
    // 登陆失败跳转登录页面
    header("Location: login.html");
}

// 关闭预处理及sql通道
$stmt->close();
mysqli_close($con);

student.php

<?php session_start();
header("content-type:text/html; charset=utf-8");

// 验证Session
if (isset($_SESSION["role"]) && $_SESSION["role"] === 'student') {

    $con = mysqli_connect("localhost", "root", "123456", "test");
    // 检查连接
    if (!$con) {
        die("连接错误: " . mysqli_connect_error());
    }
    $sql = "SELECT * FROM users WHERE id = " . $_SESSION['id'];
    // 根据Session中的id查询记录
    $result = mysqli_query($con, $sql);
    // 获得结果集
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    // 从结果集获得第一条关联数组

    if ($row["score"] === null) {
        // 如果score字段对应记录为空打印没有成绩
        echo "欢迎您!" . $row["username"] . "同学,你还没有成绩。";
    } else {
        // 不为空则打印成绩
        echo "欢迎您!" . $row["username"] . "同学,您的成绩为:" . $row["score"];
    }

    // 释放结果集
    mysqli_free_result($result);
    mysqli_close($con);
} else if (isset($_SESSION["role"]) && $_SESSION["role"] === 'teacher') {

    //  如果设置了session,重定向到其对应页面
    header("Location: teacher.php");
} else {
    // 如果没有Session,重定向到登录页面
    header("Location: login.html");
}
?>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>学生页面</title>
</head>

<body>
    <form action="cancellation.php">
        <button type="submit">注销</button>
    </form>
</body>

</html>

teacher.php

<?php session_start();
header("content-type:text/html; charset=utf-8");

// 验证Session
if (isset($_SESSION["role"]) && $_SESSION["role"] === 'teacher') {
    $con = mysqli_connect("localhost", "root", "123456", "test");
    // 检查连接
    if (!$con) {
        die("连接错误: " . mysqli_connect_error());
    }
    mysqli_query($con, "set names utf8");
    // 解决插入中文乱码问题
    
    echo "欢迎您老师,学生成绩:<br>";
    $sql = "SELECT * FROM users WHERE role = 'student'";
    $result = mysqli_query($con, $sql);
    // 查询所有学生信息并返回结果集

    
    echo '<table  border="1px" width="300px"><tr><td>学号</td><td>姓名</td><td style="width:50px">成绩</td><td style="width:50px"></td></tr>';
    // 构建一个表,打印标题行
    if ($result->num_rows > 0) {
        // 输出数据
        while ($row = $result->fetch_assoc()) {
            echo "<form action='change.php' method='post'><tr><td>" . $row["id"] ."<input type='hidden' name='id' value='" . $row["id"] ."'/>". "</td><td>" . $row["realname"] . "</td><td>" . "<input name='score' style='width:50px' type='text' placeholder='" . $row["score"] . "'/>" . "</td><td><button type='submit' style='width:50px'>修改</button></td></tr></form>";
        }
    } else {
        echo "0 结果";
    }
    echo "</table>";

    // 释放结果集
    mysqli_free_result($result);
    mysqli_close($con);
} else if (isset($_SESSION["role"]) && $_SESSION["role"] === 'student') {
    //  验证失败并重定向到响应界面...
    header("Location: student.php");
} else {
    // 没有设置session跳转到登录界面
    header("Location: login.html");
}
?>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>教师页面</title>
</head>
<body>
    <form action="cancellation.php">
        <button type="submit">注销</button>
    </form>
</body>
</html>

change.php

<?php session_start();
header("content-type:text/html; charset=utf-8");

// 验证Session
if (isset($_SESSION["role"]) && $_SESSION["role"] === 'teacher') {
    $con = mysqli_connect("localhost", "root", "123456", "test");
    // 检查连接
    if (!$con) {
        die("连接错误: " . mysqli_connect_error());
    }
    mysqli_query($con, "set names utf8");
    // 解决插入中文乱码问题
    
    $sql = "UPDATE users SET score=".$_POST['score']." WHERE id=".$_POST['id'];
    if(mysqli_query($con, $sql)){
        header("Location: teacher.php");
    }else{
        echo '修改失败!';
    }
    mysqli_close($con);
} else if (isset($_SESSION["role"]) && $_SESSION["role"] === 'student') {
    //  验证失败并重定向到响应界面...
    header("Location: stuent.php");
} else {
    // 没有设置session跳转到登录界面
    header("Location: login.html");
}
?>

cancellation.php

<?php session_start();
session_destroy();
// 销毁Session
header("Location: login.html");
// 跳转到登录页面
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:18:07  更:2021-08-15 15:18:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 22:23:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码