开滦建设集团网站,网站开发背景图片,秦皇岛做网站的公司哪家好,东莞活动外包書接上回#xff1a;後端開發技術教學(三) 表單提交、數據處理-CSDN博客
必要資源#xff1a;
trae中文版下載網址: TRAE - The Real AI Engineer
phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 小皮出品 前言 大家好#xff0c;我是小楓。書接上期說到的後…書接上回後端開發技術教學(三) 表單提交、數據處理-CSDN博客
必要資源
trae中文版下載網址: TRAE - The Real AI Engineer
phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 · 小皮出品 前言 大家好我是小楓。書接上期說到的後端數據交互分別從數據接收、數據處理以及數據存儲方面解說。但在$_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 methodget/postinput typetext/password
/form//file
form action methodpost enctypemultipart/form-data //數據接收必定要用postinput typefile //type必定是file
/form 多出的enctypemultipart/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最右邊的.開始截取字符 $extsubstr(strrchr($name,.),1); //從.後開始取後綴名//生成隨機文件名
$file_nametime().rand()...$ext; //time()輸入現在的時間 | rand()隨機生成字符::e.g 1234567890.1234567890.png趁臨時文件存在的時候將其永久保存下來 $dirupload; 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博客