PHP中的表單傳值


 前言:試想一下如果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值

 

(四)POST方式與GET方式的區別

 

- 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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM