Message d'erreur toujours affiché

Petit nouveau ! | 2 Messages

26 févr. 2020, 23:46

Bonjour, j'ai un soucis avec mon message d'erreur $erreur "Veuillez compléter tous les champs." qui s'affiche tout le temps alors que je voudrai qu'il s'affiche seulement si c'est le cas quand l'utilisateur valide le formulaire.
Je me suis dis que le problème venait du "if(isset($_SESSION['id']))" étant donné que je ne fais pas la condition en fonction du "submit" de mon formulaire car sur ma page d'inscription, avec "if(isset($_POST['submit_form_Inscription']))" le message d'erreur ne s'affiche que lorsque le client valide le formulaire. Sauf que vu que je suis sur la session du client, je sais pas par quoi remplacer (si le problème vient de là).
J'espère que j'ai été assé compréhensible.
Je vous met mon traitement ci dessus et merci d'avance de vos réponses et de votre aide.

<?php
session_start();

include 'Include/database.php';

if(isset($_SESSION['id'])) {

$requser = $db->prepare("SELECT * FROM users WHERE id = ?");
$requser->execute(array($_SESSION['id']));
$userinfo = $requser->fetch();
if(isset($_POST['newmdp']) AND !empty($_POST['newmdp']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) {

$oldmdp = sha1($_POST['oldmdp']);
$requser = $db->prepare("SELECT * FROM users WHERE password = ?");
$requser->execute(array($oldmdp));
$mdpexist = $requser->rowCount();
if($mdpexist == 1) {

$newmdp = sha1($_POST['newmdp']);
$newmdp2 = sha1($_POST['newmdp2']);
if($newmdp == $newmdp2) {

$insertmdp = $db->prepare("UPDATE users SET password = ? WHERE id = ?");
$insertmdp->execute(array($newmdp, $_SESSION['id']));
header('Location: page_user.php');

} else {
$erreur = "Vos deux mdp ne correspondent pas !";
}
} else {
$erreur = "Le mot de passe actuel saisie est incorrect.";
}
} else {
$erreur = "Veuillez compléter tous les champs.";
}
} else {
header("Location: page_user.php");
}
?>

Mammouth du PHP | 1645 Messages

28 févr. 2020, 09:35

2 petite remarque

pas besoin de faire un isset et un !empty, empty() comprends un isset dans son code machine ca allégera ton code

ensuite indente ton code correctement (sur le forum utilise les balises

Code : Tout sélectionner

[php][/php]
) tu verra que ton message $erreur ne correspond pas à la condition de session mais bien à la suivante.

découpe là en petit bout pour savoir ce qui bloque.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube

dooki
Invité n'ayant pas de compte PHPfrance

28 févr. 2020, 17:49

je pense que ca vient de cette ligne la ;

Code : Tout sélectionner

if(isset($_POST['newmdp']) AND !empty($_POST['newmdp']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) {
peut être si tu enleves les "!" devant les empty, essaye et dis moi !

Petit nouveau ! | 2 Messages

02 mars 2020, 13:23

En testant 2 3 truc j’ai trouvé, au lieux de mettre un « else { $erreur » j’ai mis un « else if (isset($_POST[‘monSubmit])) { $erreur » mais merci pour l’astuce afin d’alléger le code Spols.
Si j’enlève les « ! » devant les empty ça change toute ma condition.