Php qui ne marche pas, sans raison

Résolu/Fermé
bogal - 19 juil. 2012 à 13:24
 bogal - 19 juil. 2012 à 14:13
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

ze-life-of-quent1 Messages postés 1582 Date d'inscription lundi 8 février 2010 Statut Membre Dernière intervention 17 octobre 2015 776
19 juil. 2012 à 13:32
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
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
ze-life-of-quent1 Messages postés 1582 Date d'inscription lundi 8 février 2010 Statut Membre Dernière intervention 17 octobre 2015 776
19 juil. 2012 à 13:44
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
Utilisateur anonyme
19 juil. 2012 à 13:52
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
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
ze-life-of-quent1 Messages postés 1582 Date d'inscription lundi 8 février 2010 Statut Membre Dernière intervention 17 octobre 2015 776
19 juil. 2012 à 14:01
Exact. Mais pourquoi ne pas faire ce traitement plus tard, quand vous hashez le mot de passe?
0
Oui ca me semble plus logique pour éviter les étapes inutiles
0
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