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

Bibliothèques et frameworks PHP Discussion :

[Image]Insérer une image générée par PHP dans un formulaire (anti-robot)


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut [Image]Insérer une image générée par PHP dans un formulaire (anti-robot)
    Bonjour,

    Je souhaite faire un formulaire d'inscriptions dans lequel je demande une confirmation d'ouverture de compte avec un code sur une image comme ça se fait beaucoup pour contrer les robots

    Le formulaire en question se trouve ici : http://test.derniere-bataille.net/es...scriptions.php

    Mon script de création de mon image aléatoire :
    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
    //Création d'un code_img
    $code_img = '';
    for($i=0; $i <= 6; $i++)
    {
      $rand = mt_rand(1,3);
      switch($rand)
      {
        case 1 : $code_img.=chr(mt_rand(48, 57)); break;
        case 2 : $code_img.=chr(mt_rand(65, 90)); break;
        case 3 : $code_img.=chr(mt_rand(97, 122)); break;
      }
    }
    header('Content-type: image/png');
    $img = imagecreatefrompng('img/fond_code_img.png');
    $color = imagecolorallocate($img, 0, 0, 0);
    $font = 'img/arial.ttf';
    for($i=0; $i <= 6; $i++)
    {
      $angle = mt_rand(5,25);
      if(mt_rand(0,1)==1) $angle = -$angle;
      imagettftext($img, 14, $angle, 5+(20*$i), 22, $color, $font, substr($code_img,$i,1));
    }
    imagepng($img);
    imagedestroy($img);[/php]
     
    Je ne sais pas comment insérer se script pour que l'image s'affiche dans le formulaire au bon endroit et que je puisse mettre mon
    [php]
    <input name="code_img" type="hidden" id="code_img" value="<? echo md5($code_img); ?>">
    Les Vérifications php se font dans la meme page
    J'ai un code de se style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    //mes verifications de mon formulaire une fois la page envoyée
    ?>
    <html>
    <head>
    </head>
    <body>
    <!-- mon formulaire -->
    </body>
    </html>
    Merci

  2. #2
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: image/png');
    Doit être avant tout HTML !

    Après l'avoir générer soit tu enregistre le fichier php, soit tu enregistre l'image puis tu l'inclue.

    Par contre, ne serait pas plus facile de faire un random puis ensuite prendre les url correspondant aux images préalablement enregistrées ?

  3. #3
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    je crois que je vais pencher sur un enregistrement de l'image mais je sais pas trop quand le faire intervenir dans mon code ... parce que on doit transmettre le code de verif aussi ...

  4. #4
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Pour chaque lettre de l'alphabet, tu crée une image.

    Ensuite tu fait le random, puis tu affiches les images grâce à leur URL avec la balise <img src="..." alt="" />

    Effectivement tu doit passer le code de l'image en paramètre (le cryptage md5 est une bonne idée )

  5. #5
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    j'y avais pas pensé a ça ... c'est vrai que c'est pas une mauvaise idée... mais bon ça fait quand meme 26+26+10 images ... soit 62 (majuscule + minuscule + chiffre) mais à defaut c'est mieux que rien

    si y'a d'autres idées j'suis preneur (notement pour garder le fait que l'inclinaison est aléatoire : http://test.derniere-bataille.net/es...c/code_img.php

  6. #6
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Sinon tu peux enregistrer l'image précédement créer dans ton fichier php sur ton serveur.

  7. #7
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    oui mais je sais pas a quelle moment le faire

    il faudrait que ça soit en debut de code ...avec un header location sur la page qui creer l'image...

    le pb c'est que je recup comment le code qui a ete creer en url ? trop 'dangereux' ... ça beau etre codé en md5 c'est pas indécodable

  8. #8
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Bé normalement le md5 est indécodable !! (systéme RSA si tu connait )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-type: image/png');
    Il ne sert que si ta page doit afficher une image (enfin plutôt être une image !)
    Si c'est juste pour enregistrer une image tu n'en as pas besoin

  9. #9
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    c'est loin d'etre indécodable si c'est un tarer qui a un dictoinnaire de toutes les combinaisons de 6 carctères possibles ... il peut facilement retrouver le bon code (les robots doivent pouvoir le faire et dans ce cas la mon script d'image il sert plus a rien )

  10. #10
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Le md5 est un cryptage sûr : http://fr.wikipedia.org/wiki/Md5

  11. #11
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    En 1996, une faille grave (possibilité de créer des collisions à la demande) est découverte et indique que MD5 devrait être mis de côté au profit de fonctions plus robustes comme SHA-1.
    pas si sur que ça ^^

  12. #12
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    On doit vraiment t'en vouloir et s'y connaitre pour de pirater !!

    Enfin, tu peux utiliser le cryptage SHA-1 avec php ou même un autre plus puissant

  13. #13
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    on est jamais assez prudent

    merci

  14. #14
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    De rien (penses au Résolu )

  15. #15
    Membre régulier Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Points : 118
    Points
    118
    Par défaut
    dans la page inscriptions :

    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
    session_start();
    //Création d'un code_img
    $code_img = '';
     
    for($i=0; $i <= 6; $i++)
    {
      $rand = mt_rand(1,3);
      switch($rand)
      {
        case 1 : $code_img.=chr(mt_rand(48, 57)); break;
        case 2 : $code_img.=chr(mt_rand(65, 90)); break;
        case 3 : $code_img.=chr(mt_rand(97, 122)); break;
      }
    }
    session_register('code_img');

    au niveau du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <img src="inc/code_img.php">
            <input name="code_img" type="hidden" id="code_img" value="<? echo md5($_SESSION['code_img']); ?>">
    dans la page qui genere l'image :
    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
    session_start();
    header('Content-type: image/png');
     
    $img = imagecreatefrompng('../img/fond_code_img.png');
    $color = imagecolorallocate($img, 0, 0, 0);
    $font = '../img/arial.ttf';
    $code_img = $_SESSION['code_img'];
     
    for($i=0; $i <= 6; $i++)
    {
      $angle = mt_rand(5,25);
      if(mt_rand(0,1)==1) $angle = -$angle;
      imagettftext($img, 14, $angle, 5+(20*$i), 22, $color, $font, substr($code_img,$i,1));
    }
    imagepng($img);
    imagedestroy($img);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Créer une image png à partir d'une image de format quelconque avec Python
    Par bguy4 dans le forum Général Python
    Réponses: 3
    Dernier message: 30/10/2014, 10h49
  2. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  3. [images][C/C++] afficher une image en fond d'ecran
    Par soulhouf dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 19/09/2005, 12h54
  4. [Image]comment pre-charger une image
    Par al85 dans le forum 2D
    Réponses: 5
    Dernier message: 28/02/2005, 20h22
  5. [FLASH 5]un bouton dans une image pour revenir sur une scene
    Par patato valdes dans le forum Flash
    Réponses: 7
    Dernier message: 28/04/2004, 20h21

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