What are the best practices for handling file uploads in PHP and processing them for FTP transfer?

When handling file uploads in PHP and processing them for FTP transfer, it is important to validate the uploaded file, sanitize the file name, and move the file to a secure directory before transferring it via FTP. Additionally, it is recommended to use secure FTP functions to ensure the safe transfer of files.

// Handle file upload
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $file_name = $_FILES['file']['name'];
    $file_tmp = $_FILES['file']['tmp_name'];
    
    // Validate file
    if (is_uploaded_file($file_tmp)) {
        // Sanitize file name
        $file_name = preg_replace("/[^A-Za-z0-9.]/", "", $file_name);
        
        // Move file to secure directory
        $upload_dir = 'uploads/';
        move_uploaded_file($file_tmp, $upload_dir . $file_name);
        
        // FTP transfer
        $ftp_server = 'ftp.example.com';
        $ftp_user = 'username';
        $ftp_pass = 'password';
        
        $conn_id = ftp_connect($ftp_server);
        ftp_login($conn_id, $ftp_user, $ftp_pass);
        
        ftp_put($conn_id, $file_name, $upload_dir . $file_name, FTP_BINARY);
        
        ftp_close($conn_id);
    }
}