php实现带权限的增删改查功能

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: php实现带权限的增删改查功能

前言

原生php实现简易的招聘网站:逻辑流程如下:

第一:boss能增删改查(招聘内容)。求职者只能看招聘内容.(权限的不同)

第二:不登录不能查看。必须登录某个账号才能查看.

第三:防止重复提交 防止输出空数据

第四:多用户的哦

代码如下。

cyg.php(注册页面)

<!DOCTYPE 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>带权限的curd(招聘网站)</title>
</head>
<body>
  <form action="cyg.php" method="POST">
    名字:<input type="text" name="name" />
    管理员还是员工:
    <select name="type">
          <option value="1" selected>员工</option>
          <option value="2">管理员</option> 
    </select>
    <input type="submit" value="提交">
  </form>
</body>
</html>
<?php
$link=mysqli_connect('localhost','root','root','a');//链接数据库(数据库软件账号密码都是root.数据库是a)
//然后是指定php链接数据库的字符集
mysqli_set_charset($link,'utf8');//字符串utf8
$type=$_POST['type'];
$name=$_POST['name'];
$date=date('Y-m-d H:i:s');
$sql = "INSERT INTO qx(name,type,time)
VALUES ('{$name}','{$type}','{$date}')";
$result=mysqli_query($link,$sql);
if($result)
{
  $_SESSION['login']=1;
}
else
{
  $_SESSION['login']=0;
}
//上面这些都是注册boss或者求职者成功啦

cyg1.php(登录页面)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <form action="cyg1.php" method="POST">
    登录用户名<input type="text" name="username">
    登录密码<input type="password" name="password">
    <input type="submit"  name="submit" >
  </form>
</body>
</html>
<?php
SESSION_START(); //防止表单重复提交
if (isset($_POST['submit'])) { 
    if ($_SESSION['is_submit'] == '0') { 
        $_SESSION['is_submit'] = '1'; 
        echo "代码块,要做的事,代码...<a οnclick='history.go(-1);' href='javascript:void(0)'>返回</a>"; 
    } else { 
        echo "请不用重复提交<a href='index.php'>PHP+SESSION防止表单重复提交</a>"; 
    } 
}
//用户输入的(表单传过来的)
$username=$_POST['username'];
$password=$_POST['password'];
if(!$username||!$password)
{
  return ;
}
//=========================
$link=mysqli_connect('localhost','root','root','a');
//然后是指定php链接数据库的字符集
mysqli_set_charset($link,'utf8');
//查询然后判断数据库中的用户名username+密码password是不是与表单传过来的$username+$password相匹配.
$sql="select type from qx where name='{$username}' and password='{$password}'";
$query=mysqli_query($link,$sql);//运行sql
$result=mysqli_fetch_array($query);//把对象变成数组,不然直接输出会报错
if($result)
{
  $_SESSION['login']=1;
}
else
{
  $_SESSION['login']=0;
}
if($result['type']==1)
{
  echo "<script>alert('求职者登录成功');location.href='cyg2.php';</script>";
}
else
{
  echo "<script>alert('BOSS登录成功');location.href='index.php';</script>";
}

BOSS登陆后的权限

查看权限

<?php
session_start();
if($_SESSION['login']!=1)
{
  echo "<script>alert('抱歉,用户还没登录');window.location.href='cyg1.php';</script>";
}
?>
<?php
$link=mysqli_connect('localhost','root','root','a');
//然后是指定php链接数据库的字符集
mysqli_set_charset($link,'utf8');
$sql="select id,name from content";
//模糊查询出像数据库中的title或者content里面的值或者说像数据库中的title或者content里面的某一段值相对应的就行了,就可以输出啦
$result=mysqli_query($link,$sql);//运行sql
?>
<!--显示的效果-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <table border="1" cellpadding="5">
    <tr>
      <td>id</td>
      <td>内容</td>
    <?php 
      while ($row=mysqli_fetch_array($result)) {//把对象编程数组输出,不然会报错哦
        # code...
    ?>
    <tr>
      <td><?=$row['id'];?></td>
      <td><?=$row['name'];?></td>
      <td><a href="update.php?id=<?php echo $row['id']; ?>">更新</a></td>
      <td><a href="delete.php?id=<?php echo $row['id']; ?>">删除</a></td>
    </tr>
    <?php 
    }
    ?>
    <td><a href="create.php">创建</a></td>
    </tr>
  </table>
