Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
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. |
||
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.
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
$_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
alors, pour verifier l'adresse mail :
<?php
if (ereg("^[[:alnum:]]+@[[:alpha::]+.[[:alpha::]]{2,3}$", $email) == 0) { echo "le mail n'est pas valide"; }
?>pour l'ip, c'est exactement ca
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 ![]()
Hors ligne
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
. Mais en php s'est bien de l'avoir aussi
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
Dis moi tu vis à côté de ton PC
pour être si rapide
Hors ligne
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 ![]()
Hors ligne
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
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
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
$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à
(rand()%(strlen($possible_string))),1)
surtout le pourcentage.
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 :
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é
<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
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 ![]()
Hors ligne
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
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
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
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
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
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
et j'ai utilisé çà
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
Va falloir que je crée les variables de sessions lors du contrôle du formulaire
Hors ligne
tu peux envoyer les variables apres le ?, en get.
le meme probleme se posera avec le header
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
include("page");
exit;ca t'insere la page, et ca arrete le script
et la, tes variables seront conservées
Hors ligne