Erreur dans mon script
- Accueil
- Forum
- Programmation
- PHP
- Erreur dans mon script
Dinars Le 13 juillet 2017 à 15:31 (Édité le 25 janvier 2019 à 17:53)
Voici la partie du script dont je parle et l'erreur signalée par Wamp est située au niveau de "elseif"
<?php if($section == 'code') { ?>
Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail']; } ?>
<form method="post">
<input type="text" placeholder="Code de vérification" name="verif_code"/><br/>
<input type="submit" value="Valider" name="verif_submit" class="btn btn-primary"/>
</form>
<?php } elseif ($section == 'changemdp') { ?>
Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?>
<form method="post">
<input type="password" placeholder="Nouveau mot de passe" name="change_mdp"/><br/>
<input type="password" placeholder="Confirmation du mot de passe" name="change_mdpc"/><br/>
<input type="submit" value="Valider" name="change_submit"/>
</form>
<?php } else { ?>
<form method="post">
<input type="email" placeholder="Votre adresse mail" id="recup_mail" /><br/>
<input type="submit" value="Valider" name="recup_submit" class="btn btn-primary"/>
</form>
<?php }
Nobodief Le 13 juillet 2017 à 19:53 (Édité le 13 juillet 2017 à 20:17)
Il arrive parfois de faire des erreurs, souvent l'erreur la plus fréquente et l'oublie du point virgule.
Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?>
Mais tu as bien fait de nous montrer du code, je vais te montrer une autre possibilité de le formuler, tu peux également l'écrire ainsi :<?php if($section == 'code'): ?>
Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail']; } ?>
<form method="post">
<input type="text" placeholder="Code de vérification" name="verif_code"/><br/>
<input type="submit" value="Valider" name="verif_submit" class="btn btn-primary"/>
</form>
<?php elseif($section == 'changemdp'): ?>
Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?>
<form method="post">
<input type="password" placeholder="Nouveau mot de passe" name="change_mdp"/><br/>
<input type="password" placeholder="Confirmation du mot de passe" name="change_mdpc"/><br/>
<input type="submit" value="Valider" name="change_submit"/>
</form>
<?php else: ?>
<form method="post">
<input type="email" placeholder="Votre adresse mail" id="recup_mail" /><br/>
<input type="submit" value="Valider" name="recup_submit" class="btn btn-primary"/>
</form>
<?php endif; ?>
Dinars Le 13 juillet 2017 à 20:22 (Édité le 1 janvier 1970 à 01:00)
Je connais cette notation sous forme ternaire mais je ne l'utilise jamais car je ne sais pas bien m'en servir et de plus ce n'est pas proposé par Sublime Text!
Zbuu Le 15 juillet 2017 à 09:42 (Édité le 1 janvier 1970 à 01:00)
Le ternaire c'est :
$name = 'Dinars';
$result = (!empty($name)) ? $name : null;
Dans cet exemple :
Si la variable $name n'est pas vide alors $result retournera la valeur donc ici "dinars".
Par contre si elle est vide alors $result vaudra null
et de plus ce n'est pas proposé par Sublime Text!ah bon dans du code html ça n'autocomplete pas automatiquement cette façon de if/else ? Je me souviens pas d'avoir installé quelque chose de particulier pour ça 😒
Sinon si tu n'as toujours pas résolu ton problème, tu as un } en trop dans ta ligne 2 😉
Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail']; } ?>
Serait plutot :
Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail']; ?>
Dinars Le 17 juillet 2017 à 11:13 (Édité le 17 juillet 2017 à 11:23)
Je poste mon code aussi au cas où
<?php require_once 'include/connexion_bdd_espace_membres.php'; // Connexion à la base de données
if (isset($_GET['section'])) {
$section = htmlspecialchars($_GET['section']);
} else {
$section == "";
}
if (isset($_POST['recup_submit'], $_POST['recup_mail'])) {// si le formulaire est bien rempli
if (!empty($_POST['recup_mail'])) {// si le formulaire n'est pas vide
$recup_mail = htmlspecialchars($_POST['recup_mail']); //sécurisation de l'e-mail donnée
if (filter_var($recup_mail, FILTER_VALIDATE_EMAIL)) {// on verifie que l'adresse e-mail ($recup_mail) est valide
$mailexist = $bdd2->prepare('SELECT id, pseudo FROM membres WHERE email = ?');
$mailexist->execute(array($recup_mail)); // on récupère id et pseudo correspondant à $recup_mail
$mailexist_count = $mailexist->rowCount();
if ($mailexist_count == 1) {//si l'e-mail existe
$pseudo = $mailexist->fetch();
$pseudo = $pseudo['pseudo'];
$_SESSION['recup_mail'] = $recup_mail;
//$_SESSION['recup_code'] = $recup_code;
$recup_code = "";
for ($i=0; $i < 8; $i++) {
$recup_code .= mt_rand(0,9); // génération d'un code à 8 chiffres
}
$mail_recup_exist = $bdd2->prepare('SELECT id FROM recuperation WHERE email = ?');
$mail_recup_exist->execute(array($recup_mail));
$mail_recup_exist = $mail_recup_exist->rowCount();
if ($mail_recup_exist == 1) {
$recup_insert = $bdd2->prepare('UPDATE recuperation SET code = ? WHERE email = ?');
$mail_recup_exist->execute(array($recup_code, $recup_mail));
} else {
$recup_insert = $bdd2->prepare("INSERT INTO recuperation(pseudo, email, code) VALUES (?, ?, ?)"); // insertion dans la table recuperation
$recup_insert->execute(array($pseudo, $recup_mail, $recup_code));
}
// e-mail
mail($recup_mail, $sujet, $message, $header);
header('Location: http://localhost/test/reinitialisation.php?section=code');
} else {
$erreur = "Adresse e-mail non reconnue";
}
} else {
$erreur = "Adresse e-mail invalide !";
}
} else {
$erreur = "Veuillez entrer une adresse e-mail !";
}
}
// traitement du formulaire demandant de recopier le code reçu par mail
if (isset($_POST['verif_submit'], $_POST['verif_code'])) {
if (!empty($_POST['verif_code'])) {
$verif_code = htmlspecialchars($_POST['verif_code']);
$verif_req = $bdd2->prepare('SELECT id FROM recuperation WHERE email = ? AND code = ?');
$verif_req->execute(array($_SESSION['recup_mail'],$verif_code));
$verif_req = $verif_req->rowCount();
if($verif_req == 1) {
$up_req = $bdd2->prepare('UPDATE recuperation SET confirme = 1 WHERE email = ?');
$up_req->execute(array($_SESSION['recup_mail']));
header('Location:http://localhost/test/recuperation.php?section=changemdp');
} else {
$erreur = 'Code invalide';
}
} else {
$erreur = 'Veuillez entrer votre code de confirmation';
}
}
// traitement du formulaire de redéfinition du mot de passe
if(isset($_POST['change_submit'])) {
if(isset($_POST['change_mdp'],$_POST['change_mdpc'])) {
$verif_confirme = $bdd->prepare('SELECT confirme FROM recuperation WHERE mail = ?');
$verif_confirme->execute(array($_SESSION['recup_mail']));
$verif_confirme = $verif_confirme->fetch();
$verif_confirme = $verif_confirme['confirme'];
if($verif_confirme == 1) {
$mdp = htmlspecialchars($_POST['change_mdp']);
$mdpc = htmlspecialchars($_POST['change_mdpc']);
if(!empty($mdp) && !empty($mdpc)) {
if($mdp == $mdpc) {
$mdp = sha1($mdp);
$ins_mdp = $bdd->prepare('UPDATE membres SET mdp = ? WHERE email = ?');
$ins_mdp->execute(array($mdp, $_SESSION['recup_mail']));
$del_req = $bdd->prepare('DELETE FROM recuperation WHERE mail = ?');
$del_req->execute(array($_SESSION['recup_mail']));
header('Location:http://localhost/test/connexion.php');
} else {
$erreur = 'Vos mots de passes ne correspondent pas !';
}
} else {
$erreur = 'Veuillez confirmer votre adresse e-mail avec le code qui vous a été envoyé !';
}
} else {
$erreur = 'Veuillez remplir tous les champs !';
}
} else {
$erreur = 'Veuillez remplir tous les champs !';
} ?>