</body>
</html>

删除权限

<?php
session_start();
if($_SESSION['login']!=1)
{
  echo "<script>alert('抱歉,用户还没登录');window.location.href='cyg1.php';</script>";
}
?>
<?php
$link=mysqli_connect('localhost','root','root','a');
//然后是指定php链接数据库的字符集
mysqli_set_charset($link,'utf8');
//$sql = "DELETE FROM `search` WHERE `id` = '$_POST[id]'";
//模糊查询出像数据库中的title或者content里面的值或者说像数据库中的title或者content里面的某一段值相对应的就行了,就可以输出啦
$result=mysqli_query($link,"DELETE FROM content WHERE id ='$_GET[id]'");//运行sql
$sql="select * from content";
//模糊查询出像数据库中的title或者content里面的值或者说像数据库中的title或者content里面的某一段值相对应的就行了,就可以输出啦
$result=mysqli_query($link,$sql);//运行sql
?>
<!--显示的效果-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <table border="1" cellpadding="5">
    <tr>
      <td>id</td>
      <td>内容</td>
    <?php 
      while ($row=mysqli_fetch_array($result)) {//把对象编程数组输出,不然会报错哦
        # code...
    ?>
    <tr>
      <td><?=$row['id'];?></td>
      <td><?=$row['name'];?></td>
      <td><a href="update.php?id=<?= $row['id']; ?>">更新</a></td>
      <td><a href="delete.php?id=<?= $row['id']; ?>">删除</a></td>
    </tr>
    <?php 
    }
    ?>
    <td><a href="create.php">创建</a></td>
    </tr>
  </table>
</body>
</html>

更新权限

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
    <form action="update.php" method="GET">
    <input type="hidden" name="id" value="<?php echo $_GET['id']?>">
    更新内容:<input type="text" name="content">
    <input type="submit" value="搜索">
  </form>
</body>
</html>
<?php
$link=mysqli_connect('localhost','root','root','a');
//然后是指定php链接数据库的字符集
mysqli_set_charset($link,'utf8');
//$sql = "DELETE FROM `search` WHERE `id` = '$_POST[id]'";
//模糊查询出像数据库中的title或者content里面的值或者说像数据库中的title或者content里面的某一段值相对应的就行了,就可以输出啦
$result=mysqli_query($link,"UPDATE content set name='$_GET[content]' WHERE id ='$_GET[id]'");//运行sql
$sql="select * from content";
//模糊查询出像数据库中的title或者content里面的值或者说像数据库中的title或者content里面的某一段值相对应的就行了,就可以输出啦
$result=mysqli_query($link,$sql);//运行sql
?>
<!--显示的效果-->
<!DOCTYPE html>
<?php
session_start();
if($_SESSION['login']!=1)
{
  echo "<script>alert('抱歉,用户还没登录');window.location.href='cyg1.php';</script>";
}
?>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <table border="1" cellpadding="5">
    <tr>
      <td>id</td>
      <td>内容</td>
    <?php 
      while ($row=mysqli_fetch_array($result)) {//把对象编程数组输出,不然会报错哦
        # code...
    ?>
    <tr>
      <td><?=$row['id'];?></td>
      <td><?=$row['name'];?></td>
      <td><a href="update.php?id=<?= $row['id']; ?>">更新</a></td>
      <td><a href="delete.php?id=<?= $row['id']; ?>">删除</a></td>
      <td><a href="create.php">创建</a></td>
    </tr>
    <?php 
    }
    ?>
    </tr>
  </table>
</body>
</html>

