Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menentukan dengan pasti sama ada fail telah dimuat naik dalam PHP?

Bagaimana untuk menentukan dengan pasti sama ada fail telah dimuat naik dalam PHP?

DDD
DDDasal
2024-11-01 06:19:31826semak imbas

How to Reliably Determine if a File Was Uploaded in PHP?

Menilai Muat Naik Fail Pengguna dalam PHP

Apabila mengesahkan input pengguna, memastikan integriti muat naik fail adalah penting. Walau bagaimanapun, sesetengah borang mungkin membenarkan muat naik pilihan. Dalam kes sedemikian, melangkau pengesahan untuk pengguna yang belum menyerahkan fail adalah penting.

Menentukan Kehadiran Muat Naik Fail

Untuk menyemak sama ada fail telah dimuat naik, menggunakan $_FILES ['myfile']['size'] <= 0 tidak boleh dipercayai. Sebaliknya, fungsi is_uploaded_file() menawarkan penunjuk yang lebih tepat.

Menggunakan is_uploaded_file()

<code class="php">if(!file_exists($_FILES['myfile']['tmp_name']) || !is_uploaded_file($_FILES['myfile']['tmp_name'])) {
    echo 'No upload';
}

Seperti yang dijelaskan oleh dokumentasi rasmi, fungsi ini:

  • Memastikan bahawa fail telah dimuat naik melalui kaedah HTTP POST.
  • Melindungi daripada percubaan berniat jahat untuk mengakses fail yang tidak diingini.

Sampel Pelaksanaan

Pertimbangkan contoh ini daripada kelas FileUpload:

public function fileUploaded()
{
    if(empty($_FILES)) {
        return false;       
    } 
    $this->file = $_FILES[$this->formField];
    if(!file_exists($this->file['tmp_name']) || !is_uploaded_file($this->file['tmp_name'])){
        $this->errors['FileNotExists'] = true;
        return false;
    }   
    return true;
}

Kaedah ini mula-mula menyemak sama ada tatasusunan $_FILES kosong. Jika tidak, ia mendapatkan semula fail yang dimuat naik dan mengesahkan kewujudannya menggunakan file_exists(). Akhir sekali, is_uploaded_file() mengesahkan sama ada fail itu sebenarnya telah dimuat naik.

Atas ialah kandungan terperinci Bagaimana untuk menentukan dengan pasti sama ada fail telah dimuat naik dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn