小迪安全第二十二天-安全开发-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

    • 引用

  • 第三方组件安全问题

相关推荐
SarL EMEN6 小时前
mysql之联合索引
数据库·mysql
l1t6 小时前
DeepSeek总结的DuckDB anofox-forecast季节调整时间序列预测插件功能
开发语言·数据库
meta INGU6 小时前
mysql数据被误删的恢复方案
数据库·mysql
27669582926 小时前
acw_sc__v2
数据库·acw_sc__v2·acw_sc__v2逆向·acw_sc__v2算法分析·acw_sc__v2分析·acw_sc__v2还原·acw_sc__v2-ck
Empty-Filled6 小时前
Claude Gateway 排查教程
网络·数据库·人工智能
椰猫子6 小时前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
niucloud-admin6 小时前
PHP V6 单商户常见问题——云编译报错处理
php
xxjj998a6 小时前
Laravel 1.x:PHP框架的原始魅力
android·php·laravel
2401_882273726 小时前
pattern属性在旧版Android浏览器无效怎么办_手动验证补充【操作】
jvm·数据库·python
xxjj998a7 小时前
Laravel 5.x版本核心特性全解析
php·laravel