covin85 Posté 19 Juin 2006 Posté 19 Juin 2006 Bonjour,sur mon site ,après inscription du joeur(inscription puis page de connexion),le joueur debute avec "0"pieces. Sur la page "membre",j'ai crée un lien pour update de la table piece afin de rajouter a tt les membre "100 piece", Mais pour que le joueur voit ses 100 pieces afficher en plusse sur son compte,il doit se reconnecter.(alor que dans phpmyadmin on peut bien voir que les pieces sont ajouter directe. J'ai donc compris que dans la page de connexion,il y avai un code que je doit inserrer dans ma page membre mais j'ai tester plusieurs fois,et cela ne donne rien. Voila donc le code de connexion : <?php/*on initialise la variables $connexion issue de $_POST et on teste si le visiteur a soumis le formulaire de connexion*/if (isset($_POST['connexion']) && ($_POST['connexion'] == "Connexion")) {/*on initialise les variables issues de $_POST*/if ((isset($_POST['login'])) && $_POST['login'] !="") $login = addslashes($_POST['login']); else $login = "";/*on initialise et on vérifie que la variable n'est pas vide puis on crypte md5+addslashes immédiatement la variable pass issue de $_POST*/if ((isset($_POST['pass'])) && $_POST['pass'] !="") $pass = md5(addslashes($_POST['pass'])); else $pass = "";/*on démarre la session*/session_start();/*on vérifie que les variables ne sont pas vides*/if (($login == "") || ($pass == "")) {$erreur = 'Au moins un des champs est vide.';echo $erreur;/*on termine le script*/exit;}/*sinon on continue*/else {$base = mysql_connect ('mysql.webzzanine.net', '***', '****'); mysql_select_db ('*******', $base);// on teste si une entrée de la base contient ce couple login / [pass crypté md5]$sql = 'SELECT * FROM membre WHERE login="'.$login.'" AND pass_md5="'.$pass.'"';$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());$data = mysql_fetch_array($req);/*on récupère les données*/$login_valid = $data['login'];$pass_valid = $data['pass_md5'];$email = $data['email'];$skin = $data['skin'];$piece = $data['piece'];mysql_free_result($req);mysql_close();// si les variables correspondent, alors l'utilisateur est un membreif($login == $login_valid && $pass == $pass_valid) {/*on enregistre ses données en session*/$_SESSION['login'] = $login_valid;$_SESSION['email'] = $email;$_SESSION['skin'] = $skin;$_SESSION['piece'] = $piece+000;header('Location: membre.php');/*on termine le script*/exit();}// si les variables ne correspondent pas, le visiteur s'est trompé soit dans son login, soit dans son mot de passeelse {$erreur = 'Compte non reconnu.';echo $erreur;/*on termine le script*/exit;}}}?> Merci
Jeromnimo Posté 19 Juin 2006 Posté 19 Juin 2006 Bonjour covin85, d'après ton script, la variable pièce est récupérée seulement à la connexion du joueur, puisque tu vas lire ces données dans la table contenant également le mot de passe et le login... Donc à priopri, si tu ne vas pas relire ces données à un autre moment dans la BDD, la viariable $pieces reste à la valeur lue au moment de la connexion, d'où ton problème je pense. Il faut au minimum que tu actualises cette valeur régulièrement, par exemple à chaque fois que tu désires l'afficher ou t'en servir...
covin85 Posté 19 Juin 2006 Auteur Posté 19 Juin 2006 merci mais peut tu me dire exactement se que je dois prendre en citant,car je n'arrive pas a bien delimiter
Jeromnimo Posté 19 Juin 2006 Posté 19 Juin 2006 $sql = 'SELECT * FROM membre WHERE login="'.$login.'" AND pass_md5="'.$pass.'"';$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); A cet endroit tu récupères la totalité des informations de la personne connectée, y compris son nombre de pièces. Je te conseille de faire une petit fonction qui te permet de mettre à jour les données concernant les infos de jeu d'une personne du genre : function update_member_datas($login){// ajoute les différents champs de la table que tu veux obtenir au fur et à mesure que tu développeras ton application$sql = 'SELECT piece FROM membre WHERE login="'.$login.'";$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());$data = mysql_fetch_array($req);return $data;} comme ca dans ton code il te suffit de faire : // en supposant que t'es connecté et que tu connais le login du joueur$user_datas = update_member_datas($login)// a partie d'ici tu as accès à $user_datas['piece'] qui est à jour;-) Bien sûr les codes que je t'ai donné sont les grandes lignes, en particulier niveau sécurité, c'est à toi de faire ce qu'il faut ;-)
covin85 Posté 19 Juin 2006 Auteur Posté 19 Juin 2006 les pieces du joeur sont affichée avec : <?php echo $_SESSION['piece']; ?> je ne veut pas passer par des "function" J'ai donc essayer ceci : <?php $base = mysql_connect ('mysql.webzzanine.net', '****', '*****'); mysql_select_db ('*****', $base);$sql = 'SELECT piece FROM membre WHERE login="'.$login.'"';$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());echo $req; ?> Qui affiche : "Resource id #3" je ne c'est pas d'ou sa vient
Jeromnimo Posté 19 Juin 2006 Posté 19 Juin 2006 Ben rien ne t'empeche de faire : <?phpupdate_members_infos();?> au debut de chaque page, et tu changes la fonction pour qu'elle t'enregistre les resultats dans ta session. "Resource id #3" je ne c'est pas d'ou sa vient Tu n'as pas fait de mysql_fetch_xxx, donc le echo te renvoie simplement l'id du resultat de ta requete ;-)
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant