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

書接上回:後端開發技術教學(三) 表單提交、數據處理-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
英文地址,請注明出處:http://en.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…