[RESOLU] Problème d'header

Eléphanteau du PHP | 39 Messages

31 août 2012, 00:50

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.

Mammouth du PHP | 1511 Messages

31 août 2012, 05:20

Ç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 ?

Eléphanteau du PHP | 39 Messages

31 août 2012, 10:48

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.

ViPHP
ViPHP | 2577 Messages

31 août 2012, 13:46

Il faut mettre les capcha comme tu mettrais une image : avec <img =src="ton fichier php">

Eléphanteau du PHP | 39 Messages

31 août 2012, 15:13

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...

Mammouth du PHP | 1511 Messages

31 août 2012, 15:28

Passe ton image en base64 dans le src directement.

Eléphanteau du PHP | 39 Messages

31 août 2012, 15:44

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é?

Eléphanteau du PHP | 39 Messages

31 août 2012, 22:09

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;