22-12-2010, 03:49 PM
(Modification du message : 22-12-2010, 03:51 PM par NicoMSEvent.)
(22-12-2010, 03:28 PM)Ter Rowan a écrit : je ne comprends pas à quoi sert l'appel en bdd lorsque la session existe :pour retrouver le nom du joueur, et ajouter éventuellement d'autres choses par la suite, comme le score par exemple
est pour capter des informations pour la suite ou pour des raisons de sécurité ?
(22-12-2010, 03:28 PM)Ter Rowan a écrit : parce que je ne vois pas de sécurité dans cette première partieTu as tapé juste, il suffit de choper l'identifiant de session pour faire croire que tu es cet utilisateur. Comme expliqué, je ne traite que très peu de sécurité, je donne les bases pour créer ce module
si je chope la session (par un hasard heureux d'un autre), j'envoie cet id (de session), le système tel que je le lis va me reconnaitre comme étant le joueur de la session "volée"
ou bien je suis à côté de la plaque
(22-12-2010, 03:36 PM)Myrina a écrit : Il y a quand même des choses qui ne vont pas! :nonon:je garde cette structure pour un parcours des différents enregistrement. Si $res est null (ou 0 ou false), il n'y a pas (plus) d'enregistrement. Si je donne cette structure, pour éviter de donner trop de fonctions d'un coup, et garder une sorte d'unité dans tous mes appels a la DB. Faut pas noyer les novices dès le début
En utilisant l'extension mysql, tu aurais pu écrire
au lieu de:
if (mysql_num_rows($req)>0) {
$res=mysql_fetch_assoc($req);
...
}
$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){
(22-12-2010, 03:36 PM)Myrina a écrit : de plus, le paramètre de mysql_fetch_assoc() est $req et non $db.corrigé ... faute d'inattention
(22-12-2010, 03:36 PM)Myrina a écrit : par ailleurs, ton id en table est un entier, pas une chaine de caractères:en effet, pour plus de simplicité, je traite tout comme des chaines de caractère (pas de traitement d'erreur pour encore une fois rester le plus simple possible)
devrait être
$sql=sprintf("SELECT id,nom FROM joueurs WHERE id='%s' ",$_SESSION['id_joueur']);
$sql=sprintf("SELECT id,nom FROM joueurs WHERE id=%i ",intval($_SESSION['id_joueur']));
(22-12-2010, 03:36 PM)Myrina a écrit : Maintenant, il reste un problème de logique de conception sans parler de la gestion d'erreurs.Pour la logique, je pense etre resté simple. je ne prévois pas tous les cas
Code :si joueur deja identifié en session
alors
- recherche des informations le concernant
- si les informations existe
- alors "bonjour joueur"
- sinon erreur!!
sinon
- si le formulaire est correctement rempli
---- vérification des informations de connexion (authentification)
---- si ok
-------- sauvegarde en session de l'identifiant du joueur
---- sinon
-------- erreur d'authentification
- sinon erreur de saisie du formulaire
Citation :si joueur deja identifié en session
alors
- recherche des informations le concernant
- si les informations existe
- alors "bonjour joueur"
- sinon erreur!! Quel intérêt puisque l'identifiant stocké en session est valide (testé lors du premier passage), et que j'estime qu'il ne sera pas supprimé entre la connexion et le test ici
sinon
- si le formulaire est correctement rempli
---- vérification des informations de connexion (authentification)
---- si ok
-------- sauvegarde en session de l'identifiant du joueur
---- sinon
-------- erreur d'authentification
- sinon erreur de saisie du formulaire
J'aime ton esprit critique, même si parfois je pense que tu cherches un peu loin
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