Aller au contenu

actualiser session


covin85

Sujets conseillés

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 membre
if($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 passe
else {
$erreur = 'Compte non reconnu.';
echo $erreur;
/*on termine le script*/
exit;
}

}

}

?>

Merci

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

$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 ;-)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Ben rien ne t'empeche de faire :

<?php
update_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 ;-)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...