Conditions, accolades completement perdu

Signaler
Messages postés
9
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
11 mars 2005
-
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
-
<!--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

Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
9
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
11 mars 2005

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.
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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
Messages postés
9
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
11 mars 2005

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 ?
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
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