JeuWeb - Crée ton jeu par navigateur
[Résolu] Problème une de mes fonctions - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Problème une de mes fonctions (/showthread.php?tid=3680)

Pages : 1 2


[Résolu] Problème une de mes fonctions - Pampa - 17-02-2009

Bonjour,

J'ai crée une fonction qui vérifie les données entrantes d'un formulaire, mais elle se 'bloque' toujours au password, elle me dit que mon pass est inférieur à 4 caractères, pourtant j'en ai rentré bien plus !!

Deux heures qu'j'suis dessus, j'y arrive pas >_>

Voilà ladite fonction :

<?php

/* FONCTION QUI VERIFIE LES INFOS
************************************ */
function verif_logins($pseudo, $password, $password_confirm, $email, $email_confirm, $sexe)
/*********************************** */
{

if(!ereg("^[A-Za-z0-9_]{3,15}$", $pseudo))
{
$message = "Votre nom d'utilisateur doit comporter entre 3 et 15 caractères<br />\n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!ereg("^[A-Za-z0-9]{4,}$", $password))
{
$message = "Votre mot de passe doit comporter au moins 4 caractères";
}
elseif($password != $password_confirm)
{
$message = "Votre mot de passe n'a pas été correctement confirmé";
}
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", $email))
{
$message = "Votre adresse e-mail n'est pas valide";
}
elseif($email != $email_confirm)
{
$message = "Votre adresse e-mail n'a pas été correctement confirmé";
}
elseif ($sexe == 'Garcon' OR $sexe == 'Fille')
{
$message = "Veuillez choisir un sexe";
}
else
{
$message = 'OK';
}

return $message;
}
?>



RE: Problème une de mes fonctions - keke - 17-02-2009

(17-02-2009, 05:10 PM)Pampa a écrit :

elseif(!ereg("^[A-Za-z0-9]{4,}$", $password))
{
$message = "Votre mot de passe doit comporter au moins 4 caractères";
}

manquerait pas un nombre après le 4 ?

ereg("^[A-Za-z0-9]{4,}

J'y connais pas grand chose, mais la structure me choque : soit tu supprimes la virgule, soit tu rajoute un nombre après, mais une virgule est un séparateur universelle entre 2 éléments identiques (en français, en péruvien, en php ...)

Kéké
PS : bon pour le péruvien, je sais pas ...


RE: Problème une de mes fonctions - Mycroft - 17-02-2009

Apparament, keke a raison. Dans cette doc on trouve la syntaxe {m,n} mais pas {m,}. Donc c'est probablement là que ça plante.

http://www.dc.turkuamk.fi/docs/gnu/rx/rx_3.html


RE: Problème une de mes fonctions - Pampa - 17-02-2009

Nop !
Cette syntaxe est bonne veut dire que cette expression [A-Za-z0-9] doit se répéter au minimum 4 fois (par exemple : a{3,5} doit apparaitre obligatoirement entre 3 et 5 fois, mais quand on ne précise pas de max, il prend valeur " ∞ " )

Mais finalement mon problème venait de mon formulaire, merci quand même d'avoir le prit le temps de m'aider. ;o)


RE: [Résolu] Problème une de mes fonctions - Ruz - 17-02-2009

petite intervention perso

Code PHP :
<?php 
elseif(!ereg("^[A-Za-z0-9]{4,}$", $password))
{
$message = "Votre mot de passe doit comporter au moins 4 caractères";
}

le gars qui rentre comme mdp: 12er(45

il va avoir quoi comme réponse?


RE: [Résolu] Problème une de mes fonctions - Anthor - 17-02-2009

Non à Mycroft et Keke, {n} renvoit exactement n occurrence, {n,m} entre n et m occurrence, {n,} renvoit n ou une infinité d'occurrence.

Et oui mycroft, ça peux se trouver dans les docs ^^ ( http://www.regular-expressions.info/reference.html )


EDIT : Plus rapide que moi Ruz pour le reste !


RE: [Résolu] Problème une de mes fonctions - jo_link_noir - 17-02-2009

Pourquoi limiter le mot de passe aux caractères alpha-numerique ? Un pseudo je comprend mais pour un mdp c'est pas cool :/

Ah aussi, pour valider l'émail, il existe filter_var($email, FILTER_VALIDATE_EMAIL)


RE: [Résolu] Problème une de mes fonctions - Ruz - 17-02-2009

tu as compris ce qui se cache derrière ma question...
* filtre sur le formulaire (JS => désactivable...)?
* simple avertissement?
et un message qui n'a rien à voir avec le soucis rencontré, c'est pas top pour la crédibilité... (entre nous)

quant à ' $message .= "L'utilisation de l'underscore est autorisée"; '... après coup, c'est vachement utile!!!! (tiret, apostrophe, @ : refusés ???)

Enfin, voilà... des idées de trucs qui risquent de coincer juste à l'inscription... un peu dommage.
Faut dire, on a pas le formulaire, ca aide pas à se faire une idée précise... (mais bon, c'est pas l'objet initial de la question)
Quelques pistes de réflexion...


RE: [Résolu] Problème une de mes fonctions - Mycroft - 17-02-2009

(17-02-2009, 06:59 PM)Anthor a écrit : Non à Mycroft et Keke, {n} renvoit exactement n occurrence, {n,m} entre n et m occurrence, {n,} renvoit n ou une infinité d'occurrence.

Et oui mycroft, ça peux se trouver dans les docs ^^ ( http://www.regular-expressions.info/reference.html )


EDIT : Plus rapide que moi Ruz pour le reste !

Ah merci, je bookmark.


RE: [Résolu] Problème une de mes fonctions - Pampa - 17-02-2009

@ Ruz : en effet, cela produit une erreur, car ces caractère (enfin plutôt LE caractère '(' n'est pas définit par la regexp) mais j'en suis conscient, car j'ai juste voulu tester le script 'vite-fait'. =)
Mais bon pour $password la vrai regexp serait : "^[[:alnum :]|[:alpha :]|[:punct :]]{4,}$" qui prendrait vraiment tout en compte. ^^

@ j-12 : En effet seulement elle existe depuis PHP 5, donc pas tous les hébergeurs et en plus je préfère vraiment les regexp.
Mais merci je ne la connaissais pas. /o

Après j'suis venu pour une pseudo erreur dans le script (car au final l'erreur se situait dans un name="bidule" dans le formulaire) que je n'arrivait pas à résoudre car j'étais assez fatigué.
Mais bon, ça me dérange pas de poster tout mon script, mais je n'ai pas envie de faire de digression, mais si les modérateurs sont d'accord, pourquoi pas ? =)