当前位置: 首页 > news >正文

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

書接上回:後端開發技術教學(三) 表單提交、數據處理-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.lryc.cn/news/615351.html

相关文章:

  • 2025年渗透测试面试题总结-09(题目+回答)
  • 力扣(轮转数组)
  • 欧拉公式的意义
  • gpt-oss 全量技术解读
  • AI鉴伪技术:守护数字时代的真实性防线
  • 数学学习 | 高数、线代、概率论及数理统计荐书
  • 【C++】set
  • AI热点周报(8.3~8.9):OpenAI重返开源,Anthropic放大招,Claude4.1、GPT5相继发布
  • 第二十八天(cookiesessiontokeny验证)
  • 李宏毅深度学习教程 第16-18章 终身学习+网络压缩+可解释性人工智能
  • STM32学习笔记6-TIM-2输出比较功能
  • 《汇编语言:基于X86处理器》第12章 复习题和练习
  • [每周一更]-(第155期):深入Go反射机制:架构师视角下的动态力量与工程智慧
  • 元宇宙技术如何改变社交方式?
  • (第三篇)spring cloud之Zookeeper注册中心
  • Go 实用指南:如何执行 Skyline 查询(Pareto 最优点筛选)
  • 图片拆分工具,自定义宫格切割
  • 在Spring Boot项目中如何动态切换数据源、数据库?
  • java -jar xxx.jar 提示xxx.jar中没有主清单属性报错解决方案
  • 【Git】Visual Studio 实现合并分支
  • Alibaba Cloud Linux 3 安装 git
  • DigitalProductId解密算法php调试版piddebug.php
  • n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
  • AG32cpld实现一个UartTx“外设”
  • Kafka服务端NIO操作原理解析(二)
  • Arm Development Studio 安全通告:CVE-2025-7427
  • 人脸情绪检测数据集-9,400 张图片 智能客服系统 在线教育平台 心理健康监测 人机交互优化 市场研究与广告 安全监控系统
  • 【面试题】cookie和session 的区别
  • 【26】C#实战篇—— 多个线程函数对同一个 Excel 文件进行写操作引起的文件冲突问题,解决方法
  • Playwright C# 自动登录并上传 Excel 文件 的可运行示例