Page 1 sur 1

Problème d'header

Posté : 31 août 2012, 00:50
par damien01
Bonsoir,

Je rencontre un problème dans la création d'une page contenant un captcha.

Après avoir modifié le header pour afficher l'image au format PNG le contenu de la page disparaît.

Si quelqu'un peut m'expliquer pourquoi...

Bonne soirée.

Re: Problème d'header

Posté : 31 août 2012, 05:20
par momox
Ça manque de code par ici...

Comment tu veux qu'on te dise pourquoi ton soufflé se dégonfle si tu ne nous dis pas comment tu l'as fait ?

Re: Problème d'header

Posté : 31 août 2012, 10:48
par damien01
Bonjour,

Merci pour ta réponse, je vais donc étoffer un peu tout ça.

J'ai une classe Captcha qui me génère une image au format png et me retourne le numéro qui a été généré.
Ce captcha est appelé par la classe MessageFormBuilder.
namespace Library\FormBuilder;
    
    class MessageFormBuilder extends \Library\FormBuilder
    {
        public function build()
        {
            
            //...

            New \Library\Captcha(array(
                'size' => '34',
                'marge' => '15',
                'font' => 'angelina.ttf',
                'num' => '6'
            ));
        }
    }
Dans le controller de mon application, je fais appel à cette classe qui a pour rôle de me générer un formulaire que je configure en fonction du module (inscription / connexion / message /...) .

Puis, étant donnée que je génère une image je modifie le header pour que l'image soit affichée.
$formHandler = new \Library\FormHandler($form, $this->managers->getManagerOf('Message'), $request);
//...
$this->app->httpResponse()->addHeader("Content-type: image/png");
C'est à ce niveau là que vient le problème puisque tout le contenu de la page s'efface au profit de l'image du captcha.
Si à contrario je ne modifie pas le header j'ai le contenu de la page qui s'affiche mais sans l'image du captcha. J'ai alors un code indescriptible.

En espérant avoir été compréhensible.

Bonne journée.

Re: Problème d'header

Posté : 31 août 2012, 13:46
par Mazarini
Il faut mettre les capcha comme tu mettrais une image : avec <img =src="ton fichier php">

Re: Problème d'header

Posté : 31 août 2012, 15:13
par damien01
C'est la seule solution? On ne peut pas passer l'image générée?

Je trouve pas très propre de passer par un fichier tiers, qui plus est, est "attaquable" via l'url...

Re: Problème d'header

Posté : 31 août 2012, 15:28
par momox
Passe ton image en base64 dans le src directement.

Re: Problème d'header

Posté : 31 août 2012, 15:44
par damien01
Merci pour ta réponse, pourrais tu me donner plus de détailles.

Il faut que j'encode avec la fonction base64_encode() l'image qui est généré?

Re: Problème d'header

Posté : 31 août 2012, 22:09
par damien01
Bien pour ceux qui auraient le même problème que moi voici la solution que j'ai trouvé à mon problème:
ob_start();
$this->image->generateImage();
$output = ob_get_contents();
ob_end_clean();
$base64 = base64_encode(($output));
$tag = 'data:image/png;base64,' . $base64;
return $tag;