Problème Système de connexion | PHP

Fermé
Esdee - 12 sept. 2010 à 18:24
 Esdee - 14 sept. 2010 à 07:58
Bonjour, :] !
Cela va fait environs 2 / 3 heures que je cherches sur google tout comme personnelement (moi même) d'où pourrait venir mes problèmes.
Comme dis dans le titre, j'ai un petit problème avec mon système de connexion sur mon site. Je m'explique.

Je créé un compte sans aucune problème sur mon site.
Mais une fois que je tente de me connecter, au lieu d'être redirigé vers ma page 'membre.php', ca ne fait que me rediriger vers ma page 'Connexion.php' (qui est présent dans la balise <form>).
Bon, ceci n'a pas l'air très parlant :/.
Je vais donc vous montrer mon script en entier.
Et vais mettre, en Italique, la partie qui me semble incorrècte (pour que vous evitiez d'analyser tout mon code :))>



<?php

/*
 Parcour du formulaire de connexion.
*/

if (isset($_POST['Connexion']) && $_POST['Connexion'] == 'Connexion') 
{ 
   if ((isset($_POST['Pseudo']) && !empty($_POST['Pseudo'])) && (isset($_POST['Mot_de_Passe']) && !empty($_POST['Mot_de_Passe']))) 
   { 
 
 
  // Connexion à la base de donnée.
  
 include("Connexion_Base.php");
      
	
// Selection à partir de la bdd.  
	  
$sql = 'SELECT count(*) FROM membre WHERE Pseudo="'.mysql_escape_string($_POST['Pseudo']).'" AND Mot_de_Passe="'.mysql_escape_string($_POST['Mot_de_Passe']).'" ';
$req = mysql_query($sql) or die('<p><div align="center"><font color="#CB0000"><strong><u>Erreur Fatale:</u> Un erreur c\'est imposée dans la base de donnée SQL.<br /></font><u>Script erroné:</u> '.$sql.'<br /><u>Explications:</u> '. mysql_error() . '</strong></div></p>');
$data = mysql_fetch_array($req); 
      
      mysql_free_result($req); 
      mysql_close(); 
      
	  
      // Connexion réussie
	  
if ($data[0] == 1) 
	  { 
         session_start(); 
            $_SESSION['Pseudo'] = $_POST['Pseudo'];
         header ('Location: membre.php'); 
         exit(); 
      } 
	  
// Connexion faussée
	  
      elseif($data[0] == 0) 
	    {
         $erreur = 'erreur';
        }
	  
      else 
	  { 
         $erreur = 'erreur'
      } 
   } 
   else 
    { 
      $erreur = erreur'; 
    }  
}  
?>


/// PARTIS "HTML":
		
		 <!-- Début script : Contenu -->
         <h1>Connexion...</h1>
Présentation, etc..


<?php

if (isset($erreur))
     echo '$erreur';


<p>
<form action="Connexion.php" method="post">

<p>
Nom d'Utilisateur : 
<input type="text" name="Pseudo" value="<?php if (isset($_POST['Pseudo'])) echo htmlentities(trim($_POST['Pseudo'])); ?>">
</p>

<p>
Mot de Passe : 
<input type="password" name="Mot_de_Passe" value="<?php if (isset($_POST['Mot_de_Passe'])) echo htmlentities(trim($_POST['Mot_de_Passe'])); ?>"> 
</p>

<p>
<div align="center">
<input type="submit" name="Connexion" value="Connexion">
</div>
</p>
</form>
</p>




Bon, voilà tout. J'ai raccourcis supprimer un maximum de code n'étant pas très utile (textes, quelques balises, etc..). Donc si il y a quelques petitees erreurs, ce n'est rien ^^.

Donc, merci de votre aide :).

Rappel de mon problème: Quand je tente de me connecter, ca ne fait qu'actualiser ma page sans me connecter :x ...

Bonne soirée !

A voir également:

24 réponses

wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
Modifié par wyllos le 12/09/2010 à 18:43
Pourquoi faire:
if ($data[0] == 1)  
   {  
         session_start();  
            $_SESSION['Pseudo'] = $_POST['Pseudo']; 
         header ('Location: membre.php');  
         exit();  
      }  


Ton $data[0] serait mieu en
mysql_num_rows($sql) > 0


window XP
1
Ah merci :) ! Ca a l'air de marcher 'un peu mieux' ^^.
Mais maintenant j'ai une message d'erreur qui apparait :/.

elseif($data[0] == 0)
{
$erreur = 'erreur';
}


Le message d'erreur souligné s'affiche, je ne sais pourquoi :/.
J'ai bien vérifié si j'insérais les bonnes coordonnées de connection, mais ca persiste :S.
0
wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
12 sept. 2010 à 19:09
faut remplacer par:
elseif(mysql_num_rows($sql) == 0)
{
$erreur = 'erreur';
} 
0
Oui, désoler, j'ai oublié de précisé que j'avais fait le changement ^^'.
Donc, toujours ce message d'erreur :( .. Je déséspère :S..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
12 sept. 2010 à 19:27
C'est donc que votre sortie de requete est vide, faite un echo de votre requete et passé la directement dans mysql. Vous aurez surement la réponse.
0
Résultat: Aucune problème.
Ca ne m'affiche aucun message d'erreur, et ca m'affiche bien tous les compts créés sur ma base de donnée :O ..
0
wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
12 sept. 2010 à 20:10
Ok normal change :

