Actualisation des données MYSQL

Actualisation des données MYSQL - PHP - Programmation

Marsh Posté le 12-04-2008 à 14:09:48    

Bonjour,  
 
Je suis confronté à un nouveau problème. J'utilise un espace membre sur mon site et je suis obligé de me deconnecter puis de me reconnecter si je veux voir apparaître les modifications que j'ai apporté dans la section profil de mon espace membre. J'ai beau actualisé la page, je suis obligé de me déconnecter/connecter.

 
Page connexion.php:
 
<div id="right">  
<div id="right_haut"></div>  
<div id="rightbk">  
<form action="http://trigancefoot.jexiste.fr/test/connexionok.php" target="_parent" method='post'>  
<table align="left" border="0">  
<tr>  
<td>Pseudo:</td>  
<td><input type="text" name="login" maxlength="250"></td>  
</tr>  
<tr>  
<td>Mot de passe:</td>  
<td><input type="password"name="pass" maxlength="10"></td>  
</tr>  
<tr>  
<td colspan="2" align="center"><input type="submit" value="Se connecter"></td>  
</tr>  
</table>  
</form>  
 
</div>  
 
 

Page connexionok.php

 
<?  
// CONNEXION BASE DE DONNE  
$db = mysql_connect('', '', '');  
mysql_select_db('trigancefoot',$db);  
 
// voir les exercices dans le menu de droite pour cela.  
 
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {  
extract($_POST);  
// on recupère le password de la table qui correspond au login du visiteur  
$sql = "select pwd,age,pseudo,credits from tbl_user where login='".$login."'";  
// la ligne suivante n'est pas utilisée  
// $age = "SELECT age FROM tbl_user WHERE login='$login' ";  
$credits = "SELECT age FROM tbl_user WHERE login='$login' ";  
$req = mysql_query( $sql ) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
 
$data = mysql_fetch_assoc($req);  
// à ce stade $data[ 'age' ] contient l'age correspondant au login dans la base  
// à ce stade $data[ 'credits' ] contient l'age correspondant au login dans la base  
if( $data['pwd'] != $pass )  
{  
include('http://trigancefoot.jexiste.fr/erreur_connexion_1.php'); // On inclut le formulaire d'identification  
exit;  
}  
else  
{  
session_start();  
$_SESSION['login'] = $login;  
$_SESSION[ 'age' ] = $data[ 'age' ];  
$_SESSION[ 'credits' ] = $data[ 'credits' ];  
 
header('Location: http://trigancefoot.jexiste.fr/test/index.php');  
//  
// vers la page d'accueil de votre espace membres  
}  
}  
else  
{  
include('http://trigancefoot.jexiste.fr/erreur_connexion_2.php'); // On inclut le formulaire d'identification  
exit;  
}  
?>  
 
Page index.php
 
<?  
session_start();  
if(!isset($_SESSION['login'])) {  
echo 'Merci de te connecter';  
include('http://trigancefoot.jexiste.fr/test/connexion.php');  
exit;  
}  
$mdr= $_SESSION['age'];  
?>  
 
<b><u>Compte:</b></u>  
<br><br>  
Bienvenue <b><? echo "$login"; ?></b>! Tu as <? echo "$age"; ?> ans!  
<br>Ton crédit est de: <? echo "$credits"; ?> euros.  
 
<br><br><u><b>Amélioration:</b></u>  
<br><br>  
<a href="/test/ajouter.php" alt="_parent">Ajouter de l'argent</a>  
<br><a href="/test/supprimer.php" alt="_parent">Supprimer de l'argent</a>  
<br><a href="/test/tribune.php" alt="_parent">Créer des tribunes</a>  
<br><a href="/test/liste_membres.php" alt="_parent">Liste des membres</a>  
<br><a href="/test/deconnexion.php" alt="_parent">Déconnexion</a>  
 
 
----------------------
 
Par exemple dans le cas ci-dessus, lorsque je modifie mon age dans ma base de donnée, j'ai beau réactualiser autant de fois que je veux, l'âge reste le même. Il faut que je me deconnecte/reconnecte pour voir le changement.

Reply

Marsh Posté le 12-04-2008 à 14:09:48   

Reply

Marsh Posté le 12-04-2008 à 16:53:03    

le probleme vient des sessions, quand tu te deconnecte elle sont detruites, donc la prochaines connexion tu vois la différence puisqu'elle sont recrées avec les nouvelles valeurs.
 
mais le vrai probleme vient de ta gestion de ton espace membre, tu n'a pas a mettre l'age dans la session (ni les autres infos d'ailleurs a part long/pass et ça dépend des façons de faire).
 
en gros ce qu'il faudrait c'est que tu mette login/pass dans les sessions.
dans ta page de profile tu affiche celui qui appartient a ce login/pass (sans mettre les info dans les sessions). et ça s'arrete là, donc ta page au lieu d'afficher l'age a partir de la variable de session, elle va l'afficher a partir de la base de données en se basant sur le login/pass (dans la session) pour le retrouver.
 
 
en gros, les données n'ont pas besoin d'être stockées dans les sessions a chaque connexion, dans les sessions tu mets juste ce qui te permet de controler que le user est bien connecter (de page en page) et pour ça t'as le login/pass :)

Reply

Marsh Posté le 12-04-2008 à 17:31:24    

Ah d'accord. Je m'en suis douté mais j'étais pas vraiment sur. Merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed