Accueil > Forum > > > > Problème de rafraichissement dune page !!!! [^^sad1]
Problème de rafraichissement dune page !!!! [^^sad1]
vendredi 12 mars 2010 à 18:51:15 |
Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM
|
Bonjour à tous ,
Je m'explique ... j'ai 2 soucis dont je n'arrive pas à résoudre !
1. A chaque saisie d'un nombre, la modification à partir de la base de donnée s'effectue mais n'est pas mis à jours sur ma page Vcompte.php (ref: <?php echo $_SESSION['credit']; ?> ).
2. J'aimerai codé le numéro a découvrir mais je ne trouve pas de solutions a ce problème. j'ai essayé en indiquant value:'. (addslashes(md5($rand))) .' c'est codé mais ça ne fonctionne pas .
Je vous mets le code de la page membre avec le jeu ... et j'ai pris le soin de mettre quelques annotations ... Merci d'avance !
Code PHP :
<?php
require_once('auth/connexion.php');
if (!isset($_SESSION['authentification'])){
}
else {
header("Location:index.php?erreur=intru");
}
session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="body">
<div class="body_resize">
<div class="News">
<h2>Accueil</h2>
<div class="bg"></div>
// AFFICHAGE LOGIN ET CREDIT : C'EST ICI QUE LA DONNEE CREDIT NE S'ACTUALISE PAS LORS DE L'ENVOI D'UN NOMBRE
<p><em>Votre login :</em> <?php echo $_SESSION['login']; ?></p>
<p><em>Crédits réstant :</em><?php echo $_SESSION['credit']; ?></p>
<p><a href="deconnexion.php"><em><strong>Déconnexion</strong></em></a></p>
<br>
<center>Le jeu commence dans : </center>
<center><script type="text/javascript" src="js/cpt.js"></script>
<div id="countbox"></div></center>
<p><center>Entrer votre numéro :</center></p>
<center>
// LE JEU COMMENCE ICI
<?php
mysql_select_db("kdxprotec");
$query = "SELECT winnerkadx FROM objetskdoox WHERE refobjet=1210110";
$result = mysql_query($query);
// Recuperation des resultats
while($row = mysql_fetch_row($result))
{
$winnerkadx = $row[0];
}
if(empty($winnerkadx)){
//debut du jeu
mysql_select_db("kdxprotec");
// Creation et envoi de la requete
$query = "SELECT numobjetwin FROM objetskdoox WHERE refobjet=1210110";
$result = mysql_query($query);
// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$numobjetwin = $row[0];
}
if (!isset($_POST['reponse']) AND !isset($_POST['counter']))
{
$rand = $numobjetwin; // numéro à découvrir inclu dans la base de donnée non cripté ici
$cnt = $_SESSION['credit']; // Nombre de crédit restant
$id_user = $_SESSION['id_user']; // Identification membre
echo 'Tentez votre chance !!! <br/>';
}
else if (isset($_POST['reponse']) AND empty($_POST['reponse']))
{
$rand = $_POST['random'];
$id_user = $_SESSION['id_user'];
$cnt = $_POST['counter'];
echo 'N\'ouliez pas de mettre une reponse!!!<br/>';
}
else
{
$rand = $_POST['random'];
$cnt = $_POST['counter'];
$number = $_POST['reponse'];
$id_user = $_SESSION['id_user'];
if (preg_match('![0-9]!', $number))
{
$cnt--;
if ($number < $rand)
echo 'le numéro mystère est supérieur! <br/>';
else if ($number > $rand)
echo 'le numéro mystère est inférieur! <br/>';
else if ($number == $rand)
{
echo 'GagnÉ!!!<br/>';
mysql_select_db ('$database_dbprotect');
$sql = mysql_query("SELECT winnerkadx FROM objetskdoox WHERE numobjetwin='$numobjetwin'");
$result = mysql_fetch_array($sql);
$winnerkadx = $_SESSION['login'] ;
$sql = mysql_query("UPDATE objetskdoox SET winnerkadx='$winnerkadx' WHERE numobjetwin='$numobjetwin'") or die ('Erreur : '.mysql_error());
echo 'Le Gagnant est '. $winnerkadx . '' ;
echo '<script language="Javascript"> document.location.replace("redircpt.php")</script>';
}
}
else
{
echo 'Votre réponse ne doit contenir que des chiffres !!!<br/>';
}
}
if ($cnt > 0)
{
echo
'Vous avez encore ' . $cnt . ' coups à jouer
<form action="Vcompte.php" method="post" name="lol">
<input type="text" name="reponse" />
<input type="hidden" name="counter" value="'. $cnt .'" />
<input type="hidden" name="random" value="'. $rand .'" />
<input type="submit" value="envoi" />
</form>';
mysql_select_db ('$database_dbprotect');
$sql = mysql_query("SELECT credit FROM utilisateurs WHERE id_user=$id_user");
$result = mysql_fetch_array($sql);
// Calcul des points
$pointfin = $cnt-1;
// Operation
$sql = mysql_query("UPDATE utilisateurs SET credit=$pointfin WHERE id_user=$id_user") or die ('Erreur : '.mysql_error());
echo '<script language="javascript">document.lol.reponse.focus();</script>';
}
else
{
echo '<script language="Javascript"> document.location.replace("achatcredits.php")</script>';
}
// fin du jeu
}else{
echo '<center>Le Gagnant est '. $winnerkadx . '</center><br>' ;
echo '<center>Partie terminée</center>';
}
?></center>
</div>
</div>
</div>
</body>
</html>
|
|
vendredi 12 mars 2010 à 20:51:16 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark
|
Salut,
J'ai lu sans doute trop vite mais j'ai une question (con) :
Où est définie $_SESSION['credit'] ??
Cordialement,
Kohntark -
|
|
vendredi 12 mars 2010 à 21:33:02 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM
|
Bonjour Kohntark ,
Je suis assez content que tu ais pris la peine de regarder mon code , je suis assez de prêt tes publications sur phpcs ...
$_SESSION['credit'] apparait dans ma page d'inscription membre ... cette donnée s'affiche correctement avec pour seule condition qu'elle n'évolue pas au travers des changements de ma base de donnée .
Ex: il note $_SESSION['credit'] à 132 crédits alors que dans ma base de donnée le décompte se fait correctement ... quand je change de page , le compteur revient à 132 . Il n'y a qu'en se déconnectant et en me reconnectant sur le compte membre que je m'aperçois que $_SESSION['credit'] = à "credit" de la base de donnée .
donc je ne vois pas trop ou ca cloche !!!
S'il te faut plus de précisions n'hésites pas !
Cordialement , FXPhantom 
|
|
samedi 13 mars 2010 à 10:13:33 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark
|
Re,
Je crains ne pas tout comprendre.
Arrête moi si je me trompe :
Tu as un jeu où chaque joueur à un crédit qu'il peut créditer dans sa page inscription et que tu renseignes à la connexion de ce dernier dans $_SESSION['credit']
Lorsque le joueur joue, son crédit décroit de 1.
En fait je me limite à ça et cherche donc dans ton code un truc du genre $_SESSION['credit'] = $_SESSION['credit'] - 1;
Hors il n'y a aucune modification de cette variable de session, contrairement à la DB où tu fais :
$sql = mysql_query("UPDATE utilisateurs SET credit=$pointfin ...
Il est donc normal que $_SESSION['credit'] n'évolue pas et qu'elle "recolle" avec la DB lorsque le membre se reconnecte.
J'ai sans doute loupé quelque chose mais s'il faut que le crédit du membre décroisse en fonction de son nombre de tentative il faut un truc du genre :
Code PHP :
// Calcul des points
$pointfin = $cnt-1;
$_SESSION['credit'] = $pointfin;
// Operation
//...
Commence peut être par là, mais il y aura encore pas mal de choses à modifier afin de rendre ton code plus clair (mysql_select_db() superflues, document.location.replace, die, doublons var session / requêtes, etc ...)
Cordialement,
Kohntark -
|
|
samedi 13 mars 2010 à 10:46:40 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM
|
Non en fait j'aurai du te préciser ... c'est de ma faute ... Lors de la validation de chaque inscription , on incrémente automatiquement quelques crédits aux membres d'où $_SESSION['credit'] dans la page d'inscription .
Pour revenir au code de mon jeu , j'ai nommé "$cnt = $_SESSION['credit'];" dans la partie (debut du code du jeu):
Code PHP :
if (!isset($_POST['reponse']) AND !isset($_POST['counter']))
{
$rand = $numobjetwin; // numéro à découvrir inclue dans la base de donnée non cripté ici
$cnt = $_SESSION['credit']; // Nombre de crédit restant
$id_user = $_SESSION['id_user']; // Identification membre
echo 'Tentez votre chance !!! <br/>';
donc dans la logique , il devrai le décompter de ma page car il le fait très bien dans la base de donnée !!!  Franchement , là je bloque !!!
|
|
samedi 13 mars 2010 à 14:41:00 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark
|
Réponse acceptée !
Arf, je bloque moi aussi  , j'ai du mal à te suivre.
Je pense que tu te prends la tête pour pas grand chose.
Il faut toujours s'inscrire dans une logique de simplification et donc de compréhension du code.
Là tu as pas mal de lignes en doublon, des affectations de variables qui ne servent à rien, des requêtes inutiles et inutilisées, des noms de variables qui ne représentent pas la même chose selon le contexte, ...
Côté sécurité c'est un véritable gouffre : file l'adresse du jeu, je gagne à tous les coups et je crédite mon compte sans passer par l'achat de crédit
Il doit également être possible de nuire gravement à ta DB.
Il faut toujours limiter et contrôler au maximum les données externes (celles provenant d'un formulaire, d'une url, ...)
J'ai regardé d'un peu plus près ton code et réécris quelques trucs rapidement (ça ne m'étonnerais pas qu'il y ait des bugs)
C'est loin d'être parfait, mais ça me semble un peu plus logique que le code original (tout du moins si j'ai correctement compris ton problème)
Code PHP : <?php
require_once('auth/connexion.php');
session_start();
if (!isset($_SESSION['authentification'])) header("Location: index.php?erreur=intru");
mysql_select_db("kdxprotec"); // à mettre de préférence dans un fichier séparé, sauf à avoir à travailler avec de nombreuses bases
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="body">
<div class="body_resize">
<div class="News">
<h2>Accueil</h2>
<div class="bg"></div>
// AFFICHAGE LOGIN ET CREDIT : C'EST ICI QUE LA DONNEE CREDIT NE S'ACTUALISE PAS LORS DE L'ENVOI D'UN NOMBRE
<p><em>Votre login :</em> <?php echo $_SESSION['login']; ?></p>
<!-- Cela implique que tu aies mis à jour $_SESSION['credit'] à la connexion du membre à partir de la DB -->
<p><em>Crédits réstant :</em><?php echo $_SESSION['credit']; ?></p>
<p><a href="deconnexion.php"><em><strong>Déconnexion</strong></em></a></p>
<br />
<center>Le jeu commence dans : </center>
<center><script type="text/javascript" src="js/cpt.js"></script>
<div id="countbox"></div></center>
<p><center>Entrer votre numéro :</center></p>
<center>
// LE JEU COMMENCE ICI
<?php
$query = "SELECT winnerkadx, numobjetwin FROM objetskdoox WHERE refobjet=1210110";
$result = mysql_query($query);
// Recuperation des resultats
$winnerkadx = mysql_result($result, 0); // gagnant du jeu
$numobjetwin = mysql_result($result, 1); // numéro à découvrir
if (empty($winnerkadx)) { // pas encore de gagnant
//debut du jeu
if (!isset($_POST['reponse']) AND !isset($_POST['counter'])) { // arrivée sur la page
echo 'Tentez votre chance !!! <br/>';
} else if (isset($_POST['reponse']) AND empty($_POST['reponse'])) { // formulaire posté sans avoir rempli le champ reponse
echo 'N\'ouliez pas de mettre une reponse!!!<br/>';
} else {
if (preg_match('![0-9]!', $_POST['reponse'])) { // le coup est joué
// le coup est joué, on supprime 1 crédit
// dans la base de données
$sql = mysql_query("UPDATE utilisateurs SET credit=credit -1 WHERE id_user=".$_SESSION['id_user']) or die ('Erreur : '.mysql_error());
// puis dans la session puisque ce sont ces variables qui gèrent heu ... la session
$_SESSION['credit']--;
/* teste si l'utilisateur a gagné et donne des informations */
if ($_POST['reponse'] < $numobjetwin) {
echo 'le numéro mystère est supérieur! <br/>';
} elseif ($_POST['reponse'] > $numobjetwin) {
echo 'le numéro mystère est inférieur! <br/>';
} elseif ($_POST['reponse'] == $numobjetwin) { // gagné !!!
echo 'GagnÉ!!!<br/>';
// mise à jour de la DB pour renseigné le gagnant de ce jeu
$sql = mysql_query("UPDATE objetskdoox SET winnerkadx='".$_SESSION['login']."' WHERE numobjetwin='$numobjetwin'") or die ('Erreur : '.mysql_error());
// tout ce que tu affiches avant (gagné, le gagnant est, ...) n'a pas d'intérêt si tu fais un location.replace à cet endroit
echo 'Le Gagnant est '. $_SESSION['login'].'
<script language="Javascript"> document.location.replace("redircpt.php")</script>';
}
} else {
echo 'Votre réponse ne doit contenir que des chiffres !!!<br/>';
}
}
if ($_SESSION['credit'] > 0) { // l'utilisateur a encore des crédits sur son compte
// la seule info dont on a besoin est le chiffre donné par l'utilisateur, tout le reste est côté serveur
echo 'Vous avez encore ' . $_SESSION['credit'] . ' coups à jouer
<form action="Vcompte.php" method="post" name="lol">
<input type="text" name="reponse" />
<input type="submit" value="envoi" />
</form>
<script language="javascript">document.lol.reponse.focus();</script>';
} else { // plus de crédits, faut banquer !!
echo '<script type="text/javascript"> document.location.replace("achatcredits.php")</script>';
}
// fin du jeu
} else { // un gagnant existe déjà pour ce jeu
echo '<center>Le Gagnant est '. $winnerkadx . '</center><br />
<center>Partie terminée</center>';
}
?></center>
</div>
</div>
</div>
</body>
</html>
Je le redis : c'est loin d'être parfait, mais en procédant ainsi tu limites très fortement les risques liés à la sécurité (le deuxième soucis que tu évoquais n'a plus lieu d'être), tu gagnes en rapidité et en clarté du code.
N'hésite pas à faire part des pbs que tu rencontres.
Cordialement,
Kohntark -
|
|
samedi 13 mars 2010 à 21:20:54 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM
|
Ok merci , je vais regarder tes modifications de plus prés , je te tiendrai au courant du résultat ! mille merci !
Cordialement ,
FX
|
|
samedi 13 mars 2010 à 22:07:11 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM
|
Ah ben ya du bon et du mauvais , mais on se rapproche de la vérité !
Alors je t'explique mes tests .
Donc j'ai utilisé ton code brillamment écrit et testé et le décompte se fait correctement lorsqu'on y joue.
1. Donc pour les tests , je pars dans le cas ou le chiffre n'a pas été trouvé et le gagnant non plus.
Lors de la connexion au compte membre , j'ai le message suivant : "Warning: mysql_result() [function.mysql-result]: Unable to jump to row 1 on MySQL result index 3 in /homez.318/kadoox/www/Vcompte.php on line 84" la ligne 84 correspond à "$numobjetwin = mysql_result($result, 1); // numéro à découvrir".
Lorsque j'essai d'inscrire le code a trouver , il me dit tout le temps "que le numéro mystère est inférieur!"
-FX-
|
|
samedi 13 mars 2010 à 22:29:51 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

FXPHANTOM
|
En gros si je comprends bien , il ne trouve pas les valeurs de $winnerkadx et $numobjetwin ? 
|
|
lundi 15 mars 2010 à 07:29:31 |
Re : Problème de rafraichissement dune page !!!! [^^sad1]

kohntark
|
J'avais prévenu, j'ai écrit à la va vite !!
Tu peux simplement remplacer :
Code PHP : $query = "SELECT winnerkadx, numobjetwin FROM objetskdoox WHERE refobjet=1210110";
$result = mysql_query($query);
// Recuperation des resultats
$winnerkadx = mysql_result($result, 0); // gagnant du jeu
$numobjetwin = mysql_result($result, 1); // numéro à découvrir
par :
Code PHP : $query = mysql_query("SELECT winnerkadx, numobjetwin FROM objetskdoox WHERE refobjet=1210110");
$result = mysql_fetch_row($query); // 0=> gagnant du jeu, 1=> numéro à découvrir
Puis remplacer chaque occurrence de :
$winnerkadx par $result[0]
$numobjetwin par $result[1]
Je n'ai pas eu le temps de tester, j'aurai sans doute plus de temps ce soir.
Cordialement,
Kohntark -
|
|
Cette discussion est classée dans : mysql, user, id, echo, else
Répondre à ce message
Sujets en rapport avec ce message
Souci dans mon tableau [ par slhuilli ]
Bonjour,je cherche la faille dans ce bout de code depuis p$ls jours sans trouver. Qu'elqu'un pourra peut être maider et m'expliquer . En fait, je n
MySQL id? [ par Linuss ]
Bonjour à tous, Voilà, lorsque j'essaie de faire un lien qui contient l'id (qui existe au ca sou quelqu'un poserait la question :) d'un tuto, je n'y a
Besoin Aide Formulaire [ par Dexterage ]
bonjour a tous :)voila jai un tit soucis avec ma page! Le but de la page étant de faire une lister d'évènement, en fonction des lieux. Il y a une tabl
Mysql erreur, mais où ? [ par Tilix ]
Bonjour,Je voudrais savoir où est l'erreur dans ceci :while($data = mysql_fetch_assoc($req)) { if ('!'.$data['id'].'') { echo '(0)'; } else {
centrer une requete mysql [ par martiall ]
Bonjour,bon le titre est un peu tiré par les cheveux mais bon...Pour simplifier, j'ai une table user (ID_USER, PSEUDO)depuis une page, je séléctionne
Pagination en php URGENT [ par hoodlum ]
Tout d'abord je suis debutant en php et J'ai un petit pb,jarrive pas a trouver l'erreur dans mon script de pagination pour une requete SQL qui retourn
AU SECOUR [ par hoodlum ]
voici mon script: include("heads.inc.php"); $req=$_SERVER['REQUEST_METHOD']; if($req=="POST") $cho
etre perdu [ par hoodlum ]
contrairement a tous les message ke g pu laissé sur le forum ;G trouvé le probleme .mais je c pa pkoi.voici mon : include("heads.inc.php"); $re
UNE BOUCLE infernal HELP ME!!! [ par hoodlum ]
Le problemes c ke o 2eme passage par pasage a l'url le script arrete d'etre executé a partir de la ou g mis le pointillé car le while n'est pas execut
Authentification [ par Alricaus ]
Bonjour à tous. J'aimerai réaliser un code en php, utilisant la base de donnée mysql, pour faire que lorsqu'une personne s'identifie sur l'index en ht
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|