mysql_num_rows($sql)

par
mysql_num_rows($req)
0
Toujours même problème O.ô ..
Je commence à douter par la fiabilité de mes scripts :S..
0
wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
12 sept. 2010 à 20:30
Remplacez : SELECT count(*) FROM par SELECT Pseudo FROM
0
Toujours le même problème :'(.
Enfet, si ca peut aider, j'ai 6 champs dans ma table 'membre', ca vient peut être de là .. ?
0
wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
12 sept. 2010 à 21:55
Moi je ferais plutot cela:

$sql = 'SELECT Pseudo, Mot_de_passe FROM membre WHERE Pseudo="'.mysql_real_escape_string($_POST['Pseudo']).'"  ';
$req = mysql_query($sql);
$data = mysql_fetch_array($req);

if(!empty($data['Pseudo'] && $data['Mot_de_passe'] == $_POST['Pass'] )
{
    session_start();
    $_session['user'] = $_POST['Pseudo'];
   .......

}else {  le code pas bon}


0
         $sql = 'SELECT Pseudo, Mot_de_passe FROM membre WHERE Pseudo="'.mysql_real_escape_string($_POST['Pseudo']).'"  ';
         $req = mysql_query($sql);
         $data = mysql_fetch_array($req);

         if (!empty($data['Pseudo'] && $data['Mot_de_passe'] == $_POST['Mot_de_Passe']))


Voilà le message d'erreur de la part de pHP :/ >
Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ')' in XXX on line 34


J'ai pourtant corrigé une petit erreur (de parenthèse), mais cela n'y change rien :/.
0
Désoler, j'ai oublié de préciser que la (ligne.34) est celle en gras et italique.
(

if (!empty($data['Pseudo'] && $data['Mot_de_passe'] == $_POST['Mot_de_Passe']))


)
0
wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
13 sept. 2010 à 09:28
tu as dans une parenthese en trop:
if (!empty($data['Pseudo'] && $data['Mot_de_passe'] == $_POST['Mot_de_Passe']))

remplace par:
if (!empty($data['Pseudo'] && $data['Mot_de_passe'] == $_POST['Mot_de_Passe'])
{
   le code

}
0
Toujours le même problème =/.
Mais ce que je ne comprend pas:

if (!empty($data['Pseudo'] && $data['Mot_de_passe'] == $_POST['Mot_de_Passe'])


Avant
$data
, on a bien une parenthèse, ne faudrait-il pas la fermer à la fin de la ligne ?
0
Toujours pas de solutions à mon problème =/ ?
0
wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
13 sept. 2010 à 19:30
Controle tes sorties de requete avec un print_r() sur pseudo et mot_de_passe.
et controle bien que $data['mot_de_pass'] soit bien égal à $_POSt['mot_de_pass']
0
Ah, un peu de nouveau !
J'ai remplacé:

if (!empty($data['Pseudo'] && $data['Mot_de_passe'] == $_POST['Mot_de_Passe'])


Par:

if (@!empty ($data['Pseudo']) && ($data['Mot_de_passe']) == ($_POST['Mot_de_Passe']))


J'ai fait ces modifications aux deux reprises, le message d'erreur ne s'affiche plus :].


Ensuite, j'ai testé l'égalité de $_Post et $data, à prioris, tout semble être corrècte.
Je vais voir ce que je peux faire avec le print_r() [Bien que je n'ai pas vraiment compris ce que je dedvais faire, je vais quand même tester quelque chose].

Ah ! Et enfet!
Je vous remercie de vous occuper de mon problème [depuis 1-2 jours déjà] ;). C'est très aimables.
0
J'actualise :].


<?php
if ($data['Mot_de_Passe'] == $_POST['Mot_de_Passe'])
echo '<h1>OK</h1>';

$result1 = print_r ($_POST['Pseudo']);
$result3 = print_r ($data['Pseudo']);
$result2 = print_r ($_POST['Mot_de_Passe']);
$result4 = print_r ($data['Mot_de_Passe']);
echo $result1 . '<br>' . $result3 . '<br><br>' . $result2 . '<br>' . $result4;
?>



Résultat:

Pour le premier script, le texte 'OK' est bien affiché, donc ca a l'air bon.
Pour le second script, $result (1,2,3,4) ont tous pour valeur 1 (affichées aussi).
Donc, à prioris, aucun problème de ce côté là.
0
<?php
if ( isset($data['Pseudo']) && !empty($data['Pseudo']) && $data['Mot_de_passe'] == $_POST['Mot_de_Passe']){
?>

Avec ça c'est plus simple :)


Pour le print_r
<?php
print_r($_REQUEST);
?>
Tu vas voir, c'est magique :)
0