Mes conditions sont ignorées

JS00000 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
JS00000 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
Voilà maintenant un moment qu'un soucis me tracasse: je suis en train de mettre en place un système d'options pour modifier ses information sur mon site, seulement, quand je valide le formulaire, toutes mes conditions sont ignorées...

Le code:
<?php
$pass = 1;
$avatar = 1;

if(!empty($_POST['a_pass']) || !empty($_POST['nv_pass']) || !empty($_POST['nv_pass_r']))
{
    if(!empty($_POST['a_pass']) && !empty($_POST['nv_pass']) && !empty($_POST['nv_pass_r']))
    {
        $req_a_mdp = $bdd->prepare('SELECT password FROM membres WHERE id = ?');
        $req_a_mdp->execute(array($_SESSION['id']));
        $a_mdp = $req_a_mdp->fetch();
        if(password_verify($_POST['a_pass'], $a_mdp['password']))
        {
            if($_POST['nv_pass'] == $_POST['nv_pass_r'])
            {
                $pass = 2;
            }
            
            else
            {
                header('Location: compte.php?erreur=9');
            }
        }
        
        else
        {
            header('Location: compte.php?erreur=8');
        }
    }
    
    else
    {
        header('Location: compte.php?erreur=7');
    }
}

if(!empty($_FILES['avatar']['name']))
{
    
 $extention = array("jpg", "jpeg", "png", "gif");
 $verif_req_av = new SplFileInfo($_FILES['avatar']['name']);
 $verif_av = $verif_req_av->getExtension();
    
    if(in_array($verif_av, $extention))
    {
        if($_FILES['avatar']['size'] <= 90000)
        {
            list($width_av, $height_av) = getimagesize($_FILES['avatar']['tmp_name']);
            if($width_av <= '800' && $height_av <= '800')
            {
                if($_FILES['avatar']['error'] == 0)
                {
                    $nom_av = $_SESSION['id'] . '.' . $verif_av;
                    
                    $avatar = 2;
                }
                
                else
                {
                    header('Location: compte.php?erreur=6');
                }
            }
            
            else
            {
                header('Location: compte.php?erreur=5');
            }

        }
        
        else
        {
            header('Location: compte.php?erreur=4');
        }
    }
    
    else
    {
       header('Location: compte.php?erreur=3'); 
    }
}

if($_POST['aff_date'] != 1)
{
   $_POST['aff_date'] = 0; 
}

if($_POST['aff_annee'] != 1)
{
   $_POST['aff_annee'] = 0; 
}

if($pass == 2 && $avatar == 2)
{
    move_uploaded_file($_FILES['avatar']['tmp_name'], 'images/users/' . $nom_av);
    if($transfere_av == 1)
    {
        $update = $bdd->prepare('UPDATE membres SET mail = :mail, password = :pass, avatar = :avatar, bio = :bio, opt = :opt WERE id = :id');
        $update->execute(array(
            'mail' => $_POST['mail'],
            'pass' => password_hash($_POST['pass_nv'], PASSWORD_BCRYPT),
            'avatar' => $nom_av,
            'bio' => $_POST['bio'],
            'opt' => $_POST['aff_date'] . ',' . $_POST['aff_annee']
        ));
        
        header('Location: compte.php?modif=4');
    }
    
    else
    {
        header('Location: compte.php?erreur=2');
    }
}

elseif($pass == 2 && $avatar == 1)
{
     $update = $bdd->prepare('UPDATE membres SET mail = :mail, password = :pass, avatar = :avatar, bio = :bio, opt = :opt WERE id = :id');
     $update->execute(array(
        'mail' => $_POST['mail'],
        'pass' => password_hash($_POST['pass_nv'], PASSWORD_BCRYPT),
        'bio' => $_POST['bio'],
        'opt' => $_POST['aff_date'] . ',' . $_POST['aff_annee']
    ));
    
    header('Location: compte.php?modif=3');
}

elseif($pass == 1 && $avatar == 2)
{
    move_uploaded_file($_FILES['avatar']['tmp_name'], 'images/users/' . $nom_av);
    if($transfere_av == 1)
    {
        $update = $bdd->prepare('UPDATE membres SET mail = :mail, password = :pass, avatar = :avatar, bio = :bio, opt = :opt WERE id = :id');
        $update->execute(array(
            'mail' => $_POST['mail'],
            'avatar' => $nom_av,
            'bio' => $_POST['bio'],
            'opt' => $_POST['aff_date'] . ',' . $_POST['aff_annee']
        ));
        header('Location: compte.php?modif=2');
    }
    
    else
    {
        header('Location: compte.php?erreur=1');
    }
}

else
{
    $update = $bdd->prepare('UPDATE membres SET mail = :mail, password = :pass, avatar = :avatar, bio = :bio, opt = :opt WERE id = :id');
    $update->execute(array(
        'mail' => $_POST['mail'],
        'bio' => $_POST['bio'],
        'opt' => $_POST['aff_date'] . ',' . $_POST['aff_annee']
    ));
    
    header('Location: compte.php?modif=1');
}


Seule cette partie s'excécute en ignorant tout le reste:
else
{
    $update = $bdd->prepare('UPDATE membres SET mail = :mail, password = :pass, avatar = :avatar, bio = :bio, opt = :opt WERE id = :id');
    $update->execute(array(
        'mail' => $_POST['mail'],
        'bio' => $_POST['bio'],
        'opt' => $_POST['aff_date'] . ',' . $_POST['aff_annee']
    ));
    
    header('Location: compte.php?modif=1');
}


Merci d'avance pour vos réponses et votre aide !

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Commence par mettre en commentaire toutes tes redirections

Ensuite,
- Récupère "PROPREMENT" tes variables AVANT de les utiliser (voir ici : https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
- Active la gestion des erreurs PDO
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

- Active aussi l'affichage des erreurs PHP au début de ton code
error_reporting(E_ALL);



essaye également (c'est le plus important je pense....) de réorganiser ton code... quand je vois que tu écris 4 fois la même requête et/ou plusieurs fois les même IF....on ne peut que s'interroger sur la fiabilité du code et la logique mise en place...


Pour finir, fais donc des PRINT de tes variables
pour savoir ce qu'elles contiennent et n'hésites pas à ajouter quelques ECHO dans tes différents blocs conditionnels pour voir si tu rentres dedans ou non.
    • En commençant par des print de post et files

print_r($_POST);
print_r($_FILES);






0
JS00000 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de ta réponse, au vu de tout ce que tu me dis, je vais prendre la sage décision d'apprendre à réorganiser mon code en POO.
Merci en tout cas de ton aide !
0