У меня есть скрипт, использующий класс капчи, подобный этому
<?php
@session_start();
require str_replace('\\','/',dirname(__FILE__)) . "/example.extended.class.php";
class Ccaptcha extends ExampleExtended {
private $color1;
private $color2;
private $color3;
private $bgcolor;
private $bg_transparent = true;
private $final_width;
public function __construct() {
parent::__construct();
$this->final_width = $this->captcha_width;
$this->color1 = $this->captcha_color1;
$this->color2 = $this->captcha_color2;
$this->color3 = $this->captcha_color3;
$this->bgcolor = $this->captcha_colorbg;
}
public function CreateCaptcha() {
// generate random number
$randomnr = rand(1000, 9999);
// MD5 it and store in session
$_SESSION['commax_random_number'] = md5($randomnr);
// Generate image
$im = imagecreatetruecolor(200, 200);
imagesavealpha($im, true);
$color_1 = imagecolorallocate($im, 120, 180, 240);
$color_2 = imagecolorallocate($im, 120, 180, 240);
$color_3 = imagecolorallocate($im, 120, 180, 240);
$background = imagecolorallocatealpha($im, 0, 0, 0, 127);
imagefill($im, 0, 0, $background);
imagestring($im, 100, 50, 50, $randomnr, $color_3);
// prevent client side caching
header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
//send image to browser
header ("Content-type: image/png");
imagepng($im);
imagedestroy($im);
}
}
$captcha = new Ccaptcha();
$captcha->CreateCaptcha();
?>
Недавно на конкретном сервере установка перестала работать, и отображается сообщение «Невозможно отобразить изображение, поскольку оно содержит ошибки.
Странно, что если я удаляю require для example.extended.class.php и удаляю все родительские :: __ construct (), это будет работать нормально. Ну, мы бы подумали, что что-то выводится в ExampleExtended и связывается с заголовками. Правильно я пошел в ExampleExtended и удалил все оттуда. Просто классовая структура, внутри которой ничего нет. Все еще не идти.
Кроме того, точно такой же сценарий хорошо работает на локальном сервере, а также на нескольких производственных серверах ...