後端開發技術教學(四) 數據交互延伸

書接上回:後端開發技術教學(三) 表單提交、數據處理-CSDN博客

必要資源:

trae中文版下載網址: TRAE - The Real AI Engineer

phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 · 小皮出品


前言

        大家好,我是小楓。書接上期說到的後端數據交互,分別從數據接收、數據處理以及數據存儲3方面解說。但在$_FILES(即文件上傳)的解說上只是略略帶過。

        其實$_FILES$_GET $_POST的運作框架並不樣,大家會發現只有這些好像並不能組成一個完整的文件數據接收系統。

        所以今天小編會跟大家分享完整的文件數據接收區塊是怎麼形成,我將會從代碼意義運作邏輯以及輸出實例3方面給大家解說。


目录

前言

一、$_FILES與$_GET & $_POST的不同

        1.1  編碼模式

        1.2  數據存儲方式

二、完整架構

三、進階處理

        3.1 安全過濾 (防XSS)

        3.2 數據驗證

四、小結


一、$_FILES$_GET & $_POST的不同

        

        1.1  編碼模式

$_POST & $_GET : 接收的是字符串數據

$_FILES : 接收的是2進制文件數據

//get & post
<form action="" method="get/post"><input type="text/password">
</form>//file
<form action="" method="post" enctype="multipart/form-data">    //數據接收必定要用post<input type="file">                         //type必定是file  
</form>

        多出的enctype="multipart/form-data"是用來轉換編碼模式的,以防2進制文件被轉義了。

        1.2  數據存儲方式

$_POST & $_GET : 以數組的方式存儲,可更改下標。

$_FILES : 以2維數組的方式存儲,第2維的下標不可更改

