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...
Mais pourquoi il tape ses réponses toujours plus vite que moi ? C'est frustrant à la fin... 
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

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