创建权限

<?php
session_start();
if($_SESSION['login']!=1)
{
  echo "<script>alert('抱歉,用户还没登录');window.location.href='cyg1.php';</script>";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <form action="create.php" method="POST">
     <textarea style="height:150px;width:200px;" name="content">
     </textarea>
    <input type="submit" value="提交">
  </form>
</body>
</html>
<?php
if(!$_POST['content'])
{
exit();
}
$content=$_POST['content'];
$link=mysqli_connect('localhost','root','root','a');
//然后是指定php链接数据库的字符集
mysqli_set_charset($link,'utf8');
$sql = "INSERT INTO content(name)
VALUES ('{$content}')";
mysqli_query($link,$sql);
echo "<script>alert('创建成功');location.href='index.php';</script>";
?>

求职者的权限(查看权限)

<?php
session_start();
if($_SESSION['login']!=1)
{
  echo "<script>alert('抱歉,用户还没登录');window.location.href='cyg1.php';</script>";
}
?>
<?php
$link=mysqli_connect('localhost','root','root','a');
//然后是指定php链接数据库的字符集
mysqli_set_charset($link,'utf8');
$sql="select name,id from content";
//模糊查询出像数据库中的title或者content里面的值或者说像数据库中的title或者content里面的某一段值相对应的就行了,就可以输出啦
$result=mysqli_query($link,$sql);//运行sql
?>
<!--显示的效果-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<h1>求职者只能查看</h1>
  <table border="1" cellpadding="5">
    <tr>
      <td>id</td>
      <td>内容</td>
    <?php 
      while ($row=mysqli_fetch_array($result)) {//把对象编程数组输出,不然会报错哦
        # code...
    ?>
    <tr>
      <td><?=$row['id'];?></td>
      <td><?=$row['name'];?></td>
    </tr>
    <?php 
    }
    ?>
    </tr>
  </table>
</body>
</html>

sql

-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- 主机: localhost
-- 生成日期: 2022-10-07 23:15:43
-- 服务器版本: 5.7.26
-- PHP 版本: 7.3.4
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- 数据库: `a`
--
-- --------------------------------------------------------
--
-- 表的结构 `content`
--
CREATE TABLE `content` (
  `id` int(11) NOT NULL,
  `name` text COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- 转存表中的数据 `content`
--
INSERT INTO `content` (`id`, `name`) VALUES
(2, '   \r\n     HTML标签textarea在大部分浏览器中只要指定行(rows)和列(cols)属性,就可以规定textarea的尺寸,但大小在浏览器中(firefox、chrome)还是可以调节的,使用CSS的height和width属性效果和rows cols定义的效果相同,可以拖动右下角图标改变大小。但是过分拖动大小会影响页面布局,使页面变得不美观。可以通过添加如下样式禁用拖动,固定大小:'),
(7, '   \r\n        HTML标签textarea在大部分浏览器中只要指定行(rows)和列(cols)属性,就可以规定textarea的尺寸,但大小在浏览器中(firefox、chrome)还是可以调节的,使用CSS的height和width属性效果和rows cols定义的效果相同,可以拖动右下角图标改变大小。但是过分拖动大小会影响页面布局,使页面变得不美观。可以通过添加如下样式禁用拖动,固定大小:  更新  删除\r\n5   '),
(8, '666');
-- --------------------------------------------------------
--
-- 表的结构 `qx`
--
CREATE TABLE `qx` (
  `id` int(11) NOT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL COMMENT '名字',
  `type` int(255) NOT NULL COMMENT '用户的类型(2管理员  员工1)',
  `time` date NOT NULL COMMENT '时间',
  `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- 转存表中的数据 `qx`
--
INSERT INTO `qx` (`id`, `name`, `type`, `time`, `password`) VALUES
(1, '陈业贵', 2, '2022-10-07', '123456'),
(2, 'liwen', 1, '2022-10-07', '123456'),
(3, 'aaa', 1, '2022-10-07', '123456'),
(4, 'kkk', 1, '2022-10-07', '123456');
--
-- 转储表的索引
--
--
-- 表的索引 `content`
--
ALTER TABLE `content`
  ADD PRIMARY KEY (`id`);
--
-- 表的索引 `qx`
--
ALTER TABLE `qx`
  ADD PRIMARY KEY (`id`);
--
-- 在导出的表使用AUTO_INCREMENT
--
--
-- 使用表AUTO_INCREMENT `content`
--
ALTER TABLE `content`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
--
-- 使用表AUTO_INCREMENT `qx`
--
ALTER TABLE `qx`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

boss账号:陈业贵 123456

求职者:aaa 123456

liwen 123456

kkk 123456

效果:


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
JavaScript PHP UED
16 PHP实现图书删除功能
路老师在知乎上分享了PHP语言的知识,帮助大家入门和深入了解PHP。本文介绍了如何实现图书删除功能,通过点击删除按钮触发`deleteBook.php`文件,完成删除操作并返回列表页。同时,还新增了一个“新增”按钮,优化了用户体验。
15 2
16 PHP实现图书删除功能
|
6天前
|
JavaScript PHP
17 PHP 实现批量删除功能
路老师在本文中继续优化图书删除功能,实现批量删除图书。通过添加删除按钮、表格前的复选框以及实现PHP后端逻辑,展示了完整的删除流程和效果。
21 8
|
6天前
|
数据库连接 PHP
15 PHP实现图书修改功能
路老师分享了如何使用PHP实现图书信息的修改功能。首先,在列表页面点击编辑按钮,跳转至`editBook.php`,通过ID获取图书信息并展示在`edit.html`页面。用户提交修改后,`updateBook.php`处理更新请求,成功后返回到图书列表页。纯干货,技术知识满满。
15 2
|
6天前
|
PHP
14 PHP实现图书添加功能
路老师分享PHP语言知识,帮助大家入门并深入了解PHP。本文介绍如何实现图书添加功能,包括创建HTML表单和PHP后端处理逻辑,最后展示实际效果。
15 2
|
2月前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
2月前
|
PHP
深入浅出PHP之文件上传功能
【9月更文挑战第26天】本文将带你了解PHP中的文件上传功能,从基本概念到实战操作,一步步教你如何实现文件上传。我们将通过代码示例和详细的解释,让你轻松掌握这一技能。
|
2月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
3月前
|
数据处理 PHP 开发者
PHP中实现简易计算器功能
【8月更文挑战第31天】在编程的世界里,将理论应用到实践是检验知识掌握程度的试金石。本文将通过一个简单的PHP项目——构建一个简易计算器,引导你理解PHP的基本语法及其在实际应用中的运用。我们将从零开始,逐步搭建起这个计算器,并在过程中加深对PHP数据处理和函数使用的理解。无论你是初学者还是希望温故而知新的开发者,这篇文章都将为你提供一次愉快的编程之旅。
|
3月前
|
Cloud Native PHP Docker
PHP中实现简易计算器功能
【8月更文挑战第31天】本文深入浅出地介绍了云原生技术中的一个重要组成部分—Docker容器。通过实际案例,我们将一起探索如何将应用容器化,并部署到云端。文章不仅涵盖了Docker的基本操作和概念,还提供了详细的代码示例,帮助初学者快速上手。让我们一起开启云原生技术的奇妙旅程吧!
|
4月前
|
编译器 PHP 开发者
深入PHP 7新特性:性能优化与功能增强
【7月更文挑战第15天】本文将深入探讨PHP 7版本中引入的一系列新特性,重点分析这些特性如何对PHP应用的性能进行优化和对功能进行增强。我们将从类型声明的引入、抽象语法树(AST)的改进、到性能提升的各个方面进行剖析,并通过实际代码示例来展示这些新特性的应用。文章旨在为PHP开发者提供一份详尽的指南,帮助他们更好地利用PHP 7的新特性来构建更快、更稳定的应用程序。
50 9