Erreur PHP
Fermé
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
-
13 avril 2012 à 17:00
ghaouar Messages postés 174 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 22 avril 2012 - 13 avril 2012 à 18:51
ghaouar Messages postés 174 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 22 avril 2012 - 13 avril 2012 à 18:51
A voir également:
- Erreur PHP
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur vidéo freebox ✓ - Forum TV & Vidéo
- Erreur g030 - Forum Bbox Bouygues
8 réponses
Templier Nocturne
Messages postés
7734
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
21 mai 2016
1 104
13 avril 2012 à 17:01
13 avril 2012 à 17:01
tu es sûr du nom de tes variables ?
aladin07
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
30
13 avril 2012 à 17:34
13 avril 2012 à 17:34
Bonjour,
1 pour verifier si les champs sont vides ou non il vaut mieux utiliser ce code:
2 il y a une erreur dans cette partie:
'$nom' est un string, donc is_string('$nom') evalue toujours en TRUE et affiche n'est pas une chaine
Si tu veux verifier si c'est un vrai nom:
Explication du regex:
~ pour delimiter le regex
[a-z]+ trouve n'importe quel lettre de a à z
[\s] espace
[a-z]+ meme chose (Cela veut dire nom [espace] prenom)
~ terminer le regex
i faire la recherche sans prendre en compte la case (majuscules, minuscules)
Si t'as besoin d'autre chose.
1 pour verifier si les champs sont vides ou non il vaut mieux utiliser ce code:
$check = array('cin', 'nom', 'gsm', 'date', 'email'); foreach($check as $test) { if(empty($_POST[$test])) echo 'Le champ '.$test.' est vide<br>'; } // Comme ca tu detecterea exactement quel champ est vide
2 il y a une erreur dans cette partie:
// verification si ces champs sont des chaine de caractères if (is_string('$nom') ) // ? is_string('$nom') { echo 'EST UN CHAINE DE CHAR'; }
'$nom' est un string, donc is_string('$nom') evalue toujours en TRUE et affiche n'est pas une chaine
Si tu veux verifier si c'est un vrai nom:
if( ! preg_match('~[a-z]+[\s][a-z]+~i', $_POST['nom'])) { echo "Ceci n'est pas une chaine de char"; }
Explication du regex:
~ pour delimiter le regex
[a-z]+ trouve n'importe quel lettre de a à z
[\s] espace
[a-z]+ meme chose (Cela veut dire nom [espace] prenom)
~ terminer le regex
i faire la recherche sans prendre en compte la case (majuscules, minuscules)
Si t'as besoin d'autre chose.
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 17:40
13 avril 2012 à 17:40
pour la verification de chaine de caractère il m'affiche toujours : Ceci n'est pas une chaine de char
if( ! preg_match('~[a-z]+[\s][a-z]+~i', $_POST['nom']))
{
echo "Ceci n'est pas une chaine de char";
}
if( ! preg_match('~[a-z]+[\s][a-z]+~i', $_POST['nom']))
{
echo "Ceci n'est pas une chaine de char";
}
aladin07
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
30
13 avril 2012 à 17:44
13 avril 2012 à 17:44
Stp est ce que tu peux m'expliquer ce que tu veux valider?
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 17:55
13 avril 2012 à 17:55
j'ai publié le code et l'affichage merci de le consulter.
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 17:59
13 avril 2012 à 17:59
mon objectif est de vérifier si la valeur introduite dans le champ de texte (nom) est une chaine de caractère ou non ?
aladin07
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
30
13 avril 2012 à 17:42
13 avril 2012 à 17:42
Autre chose,
Pour la validation de l'email cherche sur google, regex for email validation
Avec ton validateur:
k.ss@dsdsa.dsd.@dasd sera accepté...
Autre conseil: Pour le strpos() et stripos() n'utilise jamais
if( ! strpos())
strpos cherche la position du needle dans le string, si la position est 0 cela evaluera en FALSE.
exemple:
if( ! strpos('Bonjour', 'B') { echo 'B introuvalbe'; }
strpos a trouvé le B a la position 0, 0 evalue en FALSE...
Pour contourner cela il faut utiliser la comparaison stricte:
if(strpos('Bonjour', 'B') !== FALSE) echo 'Introuvable';
Pour la validation de l'email cherche sur google, regex for email validation
Avec ton validateur:
k.ss@dsdsa.dsd.@dasd sera accepté...
Autre conseil: Pour le strpos() et stripos() n'utilise jamais
if( ! strpos())
strpos cherche la position du needle dans le string, si la position est 0 cela evaluera en FALSE.
exemple:
if( ! strpos('Bonjour', 'B') { echo 'B introuvalbe'; }
strpos a trouvé le B a la position 0, 0 evalue en FALSE...
Pour contourner cela il faut utiliser la comparaison stricte:
if(strpos('Bonjour', 'B') !== FALSE) echo 'Introuvable';
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 17:56
13 avril 2012 à 17:56
Salut, mon objectif et pas la recherche, c juste vérifier si la valeur introduite est une chaine de caractère ou non ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 17:54
13 avril 2012 à 17:54
voila mon code :
//Verification si les champs vides ou nn ?
if (empty($_POST['cin']) || empty($_POST['nom']) || empty($_POST['gsm']) || empty($_POST['date'])|| empty($_POST['email']))
{
echo("<strong>il ya un ou plusieurs champs vide</strong><br>") ;
return FALSE;
}
// verification de cin et gsm si ce sont ves valeur numérique ou nn ?
if(!is_numeric($cin) || !is_numeric($gsm)){
echo("<strong>cin et/ou gsm ne sont pas deux valeurs numérique</strong> <hr>") ;
return FALSE ;
}
// verification de champs email ?
if (!strpos($_POST['email'],'@') || !strpos($_POST['email'],'.')){
echo("<strong>Adresse mail non valide</strong> <hr>") ;
return FALSE ;
}
// verification si ces champs sont des chaine de caractères
if( ! preg_match('~[a-z]+[\s][a-z]+~i', $_POST['nom']))
{
echo "Ceci n'est pas une chaine de char";
}
echo ("<br><hr> Bienvenue $nom , votre numero carte cin est : $cin ,Num GSM : $gsm , et votre email est : $email");
?>
voila les valeurs introduits :
cin=06222111
nom= Ali
gsm= 96222111
date= 2000-01-01
email = mouradsaidi25@yahoo.fr
voila l'affichage lors de l'exécution :
Ceci n'est pas une chaine de char
----------------------------------------------------------------------------
Bienvenue Ali, votre numero carte cin est : 06222111 ,Num GSM : 96222111 , et votre email est : mouradsaidi25@yahoo.fr
//Verification si les champs vides ou nn ?
if (empty($_POST['cin']) || empty($_POST['nom']) || empty($_POST['gsm']) || empty($_POST['date'])|| empty($_POST['email']))
{
echo("<strong>il ya un ou plusieurs champs vide</strong><br>") ;
return FALSE;
}
// verification de cin et gsm si ce sont ves valeur numérique ou nn ?
if(!is_numeric($cin) || !is_numeric($gsm)){
echo("<strong>cin et/ou gsm ne sont pas deux valeurs numérique</strong> <hr>") ;
return FALSE ;
}
// verification de champs email ?
if (!strpos($_POST['email'],'@') || !strpos($_POST['email'],'.')){
echo("<strong>Adresse mail non valide</strong> <hr>") ;
return FALSE ;
}
// verification si ces champs sont des chaine de caractères
if( ! preg_match('~[a-z]+[\s][a-z]+~i', $_POST['nom']))
{
echo "Ceci n'est pas une chaine de char";
}
echo ("<br><hr> Bienvenue $nom , votre numero carte cin est : $cin ,Num GSM : $gsm , et votre email est : $email");
?>
voila les valeurs introduits :
cin=06222111
nom= Ali
gsm= 96222111
date= 2000-01-01
email = mouradsaidi25@yahoo.fr
voila l'affichage lors de l'exécution :
Ceci n'est pas une chaine de char
----------------------------------------------------------------------------
Bienvenue Ali, votre numero carte cin est : 06222111 ,Num GSM : 96222111 , et votre email est : mouradsaidi25@yahoo.fr
aladin07
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
30
13 avril 2012 à 18:10
13 avril 2012 à 18:10
Voila ce que je propose
//Verification si les champs vides ou nn ?
$check = array('cin', 'nom', 'gsm', 'date', 'email');
foreach($check as $test)
{
if(empty($_POST[$test])) echo 'Le champ '.$test.' est vide<br>';
}
// verification de champs email ?
if( ! preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$_POST['email']) )
{
echo 'email invalide';
return FALSE;
}
// verification si ces champs sont des chaine de caractères
if(preg_match('~[^a-z\s]+~i', $_POST['nom'])
{
echo 'Le nom contient d\'autres caracteres que des lettres et espace';
return FALSE;
}
Je ne l'ai pas essayé mais je crois que ca devrait marcher
//Verification si les champs vides ou nn ?
$check = array('cin', 'nom', 'gsm', 'date', 'email');
foreach($check as $test)
{
if(empty($_POST[$test])) echo 'Le champ '.$test.' est vide<br>';
}
// verification de champs email ?
if( ! preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$_POST['email']) )
{
echo 'email invalide';
return FALSE;
}
// verification si ces champs sont des chaine de caractères
if(preg_match('~[^a-z\s]+~i', $_POST['nom'])
{
echo 'Le nom contient d\'autres caracteres que des lettres et espace';
return FALSE;
}
Je ne l'ai pas essayé mais je crois que ca devrait marcher
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 18:23
13 avril 2012 à 18:23
merci sa marche
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 18:16
13 avril 2012 à 18:16
Bravo , maintenant sa marche ;)
avez vous une idée monsieur, comment afficher une alerte de dialogue lors de chaque erreur de saisie
par exemple si email invalide ou N° GSM n'est pas une valeur numérique ou le nom n'est pas une chaine de caractères ??
avez vous une idée monsieur, comment afficher une alerte de dialogue lors de chaque erreur de saisie
par exemple si email invalide ou N° GSM n'est pas une valeur numérique ou le nom n'est pas une chaine de caractères ??
aladin07
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
30
13 avril 2012 à 18:30
13 avril 2012 à 18:30
En javascript?
Je ne sais pas comment ton scripte est organisé mais si tous le script est dans une page:
En assument que le code que tu viens de mettre est au dessus du <!doctype html>
Puis, ajoute avant </head>:
<? echo $script ?>
</head>
Je ne sais pas comment ton scripte est organisé mais si tous le script est dans une page:
En assument que le code que tu viens de mettre est au dessus du <!doctype html>
$error = $script = ''; //Verification si les champs vides ou nn ? $check = array('cin', 'nom', 'gsm', 'date', 'email'); foreach($check as $test) { if(empty($_POST[$test])) echo $error .= 'Le champ '.$test.' est vide<br>'; } // verification de champs email ? if( ! preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$_POST['email']) ) { echo $error .= 'email invalide<br>'; return FALSE; } // verification si ces champs sont des chaine de caractères if(preg_match('~[^a-z\s]+~i', $_POST['nom']) { echo $error .= 'Le nom contient d\'autres caracteres que des lettres et espace<br>'; return FALSE; } if( ! empty($error)) { $script = "<script>alert('$error');</script> }
Puis, ajoute avant </head>:
<? echo $script ?>
</head>
aladin07
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
30
13 avril 2012 à 18:37
13 avril 2012 à 18:37
if( ! empty($error))
{
$script = "<script>alert('$error');</script>" ; // J'ai oublié de fermer...
}
{
$script = "<script>alert('$error');</script>" ; // J'ai oublié de fermer...
}
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 18:43
13 avril 2012 à 18:43
ok, merci Monsieur, lorsque j'ai exécuté mon formulaire une autre page s'affiche qui m'informe de bon remplissage de champs, mais lorsque je retourne avec le flèche précèdent je trouve que les champs reste remplis , comment faire pour vider le champs après l'envoie de requête ou le clique sur le bouton valider ?
aladin07
Messages postés
277
Date d'inscription
vendredi 13 avril 2012
Statut
Membre
Dernière intervention
30 septembre 2012
30
13 avril 2012 à 18:45
13 avril 2012 à 18:45
Je t'ai repondu dans l'autre topic
ghaouar
Messages postés
174
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
22 avril 2012
13 avril 2012 à 18:51
13 avril 2012 à 18:51
ok merci :)