IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Captcha et HttpHandler


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Par défaut Captcha et HttpHandler
    Bonjour ....


    Je veux mettre un captcha en place sur un formulaire d'enregistrement. Pour cela j'ai fais des recherches et j'ai trouvé des exemples sur le web ...

    A cette occasion je découvre , via l'article de Nicolas HUMANN http://humann.developpez.com/httphandler/, les HttpHandler

    Mais bon ...Ca marche pas et je ne sais pas pourquoi ..cela être bête comme chou mais je ne vois pas ...


    Voici mon code :



    1 Ma classe qui créer mon captcha :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    using System;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Drawing;
    using System.Drawing.Drawing2D;
     
     
    public class CaptchaHandler : IHttpHandler
    {
     
    	void captcha (string CheminSauvegarde)
    	{
            ///============================================
            ///GENERATION ALEATOIRE DU CODE A 6 CARACTERES
            ///============================================
            Random Ran = new Random();
            string Str = "";
     
            string[] Alpha = {"a","b","c","d","e","f","g","h","i","j",
            "k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
            "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P",
            "Q","R","S","T","U","V","W","X","Y","Z","0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
     
            for (int i = 0; i <= 5; i++)
            {
                int intRanAlpha = Ran.Next(0, 61);
                Str = Str + Alpha[intRanAlpha].ToString();
            }
     
            Alpha = null;
            Ran = null;
     
     
            ///============================================
            ///CREATION IMAGE ET SAUVEGARDE
            ///============================================
     
            Bitmap Img = new Bitmap(85, 35, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            Graphics Gr = Graphics.FromImage(Img);
     
            SizeF sizeff = Gr.MeasureString(Str, new Font("Arial", 25, FontStyle.Strikeout, GraphicsUnit.Pixel), 300);
            HatchBrush hatchBrush = new HatchBrush(HatchStyle.Wave, Color.DarkBlue, Color.Gray);
            Gr.FillRectangle(hatchBrush, new Rectangle(0, 0, 85, 35));
            Gr.DrawString(Str, new Font("Arial", 15, FontStyle.Strikeout, GraphicsUnit.Point), Brushes.White, 5, 5);
            Img.Save(CheminSauvegarde);
     
    	}
     
     
        public bool IsReusable
        {
            get
            {
                return true;
            }
        }
     
        public void ProcessRequest(System.Web.HttpContext context)
        {
            captcha("F:\\users\\web-inscriptions.fr\\httpdocs\\Captcha\\Capcha.jpg");
            System.Drawing.Image Img = System.Drawing.Image.FromFile("F:\\users\\web-inscriptions.fr\\httpdocs\\Captcha\\Capcha.jpg");
            Img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            Img.Dispose();
        }
     
    }

    Je précise que la partie qui génére le code , génere le fichier image et sauvegarde l'image marche. Elle a été testée dans des fonctions à part et fonctionne correctement, l'image est générée et sauvegardé dans le répertoire voulu ...Il n'y a pas de problème de droits ..( ...il n'y a plus...)

    Comme expliqué dans le tutoriel sur les httpHandlers j'ai rajouté cette directive à mon web.config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <httpHandlers>
    <add path="Captcha.axd" verb="*" type="CaptchaHandler" validate="true"/>
    </httpHandlers>

    Voici ma balise sur ma page :

    <img src="Captcha.axd" alt="" />


    voila ...J'ai mon fichier image mais il ne s'affiche pas dans ma page ...Il n'y a pas de message d'erreur ...


    Je cale ...

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Va falloir passer en debug et voir si tout se passe bien dans ProcessRequest

  3. #3
    Membre éprouvé
    Inscrit en
    Décembre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2003
    Messages : 108
    Par défaut
    moi je dis de vérifier ce qui se passe au niveau de la balise à savoir qu'elle est capricieuse et que si src ne lui convient pas elle mettra "" à la place

    donc déjà regarde la source html de ta page aspx pour voir ce qu'il y a au niveau de <img src="Captcha.axd" alt="" />

    ton httphandler renvoi t-il quel que chose ?

  4. #4
    Membre éclairé Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Par défaut Non
    la balise reste comme ça :

    <img src="Captcha.axd" alt="" />

    le httphandler renvoi rien ....

    Beuh ....

    Je cherche depuis deux jours ...marre ...je vais retser sur les vieilles méthodes..

    P.JEAN

  5. #5
    Membre confirmé Avatar de issou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 181
    Par défaut
    C'est normal qu'elle renvoie rien :

    Faut appeler le Response.End() qui renvoie la réponse au client avec ton image en mémoire

    et non pas le dispose sur IMG .


    ++

  6. #6
    Membre éclairé Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Par défaut Test
    Par découragement j'ai monté une solution sans les HttpHandler mais j'ai pris la precaution de garder mon autre solution ...

    Je vais tester le Response.End()

    P.JEAN

Discussions similaires

  1. Redirection après validation d'un captcha
    Par GarGamel55 dans le forum Langage
    Réponses: 4
    Dernier message: 08/09/2006, 19h42
  2. Génération d'image de sécurité (captcha) et système alternatif
    Par eric41 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 02/05/2006, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo