What are the common approaches for creating custom Captchas in PHP?

When creating custom Captchas in PHP, common approaches include generating a random string of characters or numbers, creating an image of the string with distortion to make it harder for bots to read, and validating the user input against the generated Captcha string.

// Generate a random string for Captcha
$captcha_string = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 6);

// Create an image with the Captcha string
$captcha_image = imagecreate(200, 50);
$bg_color = imagecolorallocate($captcha_image, 255, 255, 255);
$text_color = imagecolorallocate($captcha_image, 0, 0, 0);
imagestring($captcha_image, 5, 50, 20, $captcha_string, $text_color);

// Display the Captcha image
header('Content-type: image/png');
imagepng($captcha_image);
imagedestroy($captcha_image);

// Validate user input against the Captcha string
if(isset($_POST['captcha_input'])){
    if($_POST['captcha_input'] == $captcha_string){
        echo "Captcha validation successful!";
    } else {
        echo "Captcha validation failed!";
    }
}