PHP auhentification: une page différente s'affiche selon le cas

Petit nouveau ! | 5 Messages

29 juin 2008, 18:30

Bonjour à Tous,
Je viens de créer un formulaire d’authentification de membres d'un club lier une base de données mysql. Le membre doit renseigner son login et mot de passe pour accéder à l’espace membre. Un fichier « authentifier.php » vérifie si le membre est présent dans la base de données. Si le membre est présent, la page « interface.php » est affichée sinon c’est la page « pas_authentifier.php » qui s’affiche. Voici le cœur de mon code, mais qui ne fonctionne pas. Merci, par avance à tous ceux qui m’aideront à trouver la solution
<body>
    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("INDUS");
    $Resultat=mysql_query(SELECT * FROM `indus` WHERE `NomVisiteur` LIKE '$EDILogin' AND `MotDePasse` LIKE '$EDIMotDePasse';)
    if (mysql_numrows($Resultat) ==1)
	
	 header("Location: http://localhost/INDUS/interface.php"); 
	  exit();
      {
    ?>
    <?php
      }
    else
      {
    ?>
	 header("Location: http://localhost/INDUS/pas_authentifier.php"); 
    <?
      }
    mysql_close();
    ?>
  </body>
guyde
guyde

Mammouth du PHP | 1668 Messages

29 juin 2008, 18:45

Bonjour,

Pour des raisons de lisibilités, merci d'utilisé ces balise :

Code : Tout sélectionner

[php][/php]
Ensuite :
<?php 
mysql_connect("localhost", "root", ""); 
mysql_select_db("INDUS"); 
$Resultat=mysql_query(SELECT * FROM `indus` WHERE `NomVisiteur` LIKE '$EDILogin' AND `MotDePasse` LIKE '$EDIMotDePasse';)
if (mysql_numrows($Resultat) ==1) 

header("Location: http://localhost/INDUS/interface.php"); 
exit(); 
{ 
?> 
<?php 
} 
else 
{ 
?> 
header("Location: http://localhost/INDUS/pas_authentifier.php"); 
<? 
} 
mysql_close(); 
?> 
$Resultat=mysql_query(SELECT * FROM `indus` WHERE `NomVisiteur` LIKE '$EDILogin' AND `MotDePasse` LIKE '$EDIMotDePasse';)
C'est incorrecte, essaye ça :
$Resultat=mysql_query("SELECT * FROM indus WHERE NomVisiteur='".$EDILogin."' AND MotDePasse='".$EDIMotDePasse."'");
Personnelement je n'aurait pas fait comme ça, mais bref...

Si tu veux pouvoir utilisé la redirection par les headers (header()), ton bloc de PHP doit être avant toute choses, c'est à dire avant <html>

Voilà quelques pistes...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Petit nouveau ! | 5 Messages

29 juin 2008, 19:07

Merci de votre réponse. J'ai fait la modification comme proposé dans ton mail mais ça ne marche pas. J'ai le message d'erreur ci-dessous:
"e error: syntax error, unexpected T_ELSE in C:\wamp\www\INDUS\authentification.php on line 18
"
Ma ligne 18 c'est le mot "else"
Guyde
guyde

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

29 juin 2008, 20:00

Déplace l'accolade ouvrante { juste après ton if. Sa position actuelle est incorrecte. En suite, enlève les marqueurs <?php et ?> au milieu du code, car tu n'a que du code PHP.

Correction:
<?php 
mysql_connect("localhost", "root", ""); 
mysql_select_db("INDUS"); 
$Resultat=mysql_query(SELECT * FROM `indus` WHERE `NomVisiteur` LIKE '$EDILogin' AND `MotDePasse` LIKE '$EDIMotDePasse';)
if (mysql_numrows($Resultat) ==1) 
{
header("Location: http://localhost/INDUS/interface.php"); 
exit(); 

} 
else 
{ 
header("Location: http://localhost/INDUS/pas_authentifier.php"); 
} 
mysql_close(); 
?> 
Modifié en dernier par sadeq le 29 juin 2008, 20:02, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 1668 Messages

29 juin 2008, 20:01

18, c'est la fin de ta page, tu as dût oublié de fermer un accolade, celle d'une condition, ou alors, ton accolade ouvrante est collé à un else, si c'est le cas, il faut un espace entre les deux...

Si ça ne marche toujous pas montre nous le code en entier avec les balises suivantes pour améliorer la lisibilité :

Code : Tout sélectionner

[php][/php]
Par avance merci :lol:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Petit nouveau ! | 5 Messages

30 juin 2008, 19:49

Bonsoir à Tous et grand merci à "katagoto" et à "sadeq" qui m'ont aidé à corriger mon petit script d'authentification. Le problème est maintenant résolu. Voici ci-dessous la forme finale de mon script d'authentification par login et mot de passe:

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("INDUS");
$Resultat=mysql_query("SELECT * FROM indus WHERE NomVisiteur='".$EDILogin."' AND MotDePasse='".$EDIMotDePasse."'");
if (mysql_numrows($Resultat) ==1)
{
header("Location: http://localhost/INDUS/interface.php");
exit();

}
else
{
header("Location: http://localhost/INDUS/pas_authentifier.php");
}
mysql_close();
?>

Grand merci à vous tous!!
Guyde
guyde

Mammouth du PHP | 1668 Messages

30 juin 2008, 19:55

Les modérateurs te dirons :

Clique sur l'image qui ressemble à celle là en haut de ton topic :
Mettre [Résolu]

Merci de mettre ces balise autour de ton code :

Code : Tout sélectionner

[php][/php]
Et derien, n'ésite pas à revenir ^^
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 juin 2008, 20:11

Modération :
mapasa, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

katagoto, je t'ai déjà demandé de ne pas faire ce genre de remarque toi-même.
Tu disposes d'un bouton pour signaler les messages de ce type et un modérateur pourra voir si le sujet mérite modération ou non
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer