What are the best practices for handling file uploads and FTP connections in PHP scripts?

When handling file uploads and FTP connections in PHP scripts, it is important to validate and sanitize user input to prevent security vulnerabilities such as file injection attacks. Additionally, it is recommended to use secure protocols such as SFTP for file transfers to protect sensitive data. Finally, always close FTP connections after use to free up resources.

// Example of handling file upload securely
if(isset($_FILES['file'])) {
    $file = $_FILES['file'];
    
    // Validate file type and size
    if($file['type'] == 'image/jpeg' && $file['size'] < 1000000) {
        $uploadDir = 'uploads/';
        $uploadFile = $uploadDir . basename($file['name']);
        
        if(move_uploaded_file($file['tmp_name'], $uploadFile)) {
            echo 'File uploaded successfully.';
        } else {
            echo 'Failed to upload file.';
        }
    } else {
        echo 'Invalid file type or size.';
    }
}

// Example of connecting to an FTP server securely
$ftpServer = 'ftp.example.com';
$ftpUsername = 'username';
$ftpPassword = 'password';
$ftpConn = ftp_connect($ftpServer);

if($ftpConn) {
    $login = ftp_login($ftpConn, $ftpUsername, $ftpPassword);
    
    if($login) {
        // FTP operations here
        
        ftp_close($ftpConn);
    } else {
        echo 'Failed to login to FTP server.';
    }
} else {
    echo 'Failed to connect to FTP server.';
}