Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 21-12-2004 13:26:13

Din
Membre
Date d'inscription: 18-12-2004
Messages: 23

limiter les fausses inscriptions

Bonjour,

Dans le site que j'ai créé, j'ai un formulaire d'enregistrement. Le problème c'est que la plupart des inscrits sont faux l'oeuvre de personnes qui n'ont que çà à faire pour être poli lol ou de générateur.  sad

Je ne contrôle que si certains champs sont vides et la syntaxe de l'adresse email.

Je compte mettre en place un contrôle comme nuke où l'on doit taper le code que l'on voit dans une image pour contrer les générateurs.

Et j'aimerais contrôler si l'adresse email est valide. Existe t'il un script pour faire çà ?

Et pour finir récupérer l'adresse IP du client et l'afficher avant de confirmer.
J'ai trouvé une commande

Code:

$_SERVER["REMOTE_ADDR"]

Est ce la bonne commande ?

Je sais que celà n'empêchera pas de faux inscriptions mais si je pouvais limiter ce serait déjà pas mal. Sinon mes tables vont vite être remplis pour rien et comme je génére les numéros çà me fausse tout.

Hors ligne

 

#2 21-12-2004 13:38:47

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: limiter les fausses inscriptions

alors, pour verifier l'adresse mail :

Code:

<?php
if (ereg("^[[:alnum:]]+@[[:alpha::]+.[[:alpha::]]{2,3}$", $email) == 0) { echo "le mail n'est pas valide"; }
?>

pour l'ip, c'est exactement ca wink

pour le code de validation
il faut que tu utilise la librairie GD.
récupere une série de chiffres & lettres que tu stocke dans une base de données par exemple
puis, tu affiche cette série dans une image (générée grace à GD)
et tu vérifie que la série tapée est égale à la série demandée

vouala  wink

Hors ligne

 

#3 21-12-2004 15:07:21

Din
Membre
Date d'inscription: 18-12-2004
Messages: 23

Re: limiter les fausses inscriptions

Je voulais dire par vérifier si l'adresse mail est valide s'est savoir si elle existe vraiment. J'ai déjà un script java qui vérifie la syntaxe comme je l'ai écrit dans mon premier post  roll . Mais en php s'est bien de l'avoir aussi  wink

Par contre je ne connaissais pas la librairie GD. Celà m'a l'air super intéressant je vais essayer çà.
je viens d'activer l'extension php_gd2.dll et Je vais faire des recherche là dessus

Merci pour ton aide  wink

Dis moi tu vis à côté de ton PC  lol pour être si rapide

Hors ligne

 

#4 21-12-2004 15:51:39

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: limiter les fausses inscriptions

tu ne peux pas verifier si un mail existe vraiment
excepté en envoyant un mail de validation au nouvel abonné
(c'etait le mode de fonctionnement de l'ancienne section membres de phportail.
les membres etaient placés dans une base provisoire jusqu'a validation de leur mail, puis la validation les mettait dans la base définitive)

pour la librairie GD, il y a quelques articles la dessus dans les articles
et j'ai fait dernierement une fonction permettant de realiser des vignettes, qui l'utilise (le forum > portions de code)

sinon, oui, je passe beaucoup de temps sur le pc en journée, surtout pendant les vacances ^^
et la semaine derniere, j'etais en stage, sur le pc toute la journée  wink

Hors ligne

 

#5 26-12-2004 18:40:09

Din
Membre
Date d'inscription: 18-12-2004
Messages: 23

Re: limiter les fausses inscriptions

Salut

J'ai regardé un peu mais j'ai pas trouvé mon bonheur
On peut générer des codes avec cette librairie ? J'ai pas trouvé d'exemples qui pourraient m'aider à faire çà.

Sinon je ferai comme j'avais prévu au départ.
Je vais créer une table avec 2 champs. Un champ où je vais taper quelques codes et le deuxième les images représentant ces codes.

Hors ligne

 

#6 26-12-2004 18:43:35

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: limiter les fausses inscriptions

tiens, il y a un article juste la, qui explique (entre autres) comment inserer du texte dans une image dynamique
http://www.phportail.net/articles/les-i … icle45.php

sinon, les images avec les codes c'est faisables
mais il t'en faut un certain nombre
sinon, il suffit de tous les tester

Hors ligne

 

#7 31-12-2004 06:26:30

Din
Membre
Date d'inscription: 18-12-2004
Messages: 23

Re: limiter les fausses inscriptions

Merci l'article m'a aidé à générer l'image de mon code. J'ai un peu galéré pour comprendre mais j'ai fini par le faire fonctionner.

Il y'a une petite faute de frappe dans l'article  "Créer une image dynamique" tu as tapé un $ avant header au début de ton script  roll

Code:

$header("Content-type: image/png");
mais plutôt : 
header("Content-type: image/png");  

Pour ceux que celà intéresse j'ai trouvé cette fonction pour générer des codes que j'ai un peu modifié
srand(date("s")); je ne sais pas à quoi çà sert je l'ai désactivé et j'ai rajouté des chiffres et supprimé le O et le 0 pour éviter les confusions.
par contre je veux bien qu'on m'explique ce code là

Code:

(rand()%(strlen($possible_string))),1)

surtout le pourcentage.


Code:

function Random_Code($length) {
    //srand(date("s")); 
    $possible_string = "ABC1DEF2GHI3JKL4MNP5QRS6TUV7WXY8Z9";
    $code_string = "";
    while(strlen($code_string) < $length) {
        $code_string .= substr($possible_string,(rand()%(strlen($possible_string))),1);
    }
    return($code_string);
}

