На днях подключил капчу стандартными средствами Yii, на локалке все гуд, но при деплое на рабочий сервер появилась проблема в том, что изображение не может быть отображено из-за присутствия ошибок. Как выяснилось, проблема была в кодировке файлов. В общем, один раз решил проблему, перегнав все файлы в utf-8 без bom, но после очередной работы с проектом снова увидел, что капча не работает.
По всей видимости, мой редактор сохраняет файлы в не подходящей кодировке для виджета капчи. Для очередного фикса капчи мне нужно было отыскать файл, который сохранен был не в той кодировке, что надо и поковыряться в настройках редактора, чтобы тот сохранял файлы как надо. Но, подумал я и решил, что может лучше допилить сам виджет капчи, чтобы он меньше вредничал. Так я и сделал.
Файл CCaptchaAction.php
Вот как выглядит старый код, стр.263:
Код: Выделить всё
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
Код: Выделить всё
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header("Content-type: image/png");
ob_start();
ob_clean();
imagepng($image);
imagedestroy($image);
ob_end_flush();
До этого искал решение проблемы, и в общем-то четкого ответа я не нашел, кроме как все файлы перекодировать в utf-8 without bom.
Хорошо бы внести эту поправку в последующую версию yii, одной проблемой, как говорится, да поубавится
