Mes conditions sont ignorées

Fermé
JS00000 Messages postés 16 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 10 octobre 2016 - Modifié par JS00000 le 10/10/2016 à 00:20
JS00000 Messages postés 16 Date d'inscription lundi 27 octobre 2014 Statut Membre Dernière intervention 10 octobre 2016 - 10 oct. 2016 à 19:45
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
10 oct. 2016 à 00:51
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 lundi 27 octobre 2014 Statut Membre Dernière intervention 10 octobre 2016
10 oct. 2016 à 19:45
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