Login et mot de passe

pol
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 15:08

Salut tout le monde !

apres un formulaire ou aparait deux box pour le login et le mot de passe, mon bouton renvoi les info ver une page ac le code suivant
login=$_POST[login];
$pass=$_POST[pass];
// ON inclut le fichier de configuration 


// On se connect à notre serveur Sql 
$db = mysql_connect('sql.xxxxxx.fr','xxxxx.fr','xxxxxx') or die ("erreur de connexion");
mysql_select_db('xxxxxx',$db) or die ("erreur de connexion base");

// On selectionne quand le champs login correspond au login entré 
// et le champs passe au pass entré. 
$sql = "SELECT * FROM menbres WHERE login='login' and pass='$pass'"; 

// On execute la requête de selection 
$res = mysql_query($sql); 
//mysql_
// On compte le nombre de ligne des resultats 
// 1 : si valide 0 si aucun login ne correspond 
$exist = mysql_numrows($res); 
//if ($res="")
//{
// Si la variable $exist = 0 --> login inexistant ou faux pass 
if(!$exist) 
{ 
    // On affiche ce message d'erreur 
 echo "<center>Veuillez vérifier vos données</center>"; 
   
    // On inclut le formulaire d'identification 
 include("formulaire.php"); 
} 

// Sinon, si le login et pass sont valides 
else {
// On ouvre la session 
session_start(); 

// On enregistre la variable login qu'on fera passer sur ttes les pages 
// ATTENTION : Notez bien l'absence de $ devant login 
session_register("login"); 

// On affiche un message de bienvenu 
echo "<center>Bienvenu sur votre espace membre : $login</center>"; 
     
// Notons que la session a un nom par defaut et un identifiant 
// Nom par défaut : PHPSESSID 
// Id Aleatoire généré lors de l'ouverture de la session 
     
// définissons d'abord les variables 
$sess_nom = session_name(); 
$sess_id = session_id(); 
     
// Affichons si on veut le nom est l'id de la session 
echo "Le nom de la session est :<br> ";
echo $sess_nom." et l'Id est : ".$sess_id."";
     
// On affiche maintenant un lien vers une page d'essai 
// Notez qu'on ne passe pas les variables par l'url 
echo "<a href=\"page.php?login=$login\">Page Essai</a>"; 
     
// A la fin on offre au membre la possibilité de se deconnecter 
echo "<a href=\"deconexion.php\">Deconnection</a>"; 
} 

?> 
lorsque je lance ce code mon serveur php me marque une internal error serveur :

Code : Tout sélectionner

Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, php7-2@invalid and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.
je m'y connait pas trop c'est pour ca que je post dans les débutants php, dc si quelqu'un peu m'aider a comprendre mon erreur.

Merci

pol
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 15:10

il manque le $ en premier la haut, mais c'est une faute de copier coller .

Eléphanteau du PHP | 38 Messages

26 juil. 2006, 15:16

