JeuWeb - Crée ton jeu par navigateur
Affichage et gestion des ressources - 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 : Affichage et gestion des ressources (/showthread.php?tid=4720)

Pages : 1 2


RE: Affichage et gestion des ressources - Sephi-Chan - 09-04-2010

(09-04-2010, 12:37 PM)Ksama a écrit :

<?php
$query = sprintf("SELECT bois FROM membres WHERE login = %d;", $_SESSION['login']);
$resource = mysql_query($query);
$bois = mysql_fetch_assoc($resource);

echo $bois['bois'];
?>

J'utilise "login" car je suis sûr qu'il le rentre à la connexion mais aussi qu'avec "ID" ça marche pas ^^

Voilà, en tout cas, merci pour votre aide.

Attention, lis aussi la documentation l'utilisation de sprintf. Quand tu interpoles une chaîne de caractère, il faut utiliser le marqueur %s.

Donc :


$query = sprintf("SELECT bois FROM membres WHERE login = '%s';", $_SESSION['login']);
$resource = mysql_query($query);
$result = mysql_fetch_assoc($resource);

Cependant, ça reste une mauvaise idée d'utiliser le login. Les nombres sont plus sûrs, plus fiables et plus performants. Quand tu connectes l'utilisateur, tu cherches l'utilisateur dont le nom et le mot de passe correspondent à ceux renseignés. Si tu en trouves un, c'est que le joueur s'est bien authentifié, tu récupères alors son identifiant.


(09-04-2010, 12:10 PM)Argorate a écrit : PS: je te conseil tant que tu es en dev de rajouter un petit
Code PHP :
<?php 
or die('Erreur SQL !'.$query.'<br>'.mysql_error());
Comme ça si t'as requête est mauvaise tu le vois, tu as l'erreur et la requête elle même qui s'affiche.

Cependant ne le laisse pas une fois en ligne, car ça donne des indication sur le nom de tes champs et de tes tables, donc pas terrible pour la sécurité...

C'est ce qu'il y a de pire à faire : il le regrettera le jour où il passera en production puisqu'il devra revenir sur chaque appel.

Quitte à développer à l'arrache, autant être le moins sale possible et de redéfinir une fonction pour effectuer les requêtes.

Par exemple :


define('DEBUG_SQL', true);

function query($query, $debug = false){
$resource = mysql_query($query);

if($debug && $resource == false){
exit('<p>' . mysql_error() . '</p>' . "<pre>{$query}</pre>");
}

return $resource;
}



$query = sprintf("SELECT bois FROM membres WHERE id = %d;", $_SESSION['id']);
$resource = query($query, DEBUG_SQL);
$result = mysql_fetch_assoc($resource);

Ainsi, tant que tu développes, tu laisse la constante à true, puis tu la passes à false le jour où tu publies ton site. Note que si tu ne donnes pas de deuxième argument à la fonction query, elle ne lancera pas de debug (pratique pour les requêtes triviales qui ne poseront jamais problème).


Sephi-Chan


RE: Affichage et gestion des ressources - Ksama - 09-04-2010

Merci à tous, j'ai réussi.
Pour l'instant, c'est basique, je lirai plus de choses à se sujet pour l'améliorer.
Encore merci.