小迪安全第二十二天-安全开发-PHP应用&数据库操作&留言板功能&第三方插件

开发工具/环境

Visual Studio Code + PHPStorm + PhpStudy + Navicat Premium

  • Visual Studio Code:HTML&JS&CSS开发
  • DW : HTML&JS&CSS开发
  • PHPStorm : 专业PHP开发IDE
  • PhpStudy :Apache MYSQL环境
  • Navicat Premium: 全能数据库管理工具

注:以上软件自行寻找资源下载

数据库操作

数据创建

  • 打开Apache和MySQL

  • 创建一个数据库 库名是demo01

  • 案例中保存表名为gbook

    • 创建效果如图

数据库连接

  • 看是否连接成功可以加判断

出现空白数据

MYSQL增删改查

增:insert into 表名(`列名1`, `列名2`) value('列1值1', '列2值2');

  • 向单表插入单条数据
    • 向 students 表中插入一条数据:
    • INSERT INTO students (name, age, gender) VALUES ('张三', 20, '男');
  • 向单表插入多条数据
    • INSERT INTO students (name, age, gender) VALUES('李四', 21, '男'),('王五', 22, '女');
  • 从一个表插入数据到另一个表
    • INSERT INTO students_backup (name, age, gender)SELECT name, age, gender FROM students;

删:delete from 表名 where 列名 = '条件';

  • 从单表中删除单条记录
    • DELETE FROM students WHERE id = 1;
  • 从单表中删除多条记录
    • DELETE FROM students WHERE age > 25;
  • 使用 DELETE JOIN 删除关联表中的记录
    • DELETE orders, customers FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.country = 'USA';

改:update 表名 set 列名 = 数据 where 列名 = '条件';

  • 修改单条记录
    • UPDATE employees SET salary = 5000.00 WHERE emp_id = 1;
  • 修改多条记录
    • UPDATE employees SET salary = salary * 1.1 WHERE dept_id = 2;
  • 使用 JOIN 修改关联表数据
    • UPDATE employees JOIN departments ON employees.dept_id = departments.dept_id SET employees.dept_id = 3 WHERE departments.dept_name = 'Sales';
  • 修改记录的多个字段
    • UPDATE employees SET emp_name = 'John Doe', salary = 6000.00 WHERE emp_id = 2;

  • 查:select * from 表名 where 列名='条件';

    • 单表查询案例

      • 查询 employees 表中所有员工的信息:select * from employees;
      • 查询 employees 表中薪资大于 5000 的员工姓名和薪资:select name, salary from employees where salary > 5000;
    • 多表查询案例

      • 查询 emp 表和 dept 表中部门编号匹配的员工姓名和部门名称:SELECT e.name, d.dept_name FROM emp e, dept d WHERE e.dept_id = d.id;
      • 查询 emp 表和 salgrade 表中员工薪资对应的薪资等级:SELECT e.name, e.salary, s.grade FROM emp e, salgrade s WHERE (e.salary >= s.losal AND e.salary <= s.hisal);
    • 子查询案例
      • 查询薪资最高的员工信息:SELECT * FROM employees WHERE salary = (SELECT MAX(salary) FROM employees);

PHP应用

PHP函数:连接,选择,执行,结果,关闭等

PHP常用函数

mysqli_connect()

  • 打开一个到MySQL的新的连接。

  • mysql_connect() 自 PHP 5.5.0 起已废弃,并在将来会被移除,应使用 MySQLi 或 PDO_MySQL 扩展来替换

  • 语法:mysqli_connect(host,username,password,dbname,port,socket);

    • 如:

mysqli_select_db()

  • 更改连接的默认数据库

  • mysqli_select_db() 函数用于指定一个默认的数据库,和 MySQL 命令中的 use dbname 功能相似

  • 语法:mysqli_select_db(connection,dbname);

mysqli_query()

  • 执行某个针对数据库的查询。

  • mysqli_query() 函数用于向 MySQL 服务器发送一条 SQL 查询。

    • mysqli_query() 函数执行 SELECT 查询

    • mysqli_query() 函数执行 INSERT 查询

    • mysqli_query() 函数执行 UPDATE 查询

    • mysqli_query() 函数执行 DELETE 查询

  • 语法:mysqli_query(connection,query,resultmode);

mysqli_fetch_row()

  • 函数从结果集中取得一行,并作为枚举数组返回。

  • 语法:mysqli_fetch_row(result);

mysqli_close()

超全局变量

  • $GLOBALS:这种全局变量用于在 PHP 脚本中的任意位置访问全局变量
  • $_SERVER:这种超全局变量保存关于报头、路径和脚本位置的信息。
  • _REQUEST:_REQUEST 用于收集 HTML 表单提交的数据。
  • $_POST:广泛用于收集提交method="post" 的HTML表单后的表单数据。
  • _GET:收集URL中的发送的数据。也可用于收集提交HTML表单数据(method="get") _FILES:文件上传且处理包含通过HTTP POST方法上传给当前脚本的文件内容。
  • $_ENV:是一个包含服务器端环境变量的数组。
  • $_COOKIE:是一个关联数组,包含通过cookie传递给当前脚本的内容。
  • $_SESSION:是一个关联数组,包含当前脚本中的所有session内容。
  • 参考:

html混编

  • HTML混编是指在HTML代码中嵌入其他编程语言(如PHP、JavaScript等)或使用特殊语法实现动态内容生成的技术。

案例:留言板

  • 留言板功能

    • 结果:

  • 代码快

    • 添加留言

      • 知识点:_SERVER['REMOTE_ADDR']和_SERVER['HTTP_USER_AGENT']
    • 显示留言

    • 注意

      • 定义了函数所以要调用
  • 配置文件

    • 涉及了包含函数

      • 解决代码混乱
        • 用包含函数 把配置内容单独写到一个文件
  • 删除功能

第三方插件

  • ueditor

    • 引用

  • 第三方组件安全问题

相关推荐
好奇的菜鸟5 分钟前
Ubuntu 18.04 启用root账户图形界面登录指南
数据库·ubuntu·postgresql
天桥下的卖艺者7 分钟前
使用R语言编写一个生成金字塔图形的函数
开发语言·数据库·r语言
Facechat18 分钟前
鸿蒙开发入坑篇(九):本地数据库 (RDB) 深度解析
数据库·华为·harmonyos
Dxy123931021619 分钟前
MySQL删除表语句详解
数据库·mysql
uoKent29 分钟前
MySQL常见命令梳理大纲
数据库·mysql
青岑CTF32 分钟前
moectf2023-了解你的座驾-胎教版wp
安全·web安全·网络安全
晚霞的不甘41 分钟前
Flutter for OpenHarmony专注与习惯的完美融合: 打造你的高效生活助手
前端·数据库·经验分享·flutter·前端框架·生活
2301_7657031443 分钟前
工具、测试与部署
jvm·数据库·python
山岚的运维笔记1 小时前
SQL Server笔记 -- 第13章:IF...ELSE
数据库·笔记·sql·microsoft·sqlserver
创客小邓1 小时前
Qt对SQLite数据库的操作
数据库·qt·sqlite