Conditions, accolades completement perdu

tooms2028 Messages postés 9 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 11 mars 2005 - 8 mars 2005 à 20:45
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 - 10 mars 2005 à 15:47
<!--StartFragment --> salut,
J'ai un formulaire d inscription avec plusieur if imbriqués qui envoi un mail de validation avec url integré. Mon problème c est que je suis completement perdu dans les conditions. Je comprend quand il sagit d un if et d un else mais quand il y en a plusieur je ne sais pas comment m y prendre avec les accolades.
<!--StartFragment --> quand:
-j essaye deux mots de passe differents ca envoi quand meme le mail
- je clique sur le boutton valider du formulaire en laissant les champs vides, mes variables ne sont pas defini au niveau de la requette
- j essaye avec deux mots de passe identiques mais avec caracteres non autorisés, ca envoi quand meme le mail (pour le pseudo ca marche)
J'aimerais eviter cela.
merci d avance

CODE:
<!--StartFragment -->
$numero = "0123456789";
$clef = str_shuffle($numero);

if (sizeof($_POST))
{
if (isset($_POST['pseudo']) and isset($_POST['password']) and isset($_POST['confirm_password']) and isset($_POST['mail']) and isset($_POST['ville']) and isset($_POST['sexe']) and isset($_POST['jours']) and isset($_POST['mois']) and isset($_POST['annees']))
{
$pseudo = $_POST['pseudo'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
$mail = $_POST['mail'];
$ville = $_POST['ville'];
$sexe = $_POST['sexe'];
$date = $_POST['jours'] ."/". $_POST['mois'] ."/". $_POST['annees'];
}

else
{
echo "non remplis";
}

if ($password != $confirm_password)
{
echo "bad pasword";
}

if (!preg_match('`^(\w{4,15})$`', $pseudo) and preg_match('`^(\w{4,15})$`', $password) and preg_match('`^(\w{4,15})$`', $confirm_password ))

echo "mauvais caracteres";

else
{

mysql_connect("localhost", "root", "");
mysql_select_db("test");
mysql_query("INSERT INTO elove VALUES('', '$clef', '$pseudo', '$password', '$mail', '$ville', '$sexe', '$date')")or die(mysql_error()); $reponse_id mysql_query("SELECT id FROM elove WHERE pseudo '$pseudo'")or die(mysql_error());
mysql_close();

echo "tu vas recevoir un mail";

while ($donnees = mysql_fetch_array($reponse_id))
{
$id = $donnees['id'] ;
$mail_destinataire = $_POST['mail'];
$sujet = "E-love, validation de l'inscription";
$message = http://127.0.0.1:81/Php/E-love/zone_membre/zone_membre_validation.php?id=$id&amp;clef=$clef
$head = "Salut $pseudo ";
mail($mail_destinataire, $sujet, $message, $head);
}
}
}

5 réponses

tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
8 mars 2005 à 21:39
salut

ouep, tu a mal organisé tes if

essai ça :

$numero = "0123456789";
$clef = str_shuffle($numero);

if (sizeof($_POST))
{

if (isset($_POST['pseudo']) and isset($_POST['password']) and
isset($_POST['confirm_password']) and isset($_POST['mail']) and
isset($_POST['ville']) and isset($_POST['sexe']) and


isset($_POST['jours']) and isset($_POST['mois']) and
isset($_POST['annees']))
{
$pseudo = $_POST['pseudo'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
$mail = $_POST['mail'];
$ville = $_POST['ville'];
$sexe = $_POST['sexe'];
$date = $_POST['jours'] ."/". $_POST['mois'] ."/". $_POST['annees'];






if ($password != $confirm_password)
{
echo "bad pasword";
}

else

{



if (!preg_match('`^(\w{4,15})$`', $pseudo) and
preg_match('`^(\w{4,15})$`', $password) and
preg_match('`^(\w{4,15})$`', $confirm_password ))

echo "mauvais caracteres";

else
{



mysql_connect("localhost",
"root", "");


mysql_select_db("test");


mysql_query("INSERT INTO elove
VALUES('', '$clef', '$pseudo',
'$password', '$mail', '$ville', '$sexe', '$date')")or
die(mysql_error());


$reponse_id =
mysql_query("SELECT id FROM
elove WHERE pseudo = '$pseudo'")or


die(mysql_error());


mysql_close();



echo "tu vas recevoir un mail";




while ($donnees =
mysql_fetch_array($reponse_id))


{

$id =
$donnees['id'] ;


$mail_destinataire = $_POST['mail'];


$sujet = "E-love,
validation de l'inscription";



$message =


http://127.0.0.1:81/Php/E-love/zone_membre/zone_membre_validation.php?id=$id&amp;clef=$clef



$head = "Salut $pseudo ";



mail($mail_destinataire, $sujet, $message, $head);
}
}


}


}

else
{
echo "non remplis";
}
}



voila, c'est galere de faire ça dans l'editeur mais ca doit etre ça

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
tooms2028 Messages postés 9 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 11 mars 2005
10 mars 2005 à 14:03
Salut merci pour ton aide

Mais il reste un petit probleme, quand je tape deux mots de passe
identiques avec caracteres non autorisés ca envoi quand meme le mail de
validation.le problème vient du if ($password != $confirm_password). toto*_* et toto*_* sont identiques donc forcement ca envoi le mail Par contre si j essaye un pseudo avec des caracteres non autorisés l echo affiche "caracteres non autorisés" bon la c est cool.
0
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
10 mars 2005 à 14:46
ben j'ai pas testé mais à mon avis ça vient de cette ligne

if
(!preg_match('`^(\w{4,15})$`', $pseudo) and
preg_match('`^(\w{4,15})$`', $password) and
preg_match('`^(\w{4,15})$`', $confirm_password ))

ce serait pas plutot qu'il faut mettre

if
(!preg_match('`^(\w{4,15})$`', $pseudo) ||
!preg_match('`^(\w{4,15})$`', $password) ||
!preg_match('`^(\w{4,15})$`', $confirm_password ))



Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
tooms2028 Messages postés 9 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 11 mars 2005
10 mars 2005 à 15:44
encore merci c est bien ca
Le probleme est resolu
J ai rajouté les ! mais j'aimerai savoir un truc parceque je viens de tester avec les and ca ne fonctionnait pas alors qu avec les || la ca marche nikel. A ma connaissance || et and c est la meme chose ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
10 mars 2005 à 15:47
nan

AND et && sont equivalents

|| est équivalents au OR

dans ton cas, il te faut des OU et pas des ET



voila l'explication

@+



PS : n'oublie pas de valider la bonne reponse stp - merci

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
Rejoignez-nous