Bird
Raised Fist0
PHPprogramming~5 mins

$_FILES for file uploads in PHP - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the $_FILES superglobal in PHP?

The $_FILES superglobal is used to collect information about files uploaded via an HTML form. It stores details like the file name, type, size, temporary location, and any upload errors.

Click to reveal answer
beginner
Name the main keys inside the $_FILES['input_name'] array for an uploaded file.
  • name: Original file name on the client machine
  • type: MIME type of the file
  • tmp_name: Temporary filename on the server
  • error: Error code associated with the upload
  • size: Size of the uploaded file in bytes
Click to reveal answer
beginner
What does an error value of 0 mean in $_FILES['input_name']['error']?

An error value of 0 means the file uploaded successfully without any errors.

Click to reveal answer
beginner
How do you access the temporary file path of an uploaded file named profile_pic?

You access it with $_FILES['profile_pic']['tmp_name']. This is the path where PHP stores the uploaded file temporarily before you move it.

Click to reveal answer
beginner
Why should you use move_uploaded_file() after receiving a file via $_FILES?

Because the uploaded file is stored in a temporary location, move_uploaded_file() safely moves it to a permanent directory on your server. This prevents the file from being deleted after the script ends.

Click to reveal answer
Which $_FILES key holds the original name of the uploaded file?
Atmp_name
Bsize
Cname
Derror
What does $_FILES['file']['error'] === 4 indicate?
AFile size exceeded limit
BNo file was uploaded
CPartial upload
DUpload successful
Which PHP function should you use to move an uploaded file to a permanent location?
Amove_uploaded_file()
Brename()
Ccopy()
Dunlink()
Where does PHP store uploaded files before you move them?
AIn the <code>$_POST</code> array
BIn the <code>$_GET</code> array
CIn the user's browser cache
DIn a temporary folder on the server
What type of HTML form attribute is required to upload files?
Aenctype="multipart/form-data"
Bmethod="get"
Caction="upload.php"
Dtarget="_blank"
Explain how PHP's $_FILES array works when a user uploads a file through a form.
Think about the journey of the file from the user's computer to your server.
You got /5 concepts.
    Describe the steps to safely handle a file upload in PHP using $_FILES.
    Focus on safety and correctness when saving the uploaded file.
    You got /5 concepts.

      Practice

      (1/5)
      1. What does the $_FILES superglobal in PHP store?
      easy
      A. Database connection details
      B. User session data
      C. Information about files uploaded via an HTML form
      D. Server environment variables

      Solution

      1. Step 1: Understand the purpose of $_FILES

        $_FILES is a special PHP variable that holds details about files uploaded through a form.
      2. Step 2: Compare with other options

        User session data is stored in $_SESSION, database details are not stored here, and server variables are in $_SERVER.
      3. Final Answer:

        Information about files uploaded via an HTML form -> Option C
      4. Quick Check:

        $_FILES = Uploaded file info [OK]
      Hint: Remember: $_FILES always relates to uploaded files [OK]
      Common Mistakes:
      • Confusing $_FILES with $_SESSION
      • Thinking $_FILES holds server info
      • Assuming $_FILES stores form text inputs
      2. Which of the following is the correct way to access the name of an uploaded file with input name userfile?
      easy
      A. $_FILES['userfile']['filename']
      B. $_FILES['userfile']['file']
      C. $_FILES['userfile']['file_name']
      D. $_FILES['userfile']['name']

      Solution

      1. Step 1: Recall the structure of $_FILES

        Each uploaded file's info is stored in an array with keys like 'name', 'type', 'tmp_name', 'error', and 'size'.
      2. Step 2: Identify the correct key for the original filename

        The key for the original filename is 'name', not 'filename' or 'file_name'.
      3. Final Answer:

        $_FILES['userfile']['name'] -> Option D
      4. Quick Check:

        Filename key = 'name' [OK]
      Hint: Use 'name' key to get original filename from $_FILES [OK]
      Common Mistakes:
      • Using 'filename' or 'file_name' instead of 'name'
      • Confusing keys with other $_FILES elements
      • Trying to access $_POST for file names
      3. What will the following PHP code output if a file named 'photo.jpg' is uploaded successfully?
      if ($_FILES['pic']['error'] === 0) {
          echo $_FILES['pic']['name'];
      } else {
          echo 'Upload failed';
      }
      medium
      A. photo.jpg
      B. Upload failed
      C. 0
      D. Undefined index error

      Solution

      1. Step 1: Check the error code for the uploaded file

        An error code of 0 means the upload was successful with no errors.
      2. Step 2: Output the original filename

        Since error is 0, the code echoes the original filename stored in $_FILES['pic']['name'], which is 'photo.jpg'.
      3. Final Answer:

        photo.jpg -> Option A
      4. Quick Check:

        Error 0 means success, so filename prints [OK]
      Hint: Error 0 means success; print 'name' to get filename [OK]
      Common Mistakes:
      • Assuming error 0 means failure
      • Printing error code instead of filename
      • Not checking if 'pic' index exists
      4. Identify the error in this PHP snippet handling file upload:
      if ($_FILES['upload']['error'] == 0) {
          move_uploaded_file($_FILES['upload']['name'], 'uploads/' . $_FILES['upload']['name']);
          echo 'File saved';
      } else {
          echo 'Error uploading';
      }
      medium
      A. Not checking file size before moving
      B. Using 'name' instead of 'tmp_name' in move_uploaded_file
      C. Checking error with == instead of ===
      D. Missing semicolon after echo statement

      Solution

      1. Step 1: Understand move_uploaded_file parameters

        The first parameter must be the temporary file path stored in tmp_name, not the original filename.
      2. Step 2: Identify the incorrect usage

        The code incorrectly uses $_FILES['upload']['name'] as the source file, which is wrong and causes failure.
      3. Final Answer:

        Using 'name' instead of 'tmp_name' in move_uploaded_file -> Option B
      4. Quick Check:

        move_uploaded_file needs tmp_name as source [OK]
      Hint: Use 'tmp_name' as source file in move_uploaded_file [OK]
      Common Mistakes:
      • Using original filename instead of temp file path
      • Ignoring error codes before moving files
      • Not validating file size or type
      5. You want to save an uploaded file only if it is less than 2MB and has no errors. Which code snippet correctly checks these conditions before moving the file?
      if (/* condition here */) {
          move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
          echo 'Upload successful';
      } else {
          echo 'Upload failed';
      }
      hard
      A. if ($_FILES['file']['error'] === 0 && $_FILES['file']['size'] < 2097152)
      B. if ($_FILES['file']['error'] == 1 || $_FILES['file']['size'] > 2097152)
      C. if ($_FILES['file']['error'] !== 0 && $_FILES['file']['size'] <= 2097152)
      D. if ($_FILES['file']['error'] === 0 || $_FILES['file']['size'] > 2097152)

      Solution

      1. Step 1: Check for no upload errors

        The error code must be exactly 0 to confirm no errors during upload.
      2. Step 2: Check file size limit

        The file size must be less than 2MB (2 * 1024 * 1024 = 2097152 bytes).
      3. Step 3: Combine conditions correctly

        Both conditions must be true, so use logical AND (&&) with strict equality and less-than size check.
      4. Final Answer:

        if ($_FILES['file']['error'] === 0 && $_FILES['file']['size'] < 2097152) -> Option A
      5. Quick Check:

        Error 0 and size < 2MB = correct check [OK]
      Hint: Use error === 0 and size < 2MB with && [OK]
      Common Mistakes:
      • Using || instead of && for conditions
      • Checking error != 0 instead of === 0
      • Confusing size units or limits
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard