CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Vérification en php des champs d'un form

alex6891
alex6891
Niveau 10
19 août 2003 à 08:35:23

Je souhaite trouver le moyen de vérifier efficacement les champs de mon formulaire d´inscription à un espace membre. Notamment la date de naissance ( séparée en 3 champs jour, mois et année. D´ailleurs à ce sujet, sous quelle forme l´entrer dans la base de données ? ), un pseudo ( de 4 a 15 caractères alphanumériques), un mot de passe ( de 4 à 8) ainsi qu´une adresse e-mail.

Si quelquu´n pouvait me fournir un code de vérification ( expression régulière ? ?) ça serait vraiment sympa.

Merci d´avance.
@++

Alex6891

SaMeuwr
SaMeuwr
Niveau 10
19 août 2003 à 08:44:06

pour le mot de passe, utilise la fonction de cryptage md5() qui te fournis un varchar ( 32) : )
pour le pseudo a toi de choisir : )

bah pour vérifier la validité des jours :

if($_POST[´jour´]< 0 or $_POST[´jour´] > 31){

echo ´erreur´;

}

a toi de l´appliquer aux autres : )

alex6891
alex6891
Niveau 10
19 août 2003 à 09:19:17

oui mais ça c´est pour tester la longueur de la chaine et si elle existe ou pas moi ce que je veux c´est savoir si elle contient pas de caractères spéciaux ni html...

alex6891
alex6891
Niveau 10
19 août 2003 à 09:40:10

Blawk ou qqun d´autre svp ? ??

alex6891
alex6891
Niveau 10
19 août 2003 à 10:02:10

Voilà pour l´instant mon script de vérification qui ne marche pas et qui est incomplet, aidez-moi svp à l´améliorer ! merci.

< ?
session_start();

$sexe=$_POST[´sexe´];
$pseudo=$_POST[´pseudo´];
$passe1=$_POST[´passe1´];
$passe2=$_POST[´passe2´];
$email=$_POST[´email´];
$jour=$_POST[´jour´];
$mois=$_POST[´mois´];
$an=$_POST[´annee´];

if(!$sexe){
$merror="Vous n´avez pas spécifié votre sexe ! ";}
else{if(!$jour or ! $mois or ! $an){
$merror="Vous n´avez pas donné une date de naissance correcte ! ";}
else{if(!$pseudo){
$merror="Vous n´avez pas spécifié votre pseudo ! ";}
else{if(!$passe1){
$merror="Vous n´avez pas spécifié votre mot de passe ! ";}
else{if(!$passe2 or $passe1!=$passe2){
$merror="La confirmation de votre mot de passe est erronée ! ";}
else{if($passe1==$pseudo){
$merror="Votre mot de passe doit être différent de votre pseudo ! ";}
else{if(!$email){
$merror="Votre adresse E-mail est invalide ! ";}}}}}}}

$query="SELECT * FROM mb WHERE pseudo=´$pseudo´ or mdp=´$passe1´ or ddn=´$ddn´ or mail=´$email´";
$res=@mysql_query($query);
$ver=@mysql_num_rows($res);

if($ver!=0){$merror="Vous êtes déjà inscrit ! ";}

if($merror){
session_register("sexe");
session_register("pseudo");
session_register("email");
session_register("jour");
session_register("mois");
session_register("an");
session_register("merror");
header(´location:../dir.php?page=inscription´);
}
else{
$query="INSERT INTO mb(´inscrit´,´pseudo´,´mdp´,´sexe´,´ddn´,
´mail´) VALUES ( ´date();´,´$pseudo´,´$passe1´,
´$sexe´,´$ddn´,´$email´)";
$res=@mysql_query($query);
if(!$res){
echo"<b>Problème d´insertion dans la base de données</b><br>";}
else{$ok=1;
session_register("ok");
header(´../dir.php?page=inscription´);}
}

? >

bobcolas
bobcolas
Niveau 9
19 août 2003 à 10:27:16

tu peux mettre ca dans un fichier texte stp ?
et l´uploader sur ton site, ou envoie le moi sur :

colasmalaise@wanadoo.fr

je suis pas encore tres fort en PHP, mais ca je comprend tres bien...

dans un fichier texte on verrai mieux car quand on voit:

$merror="Votre adresse E-mail est invalide !  ";}}}}}}}

avec je sais pas combien de } !

et c´est un probleme de SQL ou de PHP ?

@+

bobcolas
bobcolas
Niveau 9
19 août 2003 à 10:28:13

et aussi, tu peux m´envoyer le formulaire HTML plz ? ou l´uploader

bobcolas
bobcolas
Niveau 9
19 août 2003 à 11:08:16

Voilà, je t´ai fait quelque chose :

Alors il y a plusieurs choses que je ne comprend pas... :

1) Tu mets pleins de else, alors qu´avant, il n´y a pas d´instruction if(). Essaye avec la fonction elseif().

2) Il y aurait une chose plus simple à faire, c´est de mettre toutes les instructions qui suivent le 1er if() dans un seul if(), mais tu n´aurais pas des messages d´erreurs différents. A toi de choisir.

3) Tu dis que les champs fournis ne sont pas corrects, ou vides, mais le script continue, donc, je pense que la fonction exit; s´impose. ; )

4) Qu´est-ce que la variable " $ddn" ? Elle n´a pas l´air d´exister... Mais tu peux peut-être m´expliquer ? ... ; ) Je pense que ddn = date de naissance, c´est ça ? Mais tu ne l´as pas définie, donc elle est nulle. Fais au minimum ça :

$ddn = $jour."/".$mois."/".$an;

elle sera au format 4/11/1989 ( ma date de naissance ; ) )

5) dans : if ( $ver!=0) {
$merror="Vous êtes déjà inscrit !  ";
}

alex6891
alex6891
Niveau 10
19 août 2003 à 11:26:59

je ne comprens pas le 5) ? ??

alex6891
alex6891
Niveau 10
19 août 2003 à 11:31:46

POur le 4) je souhaite enregistrer la date de naissance au format mysql donc AAAA-MM-JJ je pense que c ça non ? si oui comment procéder ?

Et euh...c quoi la fonction exit; ? ??

bobcolas
bobcolas
Niveau 9
19 août 2003 à 11:36:40

merde ! ca a pas tout écrit !

Alors il y a plusieurs choses que je ne comprend pas... :

1) Tu mets pleins de else, alors qu´avant, il n´y a pas d´instruction if(). Essaye avec la fonction elseif().

2) Il y aurait une chose plus simple à faire, c´est de mettre toutes les instructions qui suivent le 1er if() dans un seul if(), mais tu n´aurais pas des messages d´erreurs différents. A toi de choisir.

3) Tu dis que les champs fournis ne sont pas corrects, ou vides, mais le script continue, donc, je pense que la fonction exit; s´impose. ; )

4) Qu´est-ce que la variable " $ddn" ? Elle n´a pas l´air d´exister... Mais tu peux peut-être m´expliquer ? ... ; ) Je pense que ddn = date de naissance, c´est ça ? Mais tu ne l´as pas définie, donc elle est nulle. Fais au minimum ça :

$ddn = $jour."/".$mois."/".$an;

elle sera au format 4/11/1989 ( ma date de naissance ; ) )

5) dans : if ( $ver!=0) {
$merror="Vous êtes déjà inscrit !  ";
}

tu dis que $merror est égal à " Vous êtes déjà inscrit ! " mais ça ne l´affiche pas...

dis plutôt que $merror=1, puis fait un echo. Comme ça, ensuite, $merror ne sera pas false.

6) Revenons un peu en avant... Dans $query, tu dis que si quelqu´un a le même mot de passe qu´un autre, c´est la même personne. Et si deux personnes choisissent le même mot de passe ? et si tu as 366 membres, Il y a obligatoirement deux qui sont nés le même jour... Donc ne mets que e-mail et pseudo. Et ne dis pas qu´il est déjà inscris, mais que ce pseudo est déjà réservé, il peuvent avoir le même pseudo...

7) Ensuite, dans le if($merror)... Ca ne sert à rien de faire plusieurs sessions pour un seul utilisateur, mets juste le pseudo, et apres tu fais un " SELECT * FROM mb WHERE pseudo="$pseudo"", ça marchera car ta session, si tu la démarre avec session_start, garde la variable, en l´occurrence ici $pseudo.

8) Dans le dernier $query, je sais pas si on a le droit de mettre des fonctions comme tu as mis date(), j´en suis pas sûr aussi... Mais je crois pas...

9) Ensuite tout à la fin, dans le session_register("ok"), $ok=1, mais le session gardera 1, pas le pseudo de la personne !

Voilà, j´ai du faire des erreurs, mais toi aussi ; )

SaMeurw va me corriger si je me suis trompé quelque part ; )

