22-12-2010, 11:14 AM
(Modification du message : 22-12-2010, 03:58 PM par NicoMSEvent.)
Ce tutorial est la suite du Module d'inscription
Maintenant qu'on a un joueur inscrit, il faudrait faire en sorte qu'il puisse s'identifier
Lorsqu'il s'identifie, il entre son adresse e-mail (par exemple, ça aurait pu être son nom), et son mot de passe.
Il faut vérifier que ces deux données sont justes. Mais comment vérifier un mot de passe crypté, et donc indéchiffrable? Rien de plus simple! On va crypter le mot de passe entré par le joueur, et vérifier que les deux données cryptées sont identiques. Si elle ne le sont pas, alors le mot de passe donné maintenant ne correspond pas au mot de passe entré lors de l'inscription.
ça donne ceci en SQL
Pour le formulaire en HTML, c'est facile, vous pouvez adapter celui du tutorial précédent, ce qui donnerais ceci :
Et biensur le code PHP qui va récupérer tout ça
Qu'est-ce qu'une session? C'est une variable enregistrée sur le serveur, et qui va suivre le joueur tout au long de son parcours. Elle est en général liée à un COOKIE sur le navigateur. C'est a dire que si le joueur supprime ses cookies, il ne sera plus connecté.
L'avantage de garder l'identifiant sur le serveur, est qu'on ne peut pas le bidouiller, contrairement aux COOKIES.
Principe de sécurité de base, ne pas faire confiance a ce qui vient directement du joueur, c'est a dire ce qui vient des sources suivantes : $_GET, $_POST, $_COOKIE, $_REQUEST, ... (il y en a certainement d'autres, mais de tête les plus importantes sont celles là), il faut toujours vérifier que ce soit valide (injection de SQL, de HTML, de Javascript, bidouillage des URL, des COOKIES, ...)!!!
Par contre, les variables du coté serveur sont elles moins sujette à ce genre de bidouillages : $_SESSION, et toutes les autres variables déclarées dans vos scripts.
N'oubliez pas d'initialiser vos variables!!! Certaines configurations peuvent présenter de gros risques, et l'oubli de l'initialisation peut être fatal en cas de mauvaise configuration!
Pour se déconnecter, voilà le script PHP qui va le faire :
C'est tout? C'est aussi simple que ça?
Oui! Il suffit de "perdre" la donnée de session, et ça suffit
Pour sécuriser un peu plus votre application (session?), voilà un lien qui propose quelques pistes : sécurité sur Developpez.com
Maintenant qu'on a un joueur inscrit, il faudrait faire en sorte qu'il puisse s'identifier
Lorsqu'il s'identifie, il entre son adresse e-mail (par exemple, ça aurait pu être son nom), et son mot de passe.
Il faut vérifier que ces deux données sont justes. Mais comment vérifier un mot de passe crypté, et donc indéchiffrable? Rien de plus simple! On va crypter le mot de passe entré par le joueur, et vérifier que les deux données cryptées sont identiques. Si elle ne le sont pas, alors le mot de passe donné maintenant ne correspond pas au mot de passe entré lors de l'inscription.
ça donne ceci en SQL
SELECT id,nom FROM joueurs WHERE email='%s' AND motdepasse=PASSWORD('%s')
Pour le formulaire en HTML, c'est facile, vous pouvez adapter celui du tutorial précédent, ce qui donnerais ceci :
<form action="identification.php" method="post">
E-mail<input name="email" type="text" />
Mot de passe<input name="motdepasse" type="password" />
<input type="submit" />
</form>
Et biensur le code PHP qui va récupérer tout ça
<?php
session_start(); //on va utiliser une session dans notre script
if( isset($_SESSION['id_joueur']) ){
$sql=sprintf("SELECT id,nom FROM joueurs WHERE id='%s' ",$_SESSION['id_joueur']);
//on se connecte a la base de donnée (oui, il faut le refaire a chaque nouvelle page)
$db = mysql_connect ("mon_serveur_sql", "mon_login", "mon_mot_de_passe");
$req=mysql_query($sql,$db);
//maintenant, on va parcourir la liste des résultats
while( $res=mysql_fetch_assoc($req) ){
$cpt++;
}
echo "Joueur : ".$res['nom']." déjà connecté<br/>";
}
else{
$email=mysql_real_escape_string($_POST['email']);
$motdepasse=mysql_real_escape_string($_POST['motdepasse']);
$sql=sprintf("SELECT id,nom FROM joueurs WHERE email='%s' AND motdepasse=PASSWORD('%s')",$email,$motdepasse);
//on se connecte a la base de donnée (oui, il faut le refaire a chaque nouvelle page)
$db = mysql_connect ("mon_serveur_sql", "mon_login", "mon_mot_de_passe");
$req=mysql_query($sql,$db);
$cpt=0;
//maintenant, on va parcourir la liste des résultats
while( $res=mysql_fetch_assoc($db) ){
$cpt++;
}
//si il y a un résultat, l'utilisateur exsite et a le bon mot de passe
if($cpt>0){
echo "Bienvenue ".$res['nom']; //je récupère la valeur de la colonne "nom" indiqué dans le SELECT
$_SESSION['id_joueur']=$res['id']; //je garde en SESSION l'identifiant unique du joueur
}
else{
echo"adresse e-mail ou mot de passe erroné";
}
}
?>
Qu'est-ce qu'une session? C'est une variable enregistrée sur le serveur, et qui va suivre le joueur tout au long de son parcours. Elle est en général liée à un COOKIE sur le navigateur. C'est a dire que si le joueur supprime ses cookies, il ne sera plus connecté.
L'avantage de garder l'identifiant sur le serveur, est qu'on ne peut pas le bidouiller, contrairement aux COOKIES.
Principe de sécurité de base, ne pas faire confiance a ce qui vient directement du joueur, c'est a dire ce qui vient des sources suivantes : $_GET, $_POST, $_COOKIE, $_REQUEST, ... (il y en a certainement d'autres, mais de tête les plus importantes sont celles là), il faut toujours vérifier que ce soit valide (injection de SQL, de HTML, de Javascript, bidouillage des URL, des COOKIES, ...)!!!
Par contre, les variables du coté serveur sont elles moins sujette à ce genre de bidouillages : $_SESSION, et toutes les autres variables déclarées dans vos scripts.
N'oubliez pas d'initialiser vos variables!!! Certaines configurations peuvent présenter de gros risques, et l'oubli de l'initialisation peut être fatal en cas de mauvaise configuration!
Pour se déconnecter, voilà le script PHP qui va le faire :
<?php
session_destroy();
?>
C'est tout? C'est aussi simple que ça?
Oui! Il suffit de "perdre" la donnée de session, et ça suffit
Pour sécuriser un peu plus votre application (session?), voilà un lien qui propose quelques pistes : sécurité sur Developpez.com
Je signale que je ne détiens pas la vérité unique et absolue, je peux me tromper. La critique peut aussi être constructive. Critiquez moi!
La quête d'Ewilan
http://easy2hack.ma-soiree.be
La quête d'Ewilan
http://easy2hack.ma-soiree.be