What potential issues can arise when using PHP for an upload system?

One potential issue when using PHP for an upload system is the risk of allowing users to upload malicious files that can harm the server or compromise security. To mitigate this risk, it is important to validate and sanitize user input, restrict file types and sizes, and store uploaded files in a secure directory outside of the web root.

// Validate file type and size before uploading
$allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
$maxSize = 5 * 1024 * 1024; // 5MB

if (in_array($_FILES['file']['type'], $allowedTypes) && $_FILES['file']['size'] <= $maxSize) {
    // Move uploaded file to a secure directory
    move_uploaded_file($_FILES['file']['tmp_name'], '/path/to/secure/directory/' . $_FILES['file']['name']);
    echo 'File uploaded successfully.';
} else {
    echo 'Invalid file type or size.';
}