Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/04/2006, 18h33   #1
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
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 :
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 :
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
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 19h18   #2
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
Code :
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 ?
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 19h50   #3
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
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 ...
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 19h56   #4
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
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 )
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h06   #5
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
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
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h11   #6
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
Sinon tu peux enregistrer l'image précédement créer dans ton fichier php sur ton serveur.
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h14   #7
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
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
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h16   #8
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
Bé normalement le md5 est indécodable !! (systéme RSA si tu connait )

Code :
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
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h18   #9
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
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 )
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h23   #10
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
Le md5 est un cryptage sûr : http://fr.wikipedia.org/wiki/Md5
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h25   #11
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
Citation:
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 ^^
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h41   #12
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
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
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h44   #13
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
on est jamais assez prudent

merci
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 20h51   #14
Membre confirmé
 
Étudiant
Inscription : avril 2006
Messages : 237
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2006
Messages : 237
Points : 299
Points : 299
De rien (penses au Résolu )
Tipoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2006, 22h48   #15
Membre du Club
 
Inscription : janvier 2005
Messages : 244
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 244
Points : 54
Points : 54
Envoyer un message via MSN à dark_vidor
dans la page inscriptions :

Code :
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 :
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 :
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);
dark_vidor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h17.


 
 
 
 
Partenaires

Hébergement Web