Php qui ne marche pas, sans raison

Résolu
Bonjour à tous, j'ai un problème sur une page en php, j'ai tout vérifié, il n'y a pas d'erreur (du moins je n'en vois pas).
C'est une page qui récupère les données d'un formulaire d'inscription, la deuxième partie (if($_POST['pass'] == $_POST['pass_conf']) ne semble pas marcher car les mots de passe sont toujours considérés comme valides même quand j'en met deux différents ...

Voici le code complet de la page :
_______________________________________________________________
<?php
include ('./inc/acces.php');
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];
$pass = mysql_real_escape_string(htmlspecialchars($_POST['pass']));
$pass_conf = mysql_real_escape_string(htmlspecialchars($_POST['pass_conf']));
$news = $_POST['inscription'];

if(!empty($_POST['nom']) || !empty($_POST['prenom']) || !empty($_POST['pseudo']) || !empty($_POST['mail']) || !empty($_POST['pass']) || !empty($_POST['pass_conf']))
{
if($_POST['pass'] == $_POST['pass_conf']
{
echo 'les mots de passe sont valides';
}
else
{
header('Location: http://site.com/inscription.php?error=4');
}
}
else
{
header('Location: http://site.com/inscription.php?error=5');
}
?>
______________________________________________________________
Merci de prêter attention à mon problème en espérant rapide de votre part.

4 réponses

  1. Bon le problème est résolu, j'ai modifié le code le code proposé par ze-life-of-quent1 :

    <?php
    if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['pseudo']) && !empty($_POST['mail']) && !empty($_POST['pass']) && !empty($_POST['pass_conf'])){
    if($_POST['pass'] == $_POST['pass_conf']){
    //Traitement avec la bdd
    }
    else{
    header('Location: http://site.com/inscription.php?error=4');
    }
    }
    else{
    header('Location: http://site.com/inscription.php?error=5');
    }
    ?>
    1. bonjour,

      include ('./inc/acces.php'); 


      y a quoi dans acces.php ?! apparement tu l'utilses pas ici...

      $pass = mysql_real_escape_string(htmlspecialchars($_POST['pass'])); 


      pourquoi utiliser htmlspecialchars avec mysqm_real_escape_string alors qu'il s'agit d'une simple comparaison ?!

      et malgrer tout à part l'erreur que ze-life-of-quent1 t'a signalé ton code doit marché je crois il suffit de revoir si les conditions sont vraix ou faux dans tes jeux d'essaie

      1. Le acces.php sert à se connecter sur la bdd que j'utilise pour insérer les données la table (j'ai pas mis le code ici)
      2. Exact. Mais pourquoi ne pas faire ce traitement plus tard, quand vous hashez le mot de passe?
      3. Oui ca me semble plus logique pour éviter les étapes inutiles
    2. J'ai ajouté la parenthèse mais rien de mieux, maintenant les mots de passe sont toujours considérés comme faux, c'est étrange quand même qu'un code aussi simple ne marche pas !
      1. Je viens de tester en local et cela marche très bien :-/. Voici le code que j'ai utilisé:
        <?php
        $_POST['nom'] = 'abcd';
        $_POST['prenom'] = 'abcd';
        $_POST['pseudo'] = 'abcd';
        $_POST['mail'] = 'abcd';
        $_POST['pass'] = 'abcde';
        $_POST['pass_conf'] = 'abcd';
        if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['pseudo']) && !empty($_POST['mail']) && !empty($_POST['pass']) && !empty($_POST['pass_conf'])){ 
            if($_POST['pass'] == $_POST['pass_conf']){ 
                echo 'les mots de passe sont valides';    
            } 
            else{ 
                echo 'invalide!';
            } 
        } 
        else{ 
            echo 'incomplet...';
        }
        ?>
    3. Bonjour,
      à première vue, il manque une parenthèse fermante à la ligne
      if($_POST['pass'] == $_POST['pass_conf']

      Ensuite, vous vous trompez en utilisant des ||: il suffit de remplir $_POST['nom'] pour que ça soit validé.