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. 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é.
    0
    1. 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 !
      0
      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...';
        }
        ?>
        0
    2. 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

      0
      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)
        0
      2. Exact. Mais pourquoi ne pas faire ce traitement plus tard, quand vous hashez le mot de passe?
        0
      3. Oui ca me semble plus logique pour éviter les étapes inutiles
        0
    3. 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');
      }
      ?>
      0