php/mysql


bonus-salade Membre 1 681 messages
Plutôt Fantôme à Tic‚ 31ans
Posté(e)

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 :o

Modifié par bonus-salade

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant

Messages recommandés

Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC‚
Posté(e)

DON'T TRUST FOREIGN DATA !

Partager ce message


Lien à poster
Partager sur d’autres sites
Caez Administrateur 14 024 messages
Clyde Barrow‚ 34ans
Posté(e)

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.

Partager ce message


Lien à poster
Partager sur d’autres sites
Patoch Membre 65 messages
Forumeur en herbe‚ 30ans
Posté(e)

Oui, je suis d'accord avec Caez... Il y a des lignes inutiles la dedans :s

Partager ce message


Lien à poster
Partager sur d’autres sites
Bashi VIP 5 233 messages
Just Breathe‚ 28ans
Posté(e)

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,

$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 ^^).

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

bashi

Partager ce message


Lien à poster
Partager sur d’autres sites
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC‚
Posté(e)

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.

Partager ce message


Lien à poster
Partager sur d’autres sites
Kazumi Membre 100 messages
Forumeur inspiré‚ 30ans
Posté(e)

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

Modifié par Kazumi

Partager ce message


Lien à poster
Partager sur d’autres sites
ph0b Fondateur 4 329 messages
Faut Bosser‚ 27ans
Posté(e)
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 :o

Partager ce message


Lien à poster
Partager sur d’autres sites
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC‚
Posté(e)

Kazumi ?!

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

/me sous le choc

tu veux m'épouser Kazumi ?

Partager ce message


Lien à poster
Partager sur d’autres sites
Kazumi Membre 100 messages
Forumeur inspiré‚ 30ans
Posté(e)

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 :o

*Fière d'être reconnue parmi ce monde d'hommes* :o

Partager ce message


Lien à poster
Partager sur d’autres sites
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC‚
Posté(e)

rah :o

dommage ... mais ou t'a appris à coder comme ca ?!

Partager ce message


Lien à poster
Partager sur d’autres sites
Kazumi Membre 100 messages
Forumeur inspiré‚ 30ans
Posté(e)

Toute seule :o

Puis avec l'aide de mon professeur perso :D

:o

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant