Version complète : php/mysql
Forum Fr > Informatique > Dev, DAO et CAO > Dev. Divers
bonus-salade
salut a tous, voila jvoulais savoir si ya quelqu'un qui pourrait m'aider, je cherche a gérer des utilisateurs avec php/mysql, donc je me demande comment ça se passe. Quels sont les fonctions a utiliser, pour l'instant je compare les champs pseudo et mdp comme ça : $login=mysql_query("SELECT * FROM inscrits WHERE pseudo='$_POST["pseudo"]");
$passwd=mysql_query("SELECT * FROM inscrits WHERE mdp='$_POST["mdp"]");
viens la comparaison
if($pass["mdp"]==$_POST["mdp"] && ($log["pseudo"]==$_POST["mdp"]);
(chui pas trés sur de cette ligne :S)
et aprés chui un peu perdu, je sais pas encore gérer les sessions donc comment je fais? Et une fois logé si je veut donner des droits a cet utilisateur, le renvoyer sur la page d'accueil avec son ptit nom afficher en haut de la page, bref des trucs classiques.

si quelqu'un peut m'aider sa serait simpatoche. En attendant je vais encore chercher.
Merci a vous wink1.gif
Méthylbro
DON'T TRUST FOREIGN DATA !
bonus-salade
dé qué???
Caez
Déjà pourquoi tu fais pas une seule requête, du style
select pseudo,mdp from inscrit where pseudo='$_POST["pseudo"];

ensuite tu regarde si le mdp est identique ^^

Ca ne sert a rien de faire un select * si tu n'as besoin de récupérer que 2 champs.
Patoch
Oui, je suis d'accord avec Caez... Il y a des lignes inutiles la dedans :s
Bashi
Euh ...
Tes deux requetes a a moitié aucun sens,
Je m'explique :

- Tu demande de voir si le pseudo est present dans la table OK
- Tu demande a voir si le mot de passe est present dans la base OK MAIS Ca veut dire que si t'as deux utilisateurs "bonus" et "salade" avec des mots de passe "1234" et "5678" respectifs, bonus pourra utiliser le mot de passe de salade et inversement quoi

Ensuite,
CODE
$login=mysql_query("SELECT * FROM inscrits WHERE pseudo='$_POST["pseudo"]");

Evites d'utiliser des $_POST dans une requete, ca a des chances de foirer (je sais pas pourquoi mais ca a des chances ^^).

CODE
$pseudo = $_POST["pseudo"];
$mdp = $_POST["mdp"];
$auth = mysql_query("SELECT pseudo,mdp FROM inscrits WHERE pseudo='$pseudo' AND mdp='$mdp'");


bashi
Méthylbro
oui oui ... utilise ce code ; et moi je vous fait de belles injections sql avec ca.

je me répéte ; DON'T TRUST FOREIGN DATA !

C'est la régle.
Kazumi
/* simple quote, double-quote == évil car analyse de la chaine pour remplacement des variables, test de l'existence de la variable en cas de requête forgée par un p'tit malin */
if(isset($_POST['pseudo']) && $_POST['pseudo'] != '' && isset($_POST['mdp']) && $_POST['mdp'] != '') {
// traitement de l'erreur
}

// faire ta connexion à MYSQL ici, traiter les erreurs de connexion
$pseudo = str_replace('"', '\"', $_POST['pseudo']); // parade à l'SQL Injection, comme le disait Méthylbro
$login = mysql_query('SELECT mdp FROM inscrits WHERE pseudo="'.$pseudo.'";'); // concaténation manuelle
// traitement de la requête ici

Le mot de passe devrait être en plus hashé (pas de stockage en clair dans la base de données). Eviter le md5 qui est trop utilisé et dont des dictionnaires se trouvent facilement. Utiliser une comparaison et un mode de stockage "entier" et pas "chaîne" sur le hash obtenu pour plus de performance.

Je vérifierais le mot de passe en dehors de la requête, contrairement à Bashi, de façon à pouvoir personnaliser le message d'erreur (on peut savoir au row count si c'est le nom d'utilisateur qui est invalide ou à la comparaison si c'est le mot de passe). C'est peut-être pas forcément intéressant, voire risqué de personnaliser le message, mais en tout cas, on peut repérer plus facilement si quelqu'un tente de bruteforcer le système.

Pour les sessions, c'est pas très secure d'utiliser les sessions PHP. Les même problèmes s'appliquent qu'à la sécu des cookies. Le passer en GET, c'est pareil, c'est pas très bon. Cookies + HTTPS serait sans doute le plus fiable. Sans ça, faire son propre système de transaction de sessionid avec des clés changeantes... faudrait voir...
Phobos
CITATION
Le mot de passe devrait être en plus hashé (pas de stockage en clair dans la base de données). Eviter le md5 qui est trop utilisé et dont des dictionnaires se trouvent facilement. Utiliser une comparaison et un mode de stockage "entier" et pas "chaîne" sur le hash obtenu pour plus de performance.

le md5 avec un peu de salt n'a pas de dico wink1.gif
Méthylbro
Kazumi ?!

Une femme qui code ....!!!!!! et en php

/me sous le choc

tu veux m'épouser Kazumi ?
Kazumi
Bah je peux pas... Je suis liée par les liens capillaires avec Monsieur Kazumi :/

Faut pas être triste, t'en retrouveras une petite femme smile.gif

*Fière d'être reconnue parmi ce monde d'hommes* biggrin.gif
Méthylbro
rah sad.gif

dommage ... mais ou t'a appris à coder comme ca ?!
Kazumi
Toute seule punk.gif

Puis avec l'aide de mon professeur perso tongue.gif

drinks.gif
Invision Power Board © 2001-2008 Invision Power Services, Inc.