probleme de login

Eléphanteau du PHP | 20 Messages

07 août 2005, 11:37

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

Mammouth du PHP | 19672 Messages

07 août 2005, 11:38

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)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 20 Messages

07 août 2005, 11:51

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());


Mammouth du PHP | 19672 Messages

07 août 2005, 11:59

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());
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

07 août 2005, 12:00

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.
Modifié en dernier par albat le 07 août 2005, 12:03, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

07 août 2005, 12:02

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:

Mammouth du PHP | 19672 Messages

07 août 2005, 12:04

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 20 Messages

07 août 2005, 12:33

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..

Mammouth du PHP | 19672 Messages

07 août 2005, 13:16

je pense que y a pas besoin de plus..
Je crois bien que si: quel est le nouveau message d'erreur ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

07 août 2005, 13:23

$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."'";

Eléphanteau du PHP | 20 Messages

07 août 2005, 13:34

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

07 août 2005, 14:38

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... ;)

Eléphanteau du PHP | 20 Messages

07 août 2005, 18:04

Merci de votre aide