JeuWeb - Crée ton jeu par navigateur
[aide]espace membre - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [aide]espace membre (/showthread.php?tid=1337)



[aide]espace membre - TRasHED - 24-06-2007

Salut, je voudrais vous poser une question sur le code ci joint:

Code PHP :
<?php
session_start
();[/color]
if ((empty(
$_POST['login'])) AND (empty($_POST['passe']))) /* on controle que les champs ne sont pas vide ou nul et si c'est le cas on affiche un message d'erreur */
{ echo 'L'un des champ de connexion n'est pas remplie, merci de refaire un essai: <a href="vers_formulaire">ICI</a>'; }
else {
/* les champs du formulaire de connexion ne sont pas vide on peut affecter les valeurs du post au
variable pour les comparer à la table des utilisateur */
$login=mysql_real_escape_string($_POST['login']); /* ici on fait la protection des variable pour éviter les injection mysql on peut éventuellement rajouter un stripslashes() aux Post avant */
$passe=mysql_real_escape_string($_POST['passe']);
$reponse = mysql_query("SELECT login, passe FROM membre WHERE login=$login AND passe=$passe") or die(mysql_error()); /* on selectionne le champ login et passe du membre pour controle */
$donnees = mysql_fetch_array($reponse);
if (
$donnees['login']!="" AND $donnees['passe']!="") /* on vérifie le retour mysql sur login et passe */
{
$_SESSION['login_session']=$donnees['login']; /* l'utilisateur est reconnu on peut mettre son login en variable de session mais pas le mot de passe */
}
else
{ echo
'erreur de connexion'; } } /* l'utilisateur n'est pas reconnu on lui affiche un message d'erreur ou plus */
?>

Ceci correspond donc à la verification des donnees envoyees par les visiteur afin qu'il puisse se connecter a sa session.
Mais à cette ligne ci:'if ($donnees['login']!="" AND $donnees['passe']!="") '
je me demandais si on ne devrait pas plutôt faire ceci:if ($donnees['login']!="$_POST['login']" AND $donnees['passe']!="$_POST['passe']")
afin de faire la comparaison avec les donnees entrees par le visiteur parce que ne rien mettre ca me laisse perplexe.

merci de votre aide.


RE: [aide]espace membre - Imhotep2 - 24-06-2007

Bonjour,

mais pourquoi parcourir toute la table , et ne pas faire simplement :

Code :
$reponse = mysql_query("SELECT  passe FROM membre WHERE login=$login ) or die(mysql_error()); /
$passe2=mysql_result($reponse,"passe")

if ($passe2==$passe)
{
$_SESSION['login_session']='$login'; /* l'utilisateur est reconnu on peut mettre son login en variable de session mais pas le mot de passe */
}
else
{ echo 'erreur de connexion'; }  /* l'utilisateur n'est pas reconnu on lui affiche un message d'erreur ou plus */
?>

Ca n'est pas mieux ?


RE: [aide]espace membre - TRasHED - 24-06-2007

sans couleur, c'est pa stres lisible, mais tu me conseillerais desimplement aller chercher le passe qui correspond au pseudo et le comparer au passe entré?


RE: [aide]espace membre - Imhotep2 - 24-06-2007

Oui, c'est vrai sans couleur c'est pas génial.
Sinon, pour ce qui est de l'opération, oui c'est ce que je fais. Je ne sais pas si c'est le mieux et le plus rapide (un programmeur plus expérimenté te donnera sans doute autre chose) mais en tout cas ça marche. Ca me semble être le plus intuitif en tout cas.


RE: [aide]espace membre - Amrac - 24-06-2007

Sa solution me parait correct, sinon tu peut simplement ton:
Code PHP :
<?php 
if ($donnees['login']!="" AND $donnees['passe']!="")

par un:
Code PHP :
<?php 
if ( !empty($donnees['login']) AND !empty($donnees['passe']) )



RE: [aide]espace membre - TRasHED - 24-06-2007

ok bon je vais retenir l'idée de imhotep, merci a tous