If retourne toujours le else

[Résolu]
Signaler
Messages postés
126
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
9 juin 2013
-
Messages postés
126
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
9 juin 2013
-
Salut a tous!
Je vous explique vite fait mon pb:
Je dois me servir de preg_match pour l'inscription sur mon site et faire une condition assez grande... j'ai tout essayé mais rien ne marche cela me retourne a chaque fois le else(qui dit que je n'ai pas respecté les regles d'inscription...).
Voici les lignes concernées:
$pseudo = $_POST['pseudo'];
$email = $_POST['email'];
$avatar = $_POST['avatar'];
$steam_id = $_POST['steam_id'];
$message = $_POST['message'];
$arme = $_POST['arme'];
$niveau = $_POST['niveau'];
$pass = $_POST['pass'];
$max = "15";
$max2 = "200";
$max3 = "10";
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';  
if((strlen($pseudo) < $max ) AND (preg_match("$Syntaxe", $email)) AND (preg_match("#^http://+[a-zA-Z]+\.[a-zA-Z]#", $avartar)) AND (preg_match("STEAM_ID:", $steam_id)) AND (strlen($message) < $max2 ) AND (strlen($arme) < $max3 ) AND ($niveau =="Mauvais" OR $niveau =="Moyen" OR $niveau =="Bon" OR $niveau =="Plutot fort" OR $niveau =="Tres fort" OR $niveau =="Pro gamer")) {  


Avec:
Pseudo : Greg1
Email : coyotegosth@hotmail.fr
Avatar : http://forum.alsacreations.com/avatars/7017-Dj.Ango-150.jpg
Steam id : STEAM_ID:1010111
Message perso : AAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaAAAa
Arme préferéé : Awp
Niveau : Bon
Mot de pass : greg

Besoin d'aide svp!! :)
Merci à l'avance!

7 réponses

Messages postés
14813
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
25 juillet 2021
156
Bonjour,

Ton IF est trop long, essayes de décomposer pour savoir quelle partie pose problème.

Sinon, en PHP, les conditions logiques sont les mêmes que pour C/C++ : ET conditionnel &&

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour


$avatar pas $avartar


remarque : tu peux faire une une fonction pour les preg_match
et utiliser in_array pour $niveau ...
vite fait

<?php
$pseudo = $_POST['pseudo']='toto';
$email = $_POST['email']='titi@free.fr';
$avatar = $_POST['avatar']='http://www.google.fr/toto.jpg';
$steam_id = $_POST['steam_id']='STEAM_ID:';
$message = $_POST['message']=1;
$arme = $_POST['arme']=1;
$niveau = $_POST['niveau']='Bon';
//$pass = $_POST['pass'];
$max = "15";
$max2 = "200";
$max3 = "10";
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';  
if((strlen($pseudo) < $max ) 
AND (preg_match("$Syntaxe", $email)) 
AND (preg_match("#^http://+[a-zA-Z]+\.[a-zA-Z]#", $avatar)) 
AND (preg_match("#STEAM_ID:#", $steam_id)) 
AND (strlen($message) < $max2 ) 
AND (strlen($arme) < $max3 ) 
AND ($niveau =="Mauvais" 
OR $niveau =="Moyen" 
OR $niveau =="Bon" 
OR $niveau =="Plutot fort" 
OR $niveau =="Tres fort" 
OR $niveau =="Pro gamer")) {
echo 'do';
}else{
echo 'do not';
}
?>



Bonne programmation !
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Hello,

Teste une à une les données à vérifier, si chaque donnée à vérifier est ok tu peux valider le bouzin :

$pseudo = $_POST['pseudo'];
$email = $_POST['email'];
$avatar = $_POST['avatar'];
$steam_id = $_POST['steam_id'];
$message = $_POST['message'];
$arme = $_POST['arme'];
$niveau = $_POST['niveau'];
$pass = $_POST['pass'];

$niveaux = array("Mauvais","Moyen","Bon","Plutot fort","Tres fort","Pro gamer");

if(strlen($pseudo) > 15){
echo "pseudo trop long !";
}else if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i", $email)){
echo "l'e-mail n'est pas bon !";
}else if(!preg_match("#^http://+[a-zA-Z]+\.[a-zA-Z]#", $avatar)){
echo "l'avatar n'est pas bon !";
}else if(!preg_match("STEAM_ID:", $steam_id)){
echo "le steam_ID n'est pas bon !";
}else if(strlen($message) > 200){
echo "le message est trop long !";
}else if(strlen($arme) > 10){
echo "t'as trop d'armes coco !";
}else if(!in_array($niveau,$niveaux)){ // tel que te le préconisait Cod57
echo "ton niveau n'est pas dans les niveaux !";
}else if(strlen($pass) < 8){
echo "ton mot de passe est trop court !";
}else{
echo "bon ben tout baigne y'a pas d'erreur : je rentre tout ça dans ma base !";
}


A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Au passage pour le contrôle du nombre de caractères du message tu peux aussi limiter le nombre de caractères permis dans le champ de saisie avec maxlength="200".

A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
Messages postés
126
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
9 juin 2013

Salut!
Désolé j'ai pas réussi a vous répondre avat ^^'
je teste tout ca et je vous dis :p
merci!
Messages postés
126
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
9 juin 2013

Maitenant j'ai un autre probleme avec un autre preg_match mais bo je verrais ca plus tard.
J'apprend en coddant, j'ai pas de cour ou de trucs dans le genre donc je connaissais pas cette methode mais je retiens! merci :p

je commente ,j'essaye de créer(et de poster,si codes sources.com ne me refait pas encore trois erreures d'afilés quand je tape 300 lignes et que je doit tout recommencer ),j'appelle a l'aide! ,alors,soyez sympa [^^drapeaubl
Messages postés
126
Date d'inscription
samedi 28 novembre 2009
Statut
Membre
Dernière intervention
9 juin 2013

Et désolé pour la signature de quand j'avais dix ans et qu'il faut que je change x)