$exist = mysql_numrows($res); 
n'existe pas. c'est :
$exist = mysql_num_rows($res);
if(!$exist)
Il vaudrait mieux utiliser :
if($exist==0) 
car $exist est un nombre et peut avoir autre chose que 0 ou 1 (sauf dans se cas la, d'accord :p, mais quand même...)

Sinon, je ne vois pas d'erreur... Est-ce que tu fais tourner d'autre page sur ton serveur?

pol
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 15:31

oui et d'ailleur j'aimerai qu'elle soit protégé aussi, et j'ai lu quelque tutoriaux mais rien de tres explicite, je veux faire un truc sécurisé mais bon pas non plus du trop complexe.
si ta un petite fonction ou deux sous la main pour m'éclairer !

Merci de ton aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 juil. 2006, 15:41

modération : merci d'utiliser les balises
 et [code] autour des sources PHP et autres messages d'erreur. Ceci pour améliorer la lisibilité du code. Plus d'info pour savoir comment faire : http://www.phpfrance.com/forums/voir_sujet-14406.php

Je l'ai fait cette fois çi mais merci d'y penser à l'avenir ;)[/color]
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

Eléphanteau du PHP | 38 Messages

26 juil. 2006, 15:44

ben c'est pas ce que tu es en train de faire? Ou sinon, j'ai pas bien compris...

Invité
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 15:52

sisi c'est ca, mais cette page est la page d'authentification, sur laquelle il y aura un menu, et j'aimerai que les pages qui suivent soit elle aussi protégé, pour ne pas que des pti malins ateigne la page en tapant l'adresse du lien directement.

sinon en ce qui concerne la modif il me met la meme erreur, il a pa l'air d'aprécié les

Code : Tout sélectionner

session_start(); session_register("login");
car lorsque je les enleve ca passe...

Eléphanteau du PHP | 38 Messages

26 juil. 2006, 16:01

Je viens de voire une autre erreur au passage :
$sql = "SELECT * FROM menbres WHERE login='login' and pass='$pass'"; 
tu as oublié un $ :
$sql = "SELECT * FROM menbres WHERE login='$login' and pass='$pass'"; 
essaye à la place de
session_register("login")
d'attaquer directement la variable globale de session :
$_SESSION['login']=$login
J'ai pas de fonction sous la main, mais voici une ébauche (c'est une solution, i'en a des meilleurs, mais elle, est assez simple à mettre en oeuvre) :
la fonction
function verif_ident() {
  // Si il n'y a pas de pseudo d'enregistré dans la session, pas la peine de se fatiguer
  if (!isset($_SESSION['login'])
    return false;
  // Sinon, on regarde dans la base de donnée
  $sql = "SELECT * FROM menbres WHERE login='".$_SESSION['login']."' and pass='$pass'";
  $res = mysql_query($sql);
  $exist = mysql_numrows($res);
  return ($exist==1)?(true):(false);
}
et le contenue de ta page :
session_start();

if (verif_ident()) {
  // ta page
}
else
{
  // ton message d'erreur
}

pol
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 16:23

mon probleme persiste j'ai effecté les differentes correction que tu m'a aporté.
ma l'eurreur est la meme que dans mon 1er POST.

Merci ++

Eléphanteau du PHP | 38 Messages

26 juil. 2006, 16:44

j'viens de trouver une erreur (oublie de quote) :
$login=$_POST['login'];
$pass=$_POST['pass'];

pol
Invité n'ayant pas de compte PHPfrance

26 juil. 2006, 17:14

merci pour ses erreurs mais le resultat de ne changent pas... le message est le meme que dans le 1er post...
je déséspère lol :cry:

Eléphanteau du PHP | 38 Messages

27 juil. 2006, 09:27

peux tu reposter le code que je l'essaye chez moi STP?

pol
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 10:41

salut !
je viens d'arriver au taf ! un peu a la bour ! lol

oui je te repasse le code

Du formulaire :

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <table width="300" cellspacing="1" border="1"><form method="post" action="identifier.php"> <tr><td bgcolor="darkblue"><center><font color="white">Formulaire d'identification</font></center></td></tr> <tr><td><center><input type="text" name="login"></center></td></tr> <tr><td><center><input type="password" name="pass"></center></td></tr> <tr><td><center><input type="submit" value="Identifier"></center></td></tr> </form></table> </body> </html>
et de la page d'authentification :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php 


$login=$_POST['login'];
$pass=$_POST['pass'];
// ON inclut le fichier de configuration 


// On se connect à notre serveur Sql 
$db = mysql_connect('xxxxxx','xxxx,'xxxx') or die ("erreur de connexion");
mysql_select_db('xxxxxx',$db) or die ("erreur de connexion base");

// On selectionne quand le champs login correspond au login entré 
// et le champs passe au pass entré. 
$sql = "SELECT * FROM menbres WHERE login='".$login."' and pass='".$pass."'"; 

// On execute la requête de selection 
$res = mysql_query($sql); 
//mysql_
// On compte le nombre de ligne des resultats 
// 1 : si valide 0 si aucun login ne correspond 
$exist = mysql_num_rows($res); 
//if ($res="")
//{
// Si la variable $exist = 0 --> login inexistant ou faux pass 
if(!$exist) 
{ 
    // On affiche ce message d'erreur 
 echo "<center>Veuillez vérifier vos données</center>"; 
   
    // On inclut le formulaire d'identification 
 include("formulaire.php"); 
} 
//$login = $_GET["login"];
// Sinon, si le login et pass sont valides 
else {
// On ouvre la session 
session_start(); 

// On enregistre la variable login qu'on fera passer sur ttes les pages 
session_register("login");

// On affiche un message de bienvenu 
echo "<center>Bienvenu sur votre espace membre : $login</center>"; 
     
// Notons que la session a un nom par defaut et un identifiant 
// Nom par défaut : PHPSESSID 
// Id Aleatoire généré lors de l'ouverture de la session 
     

$sess_nom = session_name(); 
$sess_id = session_id(); 
     
// Affichons si on veut le nom est l'id de la session 
echo "Le nom de la session est :<br> ";
echo $sess_nom." et l'Id est : ".$sess_id."";
     
// On affiche maintenant un lien vers une page d'essai 

echo "<a href=\"page.php?login=$login\">Page Essai</a>"; 
     
// A la fin on offre au membre la possibilité de se deconnecter 
echo "<a href=\"deconexion.php\">Deconnection</a>"; 
} 

?> 

</body>
</html>
voila tou y est !

Eléphanteau du PHP | 38 Messages

27 juil. 2006, 12:33

Il manque une quote à la ligne 18 :
$db = mysql_connect('xxxxxx','xxxx','xxxx') or die ("erreur de connexion");
Dans la requête, ce ne serait pas membres à la place de menbres?

Et chez moi elle marche! as tu d'autres pages qui tournent correctement sur ton serveur?

pol
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 12:43

oui d'autres pages qui tourne, j'ai remi les quotes mais ca ne fonctionne pas...