print_r($_FILES);
::輸出:
Array{  [file] => Array{                    //第一維,下標可更改[name] => '文件原始名'      //以下全都是第2維,下標不可更改[type] => 'MIME類型'[tmp_name] => '臨時存儲路徑'[error] => '文件是否上傳成功'    //顯示1,2,3,4即為接收失敗,0為成功[size] => '文件大小(字節)'}

二、完整架構

[name] => 1.png
[type] => image/png
[tmp_name] => C:\Users\Administrator\AppData\Local\Temp\phpCB1D.tmp
[error] => 0
[size] => 205401if($_POST){        //if(假條件)=>不會執行指令,$_POST為空=假條件
​	$name=$_FILES['file']['name'];
​	$tmp_name=$FILES['file']['tmp_name'];==更改源文件名字::取文件後綴名(txt  php  html…)
​			//strrchr($name,".");	=>  標記$name最右邊的"."
​			//substr((…),1)		    =>	從第一個字符開始截取//substr((strrchr($name,".")),1) => 從$name最右邊的"."開始截取字符​	$ext=substr(strrchr($name,"."),1);	//從"."後開始取後綴名//生成隨機文件名
​	$file_name=time().rand().".".$ext;    //time()=>輸入現在的時間 | rand()=>隨機生成字符::e.g 1234567890.1234567890.png==趁臨時文件存在的時候,將其永久保存下來​	$dir="upload";​	if(!is_dir($dir)){    //判斷$dir是不是一個文件夾,不是的話再執行下面的命令
​		mkdir($dir,0777,true);	//若文件夾不存在,會創建一個名為$dir 權限全開 的递歸文件夾
​	}//編寫文件存儲路徑
​	$path=$dir."/".$file_name;	  //  upload/1234567890.1234567890.txt (跟C D盤差不多)​	if(!move_upload_file($tmp_name,$path)){	    //若文件沒移動到指定路徑,執行下面命令//move_upload_file(文件名,要移動到的路徑)=> 移動指定文件到指定路徑
​		echo "上傳失敗";
​		exit;	//往後命令不再運行,即停止運行腳本}
​}

1. 查看$_FILES是否為空,不為空才可以開始執行以下命令

2. 把文件後綴取下來 (png)

3. 隨機生成以png為後綴的文件名(1234567890.png)

4. 查看指定文件夾是否存在,不存在則創建一個

5. 編寫文件存儲路徑(文件夾名+ / + 隨機生成的文件名)

6. 查看文件是否己被移至指定路徑        

        簡單來說就是,更改源文件名字,並趁臨時文件存在的時候,把他永久保存下來。

三、進階處理

        3.1 安全過濾 (防XSS)

$username = htmlspecialchars($username);
$email = htmlspecialchars($email);
$gender = htmlspecialchars($gender);

htmlspecialchars() : 將特殊字符轉為 HTML 實體(防 XSS)

        3.2 數據驗證

filter_var($email, FILTER_VALIDATE_EMAIL)    //驗證郵箱格式if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {    //過濾無效格式die("無效的郵箱格式!");    //終止腳本並返回錯誤信息}

其他過濾器:  FILTER_SANITIZE_STRING(清理字符串)

四、小結

        大家只需要記住它們的功能和運作邏輯就可以了,實操可以讓AI幫忙寫代碼,具體的之前已經說過了,這裡就不多說了。接我們會開始研究後端python、數據庫mysql以及分析漏洞哈。大家敬請期待了。


trae AI寫代碼:後端開發技術教學(一) [附2025最新可用 phpstudy2018下載鏈接] -CSDN博客

文件管理合集:Linux基礎命令合集——文件管理篇(一)基礎文件操作-CSDN博客

數組 & if指令:後端開發技術教學(二) 條件指令、循環結構、定義函數-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918522.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华清远见25072班C语言学习day7

重点内容&#xff1a;二维整形数组&#xff1a;定义&#xff1a;数据类型 数组名[行数][列数];数组中元素的访问&#xff1a;通过行标和列标来访问、行标从0开始&#xff0c;列标从0开始初始化和赋值&#xff1a;int arr1[2][3]{1,2,3,4,5,6}; -->二维数组完全初始化int arr…

FPGA实现Aurora 64B66B数据回环传输,基于GTX高速收发器,提供2套工程源码和技术支持

目录1、前言Aurora 64B66B是啥&#xff1f;官方有Example&#xff0c;为何要用你这个&#xff1f;工程概述免责声明2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我这里已有的 GT 高速接口解决方案本方案在Aurora 8B10B上的应用3、工程详细设计方…

实用硬件设计规范要点-原理图

此处所涉及的并非指导硬件工程师如何绘制原理图&#xff0c;而是旨在规范原理图的模板&#xff0c;统一原理图的设计方式&#xff0c;确保原理图具备良好的可阅读性&#xff0c;并统一与下一环节——PCB LAYOUT的接口。具体的硬件设计方法&#xff0c;诸位需在未来的工作中加以…

用 Apache Iceberg 与 Apache Spark 在 Google Cloud 打造高性能、可扩展的数据湖仓

大数据分析版图不断演进&#xff0c;组织正寻求更灵活、可扩展且具成本效益的方式来管理与分析海量数据。这一追求催生了数据湖仓范式&#xff0c;它将数据湖的低成本存储与灵活性&#xff0c;与数据仓库的数据管理能力和事务一致性相结合。站在这场变革中心的是 Apache Iceber…

【PyTorch学习笔记 - 02】 Datasets DataLoaders

前言 处理数据样本的代码可能会变得杂乱无章且难以维护&#xff1b;为了获得更好的可读性和模块化&#xff0c;我们理想的情况是将数据集代码与模型训练代码解耦。PyTorch 提供了两个数据处理类&#xff1a; torch.utils.data.DataLoader 和 torch.utils.data.Dataset&#x…

JavaWeb 30 天入门:第七天 —— 异常处理机制

在前六天的学习中&#xff0c;我们掌握了 Java 的基础语法、面向对象核心特性、抽象类与接口等知识。今天我们将学习 Java 中的异常处理机制&#xff0c;这是保证程序健壮性的关键技术。在 JavaWeb 开发中&#xff0c;无论是用户输入错误、数据库连接失败还是网络异常&#xff…

编译器默认生成的c++类六大成员函数

编译器默认生成的c类六大成员函数 编译器默认生成的六大成员函数 当你定义一个空类时&#xff0c;例如&#xff1a; class Empty {};如果代码中没有显式定义任何成员函数&#xff0c;C编译器会在需要时&#xff08;例如&#xff0c;代码中实际调用了这些函数&#xff09;为你…

人工智能概念:常见的大模型微调方法

文章目录一、微调技术的底层逻辑1.1 预训练与微调的关系1.2 核心目标&#xff1a;适配任务与数据二、经典微调方法详解2.1 全量微调&#xff08;Full Fine-Tuning&#xff09;2.2 冻结层微调&#xff08;Layer-Freezing Fine-Tuning&#xff09;2.3 参数高效微调&#xff08;Pa…

动态路由协议(一)

1. 动态路由 概述 静态路由在大网络里太麻烦&#xff08;设备多、配置量大&#xff0c;拓扑变了还要手动改&#xff09; 静态路由是由工程师手动配置和维护的路由条目&#xff0c;命令行简单明确&#xff0c;适用于小型或稳定的网络。静态路由有以下问题&#xff1a; 无法适…

LINUX812 shell脚本:if else,for 判断素数,创建用户

问题 [rootweb ~]# for((i2;i<n;i)) > if [ $n -ne $i ] && [ $((n%i)) -eq 0 ];then -bash: 未预期的符号 if 附近有语法错误 您在 /var/spool/mail/root 中有邮件 [rootweb ~]#[rootweb ~]# cat judgeprimeok.sh declare -i n read -p "please type the n…

游戏中角色持枪:玩家操控角色,角色转向时枪也要转向

角色持有枪&#xff0c;玩家&#xff08;你&#xff09;操控角色&#xff0c;那么&#xff0c;在角色转向时&#xff0c;枪也要转向。 先看看简单情况&#xff1a;假定角色只面向左或右方向&#xff0c;pygame中用这句来实现&#xff1a;pos self.facing * self.gun_offset s…

深度学习入门Day8:生成模型革命——从GAN到扩散模型

一、开篇&#xff1a;创造力的算法革命从昨天的Transformer到今天的生成模型&#xff0c;我们正从"理解"世界迈向"创造"世界。生成对抗网络(GAN)和扩散模型(Diffusion Model)代表了当前生成式AI的两大主流范式&#xff0c;它们让机器能够生成逼真的图像、音…

基于WRF-Chem的不同气溶胶的辐射效应的研究

前言目前我对于气溶胶辐射效应的理解就是设计敏感性实验&#xff0c;基础实验打开气溶胶参与辐射开关&#xff08;aer_ra_feedback&#xff09;&#xff0c;其他的实验则关闭气溶胶参与辐射过程开关&#xff0c;也有去掉某些气溶胶的影响&#xff0c;如黑碳&#xff08;BC&…

专题:2025人形机器人与服务机器人技术及市场报告|附130+份报告PDF汇总下载

原文链接&#xff1a;https://tecdat.cn/?p43583 当特斯拉Optimus在工厂里精准分拣电池&#xff0c;当普渡机器人在酒店完成跨楼层配送&#xff0c;一个万亿级的智能革命正在拉开序幕。服务机器人与人形机器人不再是实验室里的概念&#xff0c;而是正在重塑制造业、服务业的“…

JS 模块化与打包工具

一、模块化体系&#xff1a;ESM vs CJS 深入1.语法与静态性(1)ESM:静态语法&#xff0c;可被打包器做 Tree-shakingexport function play() {}export default ...import { play } from ./mod.js(2)CJS:运行时 require() , 分析能力弱&#xff0c;不利于 Tree-shaking2.Node 解析…

防御保护11

带宽管理 --- 设备对自身的流量进行管理和控制&#xff0c;去提供带宽保证、带宽限制等等功能。 带宽限制 带宽保证 连接数限制 应用场景 实现带宽管理 带宽通道 --- 定义了被管理对象所能使用的带宽资源 整体的保证带宽和最大带宽&#xff1b; SW1-SW2&#xff1a;VLAN 201 --…

[激光原理与应用-254]:理论 - 几何光学 - 自动对焦的原理

自动对焦&#xff08;Auto Focus, AF&#xff09;是现代光学系统&#xff08;如相机、手机摄像头、监控设备等&#xff09;的核心功能之一&#xff0c;其原理是通过检测成像面的清晰度或测量物体距离&#xff0c;驱动透镜组移动至最佳对焦位置。以下是自动对焦的详细原理及技术…

【Python办公】Mermaid代码转图片工具 - Tkinter GUI版本

目录 专栏导读 项目简介 功能特性 🎨 直观的图形界面 📝 代码编辑功能 🖼️ 图片生成与预览 💾 文件操作 ⚡ 性能优化 技术架构 核心技术栈 架构设计 安装与使用 环境要求 依赖安装 运行程序 使用步骤 代码示例 基本流程图 时序图 甘特图 核心代码解析 1. 主类结构 2. …

【Activiti】要点初探

Activiti 7.0.0配置 流程配置节点流程XML流程部署部署后会操作表&#xff1a;&#xff08;每部署一次增加一条记录&#xff09; ACT_RE_DEPLOYMENT 流程定义部署表 ACT_RE_PROCDEF 流程定义表 ACT_GE_BYTEARRAY 流程启动查看任务&#xff08;张三要查看准备办理任务&#xff0…

VBS 字符串处理

一. 字符串是由Unicode字符组成的一串字符。通常由数字&#xff0c;字母&#xff0c;符号组成。二. 常用函数1. 消除空格 Ltrim: 删除字符串左侧的空格。 Rtrim: 删除字符串右侧的空格。 trim: 删除字符串左侧和右侧的空格。a" hello " b"sx"msgbo…