What are some best practices for creating an upload script in PHP, specifically for resizing images and changing file names based on user input?

When creating an upload script in PHP for resizing images and changing file names based on user input, it is important to validate the uploaded file, ensure it is an image file, resize the image if needed, and rename the file based on user input. This can be achieved by using functions like `getimagesize()` to validate the file type, `imagecreatefromjpeg()` to create a new image from the uploaded file, `imagecopyresampled()` to resize the image, and `move_uploaded_file()` to save the file with the new name.

<?php
// Validate the uploaded file
if(isset($_FILES['image']) && $_FILES['image']['error'] == 0){
    $file = $_FILES['image'];
    
    // Check if the uploaded file is an image
    $img_info = getimagesize($file['tmp_name']);
    if($img_info === false){
        die('Invalid image file');
    }
    
    // Resize the image if needed
    $new_width = 200; // Set the desired width
    $img = imagecreatefromjpeg($file['tmp_name']);
    $resized_img = imagescale($img, $new_width);
    
    // Get the new file name based on user input
    $new_filename = $_POST['new_filename'] . '.jpg'; // Assuming user input is sanitized
    
    // Save the resized image with the new file name
    $upload_dir = 'uploads/';
    $upload_path = $upload_dir . $new_filename;
    imagejpeg($resized_img, $upload_path);
    
    // Move the uploaded file to the uploads directory
    move_uploaded_file($file['tmp_name'], $upload_dir . $file['name']);
    
    echo 'Image uploaded and resized successfully!';
} else {
    echo 'Error uploading image';
}
?>