Mon problème maintenant c'est que je veux faire un contrôle du code saisie avec celui que je génére.
J'ai créé une page Code.php où j'ai la fonction Random_Code() décrite plus haut et le code suivant :

Code:

header("Content-type: image/png");
// Définition de la taille de l'image
$image = @Imagecreate(100, 20) or die ("Erreur lors de la création de l'image"); 
// Définitions des couleurs de fond de l'image et du texte    
$color_fond = ImageColorAllocate($image, 70, 130, 180); 
$color_Text = ImageColorAllocate($image, 0, 255, 0); 

$code_generate = Random_Code(8);
// Insertion du texte
ImageString ($image, 6, 15, 2, $code_generate, $color_Text); 
// Création de l'image finale
ImagePng($image);

Ensuite j'ai inséré

Code:

<img src="Code.php">

dans ma page pour afficher mon code généré. Jusque là çà marche mais mon problème c'est comment je peux récupérer ma variable $code_generate pour pouvoir faire un contôle avec la saisie de l'utilisateur ?

Hors ligne

 

#8 31-12-2004 06:32:04

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: limiter les fausses inscriptions

srand sert à initialiser le générateur de nombres aléatoires
Fonction srand

sans, tu ne pourra generer ton code aléatoirement

sinon, tu initialise la fonction
tu mets le code dans une base mysql, avec un identifiant
tu place cet identifiant dans une variable de session

& tu peux verifier  wink

Hors ligne

 

#9 03-01-2005 15:42:48

Din
Membre
Date d'inscription: 18-12-2004
Messages: 23

Re: limiter les fausses inscriptions

Tout d'abord Bonne Année

Vu que j'ai 2 pages à remplir et la possibilité de revenir en arrière pour modifier. J'ai modifié tout mon code de mon formulaire, pour utiliser les variables de session maintenant que je sais comment çà marche smile et donc j'ai inclu le code que je génére.

J'aimerais en profiter pour modifier également mon code de controle de formulaire et utiliser du code PHP à la place du JAVA.

j'aimerais qu'il controle si les champs obligatoires sont vides et afficher un message d'erreur sous chaque champ nom rempli. Et lorsque tout est correct, me post mon form vers une pages au j'ai mes requêtes pour enregistrer dans la base.
le code pour contrôler si un champ est vide c'est pas compliqué mais le reste, là je ne sais pas trop comment je pourrai faire.  :?

Hors ligne

 

#10 03-01-2005 16:00:58

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: limiter les fausses inscriptions

si chaque champ est vide, tu a la fonction isset() et tu verifie qu'il n'est pas égal à ""


pour verifier par exemple, un mail, tu a la fonction ereg()
La fonction ereg()

Hors ligne

 

#11 04-01-2005 11:10:09

Din
Membre
Date d'inscription: 18-12-2004
Messages: 23

Re: limiter les fausses inscriptions

ok merci
mais mon prob est le suivant : J'ai certains champs obligatoires, ce que j'ai fais, c'est de contrôler si les champs sont vides. Si c'est le cas, j'inscris un message d'erreur général et je colore en rouge le ou les contours des champs qui ne sont pas remplis. Jusque là çà marche, mais je fais un post sur la même page et j'effectue mon contrôle. J'aimerais que lorsque tout est bon que mon post aille sur une autre page.
car mes variables de sessions ne sont faites que sur l'autre page, qui sert de récapitulatif et permet de revenir en arrière pour corriger au besoin ou de valider l'enregistrement.

Voici un bout de mon code
Il ne me reste plus cas trouver quoi mettre après else dans ma condition $error pour effectuer ce post sur une autre page

Code:

if ($formulaire) {
    $error = false ; 
    if (empty($_POST['nom'])) {
        $bgcolor1 = "#FF0000";
        $error = true ;
        } else {
            $bgcolor1 = "";
    }
.
.
.
.


    if ($error) {
        $error_message = "Nok";
        } else {
            ........
    }
}
.
.
<input name="envoyer" type="submit" value="Send">   
<input type="hidden" name="formulaire" value="ok">

Hors ligne

 

#12 04-01-2005 11:20:31

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: limiter les fausses inscriptions

fonction de renvoi sur une autre page :

Code:

header("location: url");

attention : comme tout header, il doit etre placé avant tout caractere html  wink

Hors ligne

 

#13 04-01-2005 11:48:24

Din
Membre
Date d'inscription: 18-12-2004
Messages: 23

Re: limiter les fausses inscriptions

Ok je connais
Merci pour l'info de placer header avant du code html, je comprends pourquoi je n'ai pas pu l'utiliser dans une page  wink
et j'ai utilisé çà

Code:

echo "<meta http-equiv='refresh' content='0; url=page.php'>";

Mais c'est que je perds toutes mes infos vu que celà dirige sur une autre page sans post   sad

Va falloir que je crée les variables de sessions lors du contrôle du formulaire

Hors ligne

 

#14 04-01-2005 11:53:17

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: limiter les fausses inscriptions

tu peux envoyer les variables apres le ?, en get.
le meme probleme se posera avec le header  wink
sinon, tu n'a pas le probleme ici puisque c'est a la suite d'un formulaire.
Mais, la majorité des robots (google entre autres) ne suivent pas les meta refresh...

pour garder tes urls, tu peux aussi faire un include puis un exit

Code:

include("page");
exit;

ca t'insere la page, et ca arrete le script  wink
et la, tes variables seront conservées

Hors ligne