Page 1 sur 1

probleme de login

Posté : 07 août 2005, 11:37
par Nigdown
Bonjour
Voilà je fais un espace membre pour mes visiteur seulement voilà...
J ai des méssages d érreur lorsque j essaie de me loger...

Les voici

Code : Tout sélectionner

Notice: Undefined variable: pseudo in c:\documents and settings\nigdown\mes documents\gallantaria\site générale\teste\membre\identification.php on line 9 Notice: Undefined variable: password in c:\documents and settings\nigdown\mes documents\gallantaria\site générale\teste\membre\identification.php on line 9

Posté : 07 août 2005, 11:38
par Cyrano
Ok, et le code qui correspond à ça, on peut le voir aussi pour détecter où est l'erreur ? (les lignes mentionnées + les lignes qui précèdent)

Posté : 07 août 2005, 11:51
par Nigdown
Oui biensure.
<?
require("Config.php");

// Copnnection a la base de donnée.
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier config.php"; exit;}

//vérification 
$requete=mysql_db_query($sql_bdd,"select pseudo,password from membre where Pseudo=\"$pseudo\" and passe=\"$password\"",$db_link) or die(mysql_error());


Posté : 07 août 2005, 11:59
par Cyrano
Ok, je suppose que les variables $pseudo et $password sont sensées provenir d'un formulaire. Le problème c'est que tu ne les récupères nulle part. Il faudrait commencer par là et écrire du code propre aussi :
<?php
require("Config.php");
/* Récupération des données du formulaire d'identification: */
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : "";
$password = isset($_POST['password']) ? $_POST['password'] : "";

// Connection a la base de donnée.
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link)

{
    echo "Connexion impossible à la base de données <b>". $sql_bdd ."</b> sur le serveur <b>". $sql_server ."</b><br>".
    "Vérifiez les paramètres du fichier config.php"; 
    exit;
}

//vérification
$sql = "select pseudo,password from membre where Pseudo='". $pseudo ."' and passe='". $password ."'";
$requete=mysql_db_query($sql_bdd,$sql,$db_link) or die(mysql_error());

Posté : 07 août 2005, 12:00
par albat
Dans un premier temps, je te propose déjà quelques retouches...
require("config.php"); // noms de fichiers en bas-de-casse

// Connection a la base de données.
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);  // vire le @
if (!$db_link)
   { echo "Connexion impossible à la base de données <b>".$sql_bdd."</b> sur le serveur <b>".$sql_server."</b>.<br>"; // sors les variables des chaînes de caractères à afficher
     echo "Vérifiez les paramètres du fichier config.php";
     exit;
   }

//vérification 
$requete = "SELECT password FROM membre WHERE pseudo='".$pseudo."'";
$resultat = mysql_query(requete) or die(mysql_error()); // mysql_query() au lieu de mysql_db_query()
1. Quel est le nom du champ dans ta table MEMBRE : passe ou password ?

2. Pour éviter les failles liées à l'injection SQL, mieux vaut simplifier la requête comme proposée ci-dessus.
Tu testes ensuite si le password trouvé dans la base pour le pseudo saisi correspond bien au password saisi.

Posté : 07 août 2005, 12:02
par albat
Cyrano, pousse-toi. C'est moi qui réponds au monsieur... :evil:

Mais pourquoi il tape ses réponses toujours plus vite que moi ? C'est frustrant à la fin... :langue:

Posté : 07 août 2005, 12:04
par Cyrano
lol, comme tu vois, albat confirme quelques corrections que j'avais faites aussi : pas de "@" en préfixe d'une fonction, et une concaténation correctement faite entre chaînes de caractères et varibles PHP :D

Posté : 07 août 2005, 12:33
par Nigdown
Merci a présent c est plus a la ligne 9 mais 18.. surement avec l ajoute des autre ligne :P
$sql = "select Pseudo,Password from membre where Pseudo='". $Pseudo ."' and Password='". $Password ."'";
Voilà la ligne d érreur.

Voiçi ma table Mysql

Code : Tout sélectionner

CREATE TABLE membre ( id_membre int(10), idnew varchar(20), Pseudo varchar(20), Email varchar(50), Password varchar(32), Password_confirm varchar(32), jj varchar(10), mm varchar(10), aaaa varchar(10), ICQ varchar(50), AIM varchar(50), MSN varchar(50), YIM varchar(50), WEBSITE varchar(200), LOCATION varchar(200), INTERESTS varchar(150), SIGNATURE varchar(255), INSCRIT varchar(20) )
et si vous le voulez aussi mon formulaire de Login.
<table width="32%" border="0" align="center">
  <tr>
    <td align="center" valign="top"><form action="identification.php" method='post'>
      <table align="center" border="0">
        <tr>
          <td>Login :</td>
          <td><input type="text" name="Pseudo" maxlength="250">
          </td>
        </tr>
        <tr>
          <td>Password</td>
          <td><input type="Password"name="Password" maxlength="10">
          </td>
        </tr>
        <tr>
          <td colspan="2" align="center"><input name="submit" type="submit" value="Identification">
          </td>
        </tr>
      </table>
    Enregistrer vous

    </form></td>
  </tr>
</table>


je pense que y a pas besoin de plus..

Posté : 07 août 2005, 13:16
par Cyrano
je pense que y a pas besoin de plus..
Je crois bien que si: quel est le nouveau message d'erreur ?

Posté : 07 août 2005, 13:23
par albat
$sql = "select Pseudo, Password from membre where Pseudo='". $Pseudo ."' and Password='". $Password ."'";
1. Quelle est l'utilité d'inclure dans le SELECT un champ dont tu as déjà la valeur ?
2. Pour des raisons de sécurité, il est préférable de procéder en 2 temps pour valider le couple login/password.
Donc...
$sql = "SELECT Password FROM membre WHERE Pseudo='". $Pseudo."'";

Posté : 07 août 2005, 13:34
par Nigdown
Voiçi a présent mon code.
Seulement il dois manqué une partie pour verifier le login et mot de pass a présent...
<?php
require("Config.php");
/* Récupération des données du formulaire d'identification: */
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : "";
$password = isset($_POST['password']) ? $_POST['password'] : "";

// Connection a la base de donnée.
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link)

{
    echo "Connexion impossible à la base de données <b>". $sql_bdd ."</b> sur le serveur <b>". $sql_server ."</b><br>".
    "Vérifiez les paramètres du fichier config.php";
    exit;
}

//vérification
$sql = "SELECT Password FROM membre WHERE Pseudo='". $Pseudo."'";
$requete=mysql_db_query($sql_bdd,$sql,$db_link) or die(mysql_error());
Pour l érreur:

Code : Tout sélectionner

Notice: Undefined variable: Pseudo in c:\documents and settings\nigdown\mes documents\gallantaria\site générale\teste\membre\identification.php on line 18
Tjs la même :s

Posté : 07 août 2005, 14:38
par albat
Tu risques d'avoir des erreurs causées par le fait que utilises des lettres capitales
dans les noms de tes champs et de tes variables (Pseudo au lieu de pseudo).

Passe tout en bas de casse (minuscules), tu supprimeras ces risques d'erreurs... ;)

Posté : 07 août 2005, 18:04
par Nigdown
Merci de votre aide