php快速入門4 — 文件上傳與session

1. 文件上傳
客戶端發(fā)起請求
?有文件上傳 method必須為post , 且 enctype 的編碼格式必須為:multipart/form-data
服務(wù)器接收數(shù)據(jù)與文件,進(jìn)行保存
完整后臺代碼
代碼解析,獲取文件對象
<?php
? ?if($_POST){
? ? ? print_r($_FILES["txtFile"]);? //鍵名與name值相同
? ?}
文件大小的限制
$_FILES["txtFile"]["size"]: 返回文件的大小,單位:字節(jié)
? ? size : 文件大小
? ? name: 文件名
? ? type: 文件類型
? ? tmp_name: 臨時文件路徑
? ? error: 錯誤信息
文件后綴名的檢查 : 通過name文件名,獲取后綴名
? ?$fileName = $_FILES["txtFile"]["name"];
? ?$arr = explode(".", $fileName);
? ?return $arr[count($arr)-1];
判斷保存文件的路徑,不存在則創(chuàng)建
$uploadPath = "./uploads/";
if (!file_exists($uploadPath)) {
? ? ? ?// 不存在就創(chuàng)建目錄
? ? ? ?mkdir($uploadPath, 777, true); ?// 777:最高權(quán)限 (讀,寫,執(zhí)行)
?}
上傳文件
// 正常命名規(guī)則: 用戶ID+時間戳
? ?// 可以用UUID,但是會消耗性能 ? uuid: 通過唯一識別碼
$fileName = time().'.'.$ext; ? //新的文件名
move_uploaded_file($tempFile, $uploadPath.$fileName); //1. 臨時文件的路徑 ? 2. 保存的文件路徑
2. 會話
http 協(xié)議是無狀態(tài),使用session 和 cookie 兩種技術(shù)來記錄會話狀態(tài)
?cookie :
? ? ?將狀態(tài)存在cookie ,之后的請求,瀏覽器會自動將cookie一起傳到服務(wù)器,讓服務(wù)器可以識別狀態(tài)
? ? ?cookie 是存在客戶端的;
? ? ?cookie 的優(yōu)點:
? ? ? ? ?數(shù)據(jù)存在客戶端上,減輕服務(wù)器的壓力
? ? ?缺點:
? ? ? ? ?數(shù)據(jù)存在客戶端上,安全性比較低
? ?取cookie
<?php? ? ?echo $_COOKIE['name'];?>
? ? 刪除cookie(就是把這個cookie的有效期設(shè)置為當(dāng)前時間以前)
? ? <?php? ? setcookie(“name", "", time() - 3600);?>
?session :
? ? ? 作用:記錄會話狀態(tài)
? ? ? 在服務(wù)器上記錄會話狀態(tài),然后將對應(yīng)的session_id,響應(yīng)給客戶端,并且存在cookie;之后每一次請求都會帶上cookie ; 服務(wù)器會根據(jù)cookie中的session_id找到保存的客戶狀態(tài)
? ? ? 1. 創(chuàng)建session ,保存會話狀態(tài)
? ? ? session_start();?
? ? ? ? ?$_SESSION["user"] = "doubleyong";
? ? ? ? ?$_SESSION["head"] = "xxx.png";
? ? ?2. 獲取session?
? ? ? ? ?session_start();?
? ? ? ? ?if( isset($_SESSION["user"] ) ){
? ? ? ? ? ? ?echo $_SESSION["user"];
? ? ? ? ?}
? ?3. 刪除session?
? ? ?session_start();
? ? ? if( isset($_SESSION["user"] ) ){
? ? ? ? ? ? ?unset(isset($_SESSION["user"])
? ? ? ? ?}
? ? ?//isset() 如果指定變量存在且不為NULL,則返回TRUE,否則返回FALSE。??
? ? ?//unset() 函數(shù)用于銷毀給定的變量??
? ?4. 銷毀所有session?
? ? ? session_start();
? ? ? session_destory(); //銷毀所有session?
更多文章,請看公主號: bug收集? ?個人網(wǎng)站:bugshouji.com?