SecureImage проблеми
В петък Мирчо ми спомена, че “абе нещо security image-то не ти работи”. Аз, като един типичен Тома Неверни, изпробвах нещата от фирменото прокси и видях, че всичко си е наред. С това въпросът приключи, а Мирчо трябваше да си направи собствена сметка в моя блог, за да може да пуска коментари без досадното, неработещо изображение.
Животът беше прекрасен, докато един друг приятел не ми прати мейл, защото не може да пусне _важен_ коментар. E, това вече беше много сериозно, и аз реших да повторя пробата от вкъщи – както си стоях. Logoff и о, ужас – коментарното изображение не работи!
Понеже всичко си работеше отпреди, очевидно подмяната на сървъра в моя хостинг беше предизвикала този грозен страничен ефект. Започнах да се опитвам да гледам какво става, щурах се малко из сорс-кода на SecureImage плъгинът ми… нищо! Всичко изглеждаше както трябва. И като капак на всичко, ако пробвам да направя wget само на изображението, файлчето работи като слънце! Само че от браузърите нито Firefox, нито IE можеха да покажат същото това изображение, което свалето от wget и показано в IrfanView да речем изглеждаше прекрасно.
Изпратих поща на Никола за проблема и започнах да търся някакво (макар и временно) решение. Като начало, за да виждам какво става, започнах да слагам die(“…”) из разни важни точки при генерацията на изображението и да наблюдавам как върви програмния поток. Видях, че наистина всичко си изглежда както трябва и всичко би трябвало да е наред. Точно се зачудих какво да правя и дали има друго решение, освен изключването на плъгина, когато в един момент всичко взе, че тръгна?! Погледнах аз по-внимателно какви съм ги вършил и забелязах, че след слагане на die(“…”) след print-ът, който трябва да изстреля изображението към клиента, всичко работи! Опитах да заместя print-ът с die – всичко работи!
Сега като премислям всичко, като че ли ми е ясно какво става. Очевидно е, че след този print вероятно някой друг [плъгин?] взема инициативата в свои ръце и прецаква нещата. Не зная дали това идва от сървъра или не, но факт е, че спирането на РНР процесинга след като изображението е генерирано постига точно желания ефект.
Стигайки до това предположение, се сетих че в кошът все още се намира изображението, което в петък свалих (след проблемите на Мирчо) и за което тогава ми направи впечатление, че е цели 100К. Я да го извадя аз от коша и да го погледна. Мда, както и предполагах, краят на “изображението” всъщност е край на един HTML поток, докато началото си е начало на PNG файл…
Изводът: Някой продължава да “печата” в изходния файл, след като изображението е генерирано. Този “някой” очевидно е стандартния WordPress процесинг, който “поема инициативата” след SecureImage плъгина. И наистина: ако погледнете някъде на около 1/3 от потока, обявен като PNG изображение, ще видите че започва страничката на вашия блог, така както би се появила при отваряне на централната страница без никакви параметри:
IENDBB`‚
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Първите няколко символа са края на PNG изображението а останалите… да ви изглеждат познато?
Мда, явно ще трябва да пиша отново на автора на плъгина… Но имайки впредвид какво се предложи до сега като отговор от него, май направо ще напиша един английски материал за промените, които съм направил в моя плъгин и ще го пусна като подобрена версия.
Така и така правих промени, сложих и допълнителния код, който би следвало отново да разреши pingbacks/trackbacks, въпреки SecureImage-то. Може да изпробвате дали работят.
Мерси, Мирчо! Мерси, george!