Et Blawk est en vacances ; )

@+ Colas

bobcolas
bobcolas
Niveau 9
19 août 2003 à 11:37:57

C´est bon là !

bobcolas
bobcolas
Niveau 9
19 août 2003 à 11:39:48

la fonction exit;

arrete le script, il ne continue pas, donc si tu signale qu´un champ est vide, tu le dis et ensuite tu met exit;

comme ca ca ne continue pas le script

alex6891
alex6891
Niveau 10
19 août 2003 à 11:43:33

je comprends plus rien du tout : tout ça est bien flou pour moi ! !! C´est a m´en cogner la tête contre les murs ! !!!

Voilà mon code changé mais ça affiche toujours " Vous êtes déjà inscrit" en permanence ? ?? j´en peu plus là....

< ?
session_start();

$sexe=$_POST[´sexe´];
$pseudo=$_POST[´pseudo´];
$passe1=$_POST[´passe1´];
$passe2=$_POST[´passe2´];
$email=$_POST[´email´];
$jour=$_POST[´jour´];
$mois=$_POST[´mois´];
$an=$_POST[´annee´];

$ddn=$an."-".$mois."-".$jour;

if(!$sexe){
$merror="Vous n´avez pas spécifié votre sexe ! ";}
else if(!$jour or ! $mois or ! $an){
$merror="Vous n´avez pas donné une date de naissance correcte ! ";}
else if(!$pseudo){
$merror="Vous n´avez pas spécifié votre pseudo ! ";}
else if(!$passe1){
$merror="Vous n´avez pas spécifié votre mot de passe ! ";}
else if(!$passe2 or $passe1!=$passe2){
$merror="La confirmation de votre mot de passe est erronée ! ";}
else if($passe1==$pseudo){
$merror="Votre mot de passe doit être différent de votre pseudo ! ";}
else if(!$email){
$merror="Votre adresse E-mail est invalide ! ";}

if($merror){
session_register("merror");
header(´form.php´);
}
else{

$query="SELECT * FROM mb WHERE pseudo=´$pseudo´ or mdp=´$passe1´
or mail=´$email´";
$res=@mysql_query($query);
$ver=@mysql_num_rows($res);

if($ver!=0){
$merror="Vous êtes déjà inscrit ! ";
session_register("merror");
header(´form.php´)}
else{

$query="INSERT INTO mb ( ´inscrit´,´pseudo´,´mdp´,´sexe´,´ddn´,
´mail´) VALUES ( ´date();´,´$pseudo´,´$passe1´,
´$sexe´,´$ddn´,´$email´)";
$res=@mysql_query($query);
if(!$res){
echo"<b>Problème d´insertion dans la base de données</b><br>";}
else{$ok=1;
session_register("ok");
header(´form.php´);}
}
}

? >

bobcolas
bobcolas
Niveau 9
19 août 2003 à 12:47:39

C´est déjà bcp plus clair ! J´étudie ca apres manger...

SaMeuwr
SaMeuwr
Niveau 10
19 août 2003 à 13:22:12

essaye
if($ver) à la place de if($ver ! =0)

utilise la fonction now() à la place de date et enlève le ´;´ : )

moi je te conseile de donner comme valeur à ddn :

$ddn = mktime(0,0,0,$mois,$jour,$an);

bcp plus facile à manipuler après : )

Et comme je l´ai dis plus haut, CRYPTE les passes : )

alex6891
alex6891
Niveau 10
19 août 2003 à 13:31:40

Comment crypter les pass ? ? et pourquoi ?

alex6891
alex6891
Niveau 10
19 août 2003 à 13:32:58

si je te suis SaMeuwr $ddn vaudra quoi après ?

SaMeuwr
SaMeuwr
Niveau 10
19 août 2003 à 13:50:37

un timestamp unix : )

pour crypter le passe utilise la fonction md5() qui renvoye un varchar(32) : )

bobcolas
bobcolas
Niveau 9
19 août 2003 à 13:56:49

SaMauwr ==> J´ai pas voulu lui faire utiliser la fonction mktime(), car il débute, et rique peut-etre de ne pas comprendre tout de suite ; )

Oui, crypte le passe aussi, fait comme sameuwr dit, ou alors plus simple, dans ta requete SQL, tu met password(´$pass1´) mais comme Sameuwr dit c´est mieux ; )

Ensuite pour $ddn enregistre le dans un varchar

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment