Vous n'êtes pas identifié(e).
Pages :: 1
j'ai un problème avec ce script alors qu'apparemment il devrait fonctionner :
// On démarre la session
session_start();
$loginOK = false; // cf Astuce
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
extract($_POST); // je vous renvoie à la doc de cette fonction
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT login, pwd FROM user WHERE login = '".addslashes($login)."'";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($password == $data['mdp']) {
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK) {
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['age'] = $data['age'];
$_SESSION['sexe'] = $data['sexe'];
$_SESSION['ville'] = $data['ville'];
}
else {
echo 'Une erreur est survenue, veuillez réessayer !';
}
j'obtiens cette erreur :
Erreur SQL :
SELECT login, pwd FROM bd_principale WHERE login = 'dfgsdg'
j'ai un doute sur ma bd :s
je ne comprends également pas où se fait la connexion a ma bd
Je débute en php alors un peu d'indulgence ;p
Hors ligne
Saluton,
Déjà, par principe, ne rien mettre avant session_start(). Aucun commentaire, pas même un espace.
Effectivement, il semble manquer la partie de code traitant de la connexion au serveur MySQL.
A ce sujet, tourne-toi au plus tôt vers PDO pour tes accès aux bases de données et pour gérer les erreurs par capture d'exceptions.
Pour avoir le message d'erreur de MySQL
En outre, évite ce code de feignasse
et travaille un peu la sécurité eu égard aux injections SQL.
Bon courage.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
J'ai modifier mon code et le nouveau me donne ca. Je vais faire le test avec pdo oui je mettrai le resultat ensuite.
Qu'entend tu par :
En outre, évite ce code de feignasse
Code: php
extract($_POST); // je vous renvoie à la doc de cette fonction
<?php
session_start();
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('bd_principale',$db);
$loginOK = false; // cf Astuce
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
{
extract($_POST); // je vous renvoie à la doc de cette fonction
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT login, nom, prenom, ville, pwd FROM bd_principale WHERE login = '".addslashes($login)."'";
$req = mysql_query($sql) or die(mysql_error().'<br />'.$sql);
// On vérifie que l'utilisateur existe bien
if (mysql_num_rows($req) > 0)
{
$data = mysql_fetch_assoc($req);
// On vérifie que son mot de passe est correct
if ($password == $data['pwd'])
{
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK) {
$_SESSION['login'] = $data['login'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['ville'] = $data['ville'];
}
else {
echo 'Une erreur est survenue, veuillez réessayer !';
}
?>
Merci pour ton bout de code en tout cas ca ma bien aider !!!!
Hors ligne
Je vien de modifier mon cod en utilisant pdo:
<?php
session_start();
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=bd_principale', 'root', '', $pdo_options);
$loginOK = false; // cf Astuce
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
{
extract($_POST); // je vous renvoie à la doc de cette fonction
// On va chercher le mot de passe afférent à ce login
$sql = "SELECT login, nom, prenom, ville, pwd FROM bd_principale WHERE login = '".addslashes($login)."'";
$req = $bdd->query($sql) or die(mysql_error().'<br />'.$sql);
// On vérifie que l'utilisateur existe bien
if ($req->rowCount() > 0)
{
$data = $req->fetch();
// On vérifie que son mot de passe est correct
if ($password == $data['pwd'])
{
$loginOK = true;
}
}
}
// Si le login a été validé on met les données en sessions
if ($loginOK) {
$_SESSION['login'] = $data['login'];
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['ville'] = $data['ville'];
}
else {
echo 'Une erreur est survenue, veuillez réessayer !';
}
?>
Ca fonctionne egalement.
Comment securiser un peu plus ce code ?
Merci
Hors ligne
S'agissant d'extract() lis ce post, un exemple parmi d'autres.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pour PDO, il est dommage de ne pas en utiliser la gestion des exceptions.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
bonjour a tous
et merci d'avance
dans un formulaire php depuis le rajout de 8 champs le formulaire qui marcher affiche maintenent
le message suivant s'affiche Column count
doesn't match value count at row 1
code de ma page
liste des champs rajouter email2,clinterne,atelier1,atelier2,atelier3,atelier4,atelier5,atelier6,atelier7,atelier8,com_atelier
[ code de ma page
merci d'utiliser le wall .........................
copie img de ma base
[img align=c]/Users/macpro/Desktop/Capture des champ base sql.png[/img]
merci
je craques.....
Hors ligne
Une fois encore, le message d'erreur provenant de MySQL, il faudrait, à tout le moins, nous communiquer le texte de la requête soumise dans laquelle, d'après le message, le nombre d'arguments fournis ne correspond pas au nombre de colonnes de la table ou listées dans la requête.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
excuse moi je suis très très débutant
le seul message que j'ai est
Column count doesn't match value count at row 1
Hors ligne
Hé bien avec ça je ne peux pas t'en dire plus.
le message d'erreur provenant de MySQL, il faudrait, à tout le moins, nous communiquer le texte de la requête soumise dans laquelle, d'après le message, le nombre d'arguments fournis ne correspond pas au nombre de colonnes de la table ou listées dans la requête.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bonjour,
Je crains fort qu'à la base MK a raison de te renvoyer sur la doc de la fonction extract, car visiblement c'est toi qui l'a mal comprise. Mais au dela de ça je t'invite aussi à aller vérifier la doc de isset..
// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
{extract($_POST); // je vous renvoie à la doc de cette fonction
Ce code est une vrai passoire dans le sens où déjà au niveau du login et password, tu as autant de certitudes sur ces valeurs avant qu'après.
Commence par déjà faire un
En effet, si tu vérifies que $_POST est défini et que login et password contiennent quelque chose, tu ne vérifies pas s'ils sont définis avant tout traitement, ce qui est source d'erreur.
Ensuite si ton login existe bien mais que les quotes n'ont pas été échappés lors de l'insertion en bd, il se peut qu'il ne trouve pas l'enregistrement. Donc vérifie bien aussi cela.
De plus il est beaucoup mieux d'intégrer la vérification du password en même temps que le login au niveau de ta requête, car cela consolide ta requête face aux injections SQL, et évite les problèmes si tu ne t'es pas assuré par exemple que les logins soient uniques.
Ensuite je plussoie sur le dernier message de MK.
Dernière modification par Jc (01-02-2012 13:25:31)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Pages :: 1