PHP中的表單傳值
阿新 • • 發佈:2018-12-18
前言:試想一下如果PHP沒有了表單傳值,那麼就相當於一個沒有表達能力的人,因此表單傳值在php中是相當重要的,但是不難,接下來我們一起來探討一下吧------>
(一)什麼是表單傳值
概念:表單傳值指的是通過表單(如果還不知道表單的小夥伴要看看html的知識)構建資料,傳遞給伺服器。
(二)表單傳值的方式(有且只有兩種)
get方式
<form method="get"> xxxx </form>
get方式 <form method="post"> xxxx </form>
(三)PHP接收表單傳值資料的方法
接收post傳值的方式: var_dump($_POST);
接收get傳值的方式: var_dump($_GET);
接收get/post傳值的方式: var_dump($_REQUEST);
小結:
1.要想能夠成功接收傳遞的引數,那麼input屬性裡面必須要加name,
2.伺服器接收到的值是以name為關聯陣列索引的一個數組
3.如果想要接收復選框值,那麼name=xxx[],需要加上中括號
4.單選框時候需要有相同的name值
(四)
- GET方式具有可見性,而POST方式不具有可見性;
- 基於第一點,POST方式在安全性上比GET方式要高一些;
- 在傳輸的資料量上,POST方式可能比GET方式要大;
- 在支援的資料型別上,GET方式僅支援ASCII碼資料型別,POST方式無限制;
(五)檔案上傳
概念:檔案上傳指的是將檔案從本地傳輸到指定的伺服器。
構造表單上傳的三要素 1.必須是post方式 2.必須要在form表單屬性裡面加 enctype="multipart/form-data" 3.必須加<input type="file">
接收表單上傳檔案的引數 1. $_FILES 接收使用者上傳檔案的陣列變數
引數包含6部分引數: name type tmp_name error size 為索引的索引陣列
其中error包含了6個碼值(0-7除了5)的錯誤提示
tmp_name 臨時存放的檔案(會過期,因此轉移這個檔案就達到了檔案上傳的效果)
2. move_uploaded_file(檔案臨時的路徑,轉移到的路徑)
同名檔案的上傳: 思路(把name=xxx[])
不同名檔案上傳: 思路(構造name不同名字就可以了)
(六)封裝檔案上傳的方法
<?php function upFile($file){ #檢查系統錯誤 switch ( $file['error'] ){ case 1: echo '檔案上傳的大小超出了系統配置檔案的限制大小~'; return false; case 2: echo '檔案上傳的大小超過了瀏覽器的限制!'; return false; case 3: echo '檔案沒有完全上傳完!'; return false; case 4: echo '使用者沒有選擇需要上傳的檔案喲~'; return false; case 6: case 7: echo '伺服器繁忙,請客官稍候再試~'; return false; } #檢查邏輯錯誤 //檢查格式型別是否符合要求 $limitType = ['image/jpeg', 'image/png'];//定義出允許的格式型別 if( !in_array($file['type'], $limitType) ){//如果上傳的檔案格式型別不在允許的範圍內,則給出提示資訊,並且中止函式的執行 echo '您上傳的檔案格式型別不符合要求,只能上傳' . implode('或', $limitType) . '格式的檔案'; return false; } //檢查檔案的大小是否符合邏輯要求 $limitSize = 250 * 1024;//限定的大小為250KB if( $file['size']>$limitSize ){//如果上傳的檔案大小超過了限定的大小,則給出提示,並且中止函式的執行 echo '您上傳的檔案超過' . ($limitSize/1024) . 'KB的大小,請重新選擇上傳的檔案!'; return false; } #構建絕對不重複的檔名 $fileName = uniqid('img_') . date('YmdHis') . '_' . mt_rand(0, 10000) . strstr($file['name'], '.'); $path = 'F:/home/class/day11/code/upload/'; $wholeFileName = $path . $fileName; #轉移檔案到指定目錄 $re = move_uploaded_file($file['tmp_name'], $wholeFileName); if( $re ){//上傳成功 echo '恭喜你,檔案上傳成功'; return true; }else{//上傳失敗 echo '系統繁忙,請稍候再試!'; return false; } }