Problème de création d'un espace membre PHP

Résolu/Fermé
Signaler
-
 Kevin -
Bonjour,
Je suis actuellement en train de créer un espace membre en PHP, mais peu importe ce que je fais, quand je clique sur connexion, le message "désolé tu dois remplir tous les champs" apparait. Je l'ai disposé en 3 pages, la page index.php, page cibles.php et la page connexion .php .
Les codes de l'index :
<DOCTYPE html>
<html>
<head>
<title> Titre de mon site </title>
</head>
<body>
<center>
<h1> 1 : </h1>
</br>
<br>
<form action="Cibles.php" method="POST">
<p>
<label for="login"> Ton pseudo : </label>
<input type="text" id="login" placeholder="Entre ton pseudo..." name="pseudo" /> </br></br>
<label for="pass"> Ton mot de passe : </label>
<input type="password" id="pass" placeholder="Entre ton mot de passe..." name="pass" id="pass" /><br/><br/>
<input type="submit" value="Se connecter !" />
</p>
</form>
</center>
</body>
</html>


-----------------------------------------------------------------------------------------

les codes de la page cibles.php :
<?php
include('connexion.php');


if ( !empty($_POST['login']) && !empty($_POST['pass']))
{
$login = $_POST['login'];
$pass = $_POST['pass'];

$sql = "SELECT pass FROM users WHERE login='$login'";
$req = mysql_query($sql) or die (mysql_error());
$data = mysql_fetch_assoc($req) or die (mysql_error());

$datapass = $data('pass');

if($pass == $data)
{
echo 'Tout est bon, tu es maintenant connecté à mon site web !';
}
else
{
echo 'désolé, il y a une erreur';
}


}
else
{
echo 'désolé, tu dois remplir tous les champs !' ;
}
?>


-----------------------------------------------------------------------------------------
Et enfin les codes de la page connexion.php :

<?php
$DB_HOST ="localhost" ;
$DB_LOGIN = "root" ;
$DB_PASS = "";
$DB_DATA = "espace" ;
mysql_connect ($DB_HOST, $DB_LOGIN, $DB_PASS) or die("Erreur, merci de recommencer svp.");
mysql_select_db($DB_DATA) or die ("Erreur, pas de base de données avec ce nom");
?>




Merci d'avance,
Cordialement,
Kevin

5 réponses


Bonjour

<input type="text" id="login" placeholder="Entre ton pseudo..." name="pseudo" />
if ( !empty($_POST['login']) && !empty($_POST['pass']))

Les index qu'on retrouve dans $_POST correspondent aux attributs 'name' des champs et non pas aux attributs 'id'. Il faut donc corriger l'une des deux lignes ci-dessus.

Autres remarques :
Si ton fichier s'appelle cibles.php avec un c minuscule, il faut mettre aussi un c minuscule dans <form action="Cibles.php" method="POST">
Si ça marche en local, tu as toutes les chances que ça ne marche pas en ligne, si l'OS de ton hébergement est sensible à la casse, ce qui est le cas le plus courant.

Il faudrait aussi que tu te décides pour <br>, </br> ou <br />. L'écriture correcte en HTML5 est <br> simplement. <br /> est pour xhtml et </br> est une erreur.
1
Bonjour et merci de ta réponse,
Mon C de Cibles.php est bien en majuscule et j'ai arrangé le problème du name et des <br>, mais désormais, lorsque je mets mes bons identifiants, il me dit Pseudo ou mot de passe incorrecte, mais lorsque je mets les mauvais identifiants, aucun message ne s'affiche.

Pourriez-vous m'aidez?

Merci d'avance!
0

Autre erreur :

$datapass = $data('pass');
if($pass == $data)


Ce devrait être
if($pass == $datapass)


Et tu devrais toujours avoir le message 'désolé, il y a une erreur'.

Je suppose que tu as changé ton code par rapport à l'autre jour, peux-tu nous montrer le nouveau code ?

Remarque supplémentaire : je ne trouve pas logique du tout de tester le pseudo dans la requête MySQL et mot de passe dans le code PHP... C'est beaucoup plus simple de faire :
$sql = "SELECT * FROM users WHERE login='$login' AND pass='$pass'";
0
Alors effectivement, j'ai toujours le message pseudo ou mot de passe incorrect.

Voici mes nouveaux codes :

Index :
<DOCTYPE html>
<html>
<head>
<title> Connexion </title>
</head>
<body>
<center>
<form action="cible.php" method="POST">
<p>
<label for="login"> Ton pseudo : </label>
<input type="text" id="login" placeholder="Entre ton pseudo..." name="login" /> </br></br>
<label for="pass"> Ton mot de passe : </label>
<input type="password" id="pass" placeholder="Entre ton mot de passe..." name="pass" id="pass" /><br/><br/>
<input type="submit" value="Se connecter !" />
</p>
</form>
</center>
</body>
</html>


connexion :

<?php
$DB_HOST ="localhost" ;
$DB_LOGIN = "root" ;
$DB_PASS = "";
$DB_DATA = "membres" ;
mysql_connect ($DB_HOST, $DB_LOGIN, $DB_PASS) or die("Erreur, merci de recommencer svp.");
mysql_select_db($DB_DATA) or die ("Erreur, pas de base de données avec ce nom");
?>



cible :

<?php
include('connexion.php');


if ( !empty($_POST['login']) && !empty($_POST['pass']))
{
$login = $_POST['login'];
$pass = $_POST['pass'];

$sql = "SELECT pass FROM membres WHERE login='$login'";
$req = mysql_query($sql) or die (mysql_error());
$data = mysql_fetch_assoc($req) or die (mysql_error());

$datapass = $data['pass'];

if($pass == $data)
{
echo 'Tout est bon, tu es maintenant connecté à mon site web !';
}
else
{
echo 'Pseudo ou mot de passe incorrect!';
}


}
else
{
echo 'désolé, tu dois remplir tous les champs !' ;
}
?>
0
Mon probleme est désormais résolu :)
0