Page qui ne se charge qu'une fois ! - PHP - Programmation
Marsh Posté le 06-09-2005 à 22:48:31
Ben je sais pas, dans le doute vire l'utilisateur de ta table banque avant de le créditer ?
Fait voir ton code quand même.
Marsh Posté le 06-09-2005 à 22:57:43
C'est déjà le cas, l'utilisateur est viré avant le crédit .. :s
C'est pour ça que ça m'intrigue !
Le code :
$result5=mysql_query("SELECT argent FROM banque WHERE pseudo='$pseudo'" );
$nb_result5 = mysql_num_rows($result5);
if ($nb_result5>=1){
$result4=mysql_query("DELETE FROM banque WHERE pseudo='$pseudo'" );
$result6=mysql_query("UPDATE base SET argent=argent+100 WHERE pseudo='$pseudo'" ); }
Une idée ?
Marsh Posté le 06-09-2005 à 23:59:33
foxbond a écrit : C'est déjà le cas, l'utilisateur est viré avant le crédit .. :s |
vu le peu de code non, mais :
- si ton $pseudo contient des caractères spéciaux...toutes tes requetes plante, à moins que tu ne l'ai protégé avant
- utilise plutot des identifiants que du texte
- place un echo dans ton if pour savoir s'il y passe, ca s'appelle du debogage et c'est ce qu'on fait avant de poser des questions normalement
- ca peut provenir du code de compte.php qui crée un éventuel enregistrement dans la table banque pour ce pseudo
Marsh Posté le 07-09-2005 à 07:06:41
Pour les quatres tirets, non, cela n'est pas ça ..
Une autre idée, quelqu'un ?
Marsh Posté le 07-09-2005 à 07:10:11
tu peux peut etre creer une session/cookies au moment de l'update de la base de donnée, et vérifier, avant update, la présence ou non de la dite session/cookies...
Marsh Posté le 07-09-2005 à 07:29:08
Je vais essayer ça .. ! Sinon, y'a t il un moyen pour qu'une meme page refuse de se chargée si elle a été visitée moins de 10 minutes avant ?
Marsh Posté le 07-09-2005 à 07:57:10
ben enregistres l'ip du visiteur dans une table ainsi que l'heure des la connexion a cette page ,et fais les verifs en consequences
Marsh Posté le 07-09-2005 à 13:03:23
betsamee a écrit : ben enregistres l'ip du visiteur dans une table ainsi que l'heure des la connexion a cette page ,et fais les verifs en consequences |
super le test, si tu tombes sur un proxy tu bloques donc tous les utilisateurs si un seul a vu la page ?
Marsh Posté le 07-09-2005 à 13:21:49
misterpinguin a écrit : super le test, si tu tombes sur un proxy tu bloques donc tous les utilisateurs si un seul a vu la page ? |
Marsh Posté le 07-09-2005 à 13:44:06
misterpinguin a écrit : c'est constructif comme réponse |
bon je vais faire plus constructif:
bravo tu m'as brise en deux
qu'as tu de constructif a proposer pour resoudre ce probleme?
Marsh Posté le 07-09-2005 à 19:05:00
betsamee a écrit : bon je vais faire plus constructif: |
le but n'était pas de te "briser en deux" mais il faut éviter de donner des réponses dont tu ne connais pas la portée, et qui peuvent avoir des conséquences plus ou moins graves en programmation...
Et donc pour répondre à la question, il faut utiliser une page de redirection :
ton formulaire >> page de traitement >> page de résultat
qui empeche un multi-submit
comme le fait ce forum...
Marsh Posté le 07-09-2005 à 19:06:49
Et donc pour répondre à la question, il faut utiliser une page de redirection :
ton formulaire >> page de traitement >> page de résultat
C'est à dire ? Je suis désolé de ne pas avoir très bien compris, mais qu'est-ce que je dois changer exactement ? :$
Marsh Posté le 07-09-2005 à 19:10:54
foxbond a écrit : Et donc pour répondre à la question, il faut utiliser une page de redirection : |
tu utilises 3 fichiers :
1/ celui avec ton formulaire
2/ celui qui reçoit les données à traiter et les traite
3/ celui sur lequel tu arrives apres traitement
tu peux aussi en complément utiliser un petit bout de code en JS pour désactiver le bouton d'envoi de mémoire qqchose comme OnClick="this.disable";
Marsh Posté le 08-09-2005 à 05:39:38
misterpinguin a écrit : tu utilises 3 fichiers : |
Excuse moi pourrais-tu préciser comment ce système empêche une multi-soumission du formulaire ? Je n'ai pas très bien compris
Marsh Posté le 08-09-2005 à 08:45:40
Djebel1 a écrit : Excuse moi pourrais-tu préciser comment ce système empêche une multi-soumission du formulaire ? Je n'ai pas très bien compris |
La page 2 est redirigée (de façon transparente) vers la troisième, donc si t'essaies d'actualiser, ça actualise celle-ci et ça rebalance pas les données du form.
Marsh Posté le 17-09-2005 à 16:28:42
donc la page 3 c'est celle qui balance les données du form ? Comme ca si tu actualises la page 2, ca retraite les données simplement ? (ouais jsuis un peu con )
Marsh Posté le 17-09-2005 à 16:43:30
Djebel1 a écrit : donc la page 3 c'est celle qui balance les données du form ? Comme ca si tu actualises la page 2, ca retraite les données simplement ? (ouais jsuis un peu con ) |
Non.
La page 1 envoie les données à la page 2 via http (POST le plus souvent).
La page 2 enregistre les données dans la base et redirige de façon transparente vers la page 3.
La page 3 affiche (par exemple) un message pour confirmer que les données ont bien été enregistrées.
L'utilisateur ne voit pas le passage par la page 2 et ne peut donc pas l'actualiser.
Marsh Posté le 19-09-2005 à 19:57:03
merci bien
et ce qui fait que l'utilisateur ne voit pas la page 2, c'est parce que c'est immédiatement redirigé sur la page 3 ? Si le site rame à ce moment là, ca laissera pas la page 2 affichée un moment, laissant la possibilité de la refresh ?
Marsh Posté le 19-09-2005 à 20:00:49
misterpinguin a écrit : le but n'était pas de te "briser en deux" mais il faut éviter de donner des réponses dont tu ne connais pas la portée, et qui peuvent avoir des conséquences plus ou moins graves en programmation... |
desole pour la reponse en retard (j'ai autre chose a foutre ne ce moment) mais a part peut etre en php je ne crois pas avoir grand chose a apprendre de toi en programmation.
Ton arrogance ne te grandis pas
sur ce bonne soiree
Marsh Posté le 06-09-2005 à 21:49:07
Bonsoir à tous,
Un gros problème se présente à moi, je vais essayer de l'expliquer ..
Une page compte.php contient un lien vers la page valid.php, qui crédite l'user de 100 points SI l'user est contenu dans la table BANQUE (et donc utilisation d'un IF). Si l'user est crédité, son enregistrement dans BANQUE est supprimé.
Le problème est que certains users ayant une connexion très rapide cliquent plusieurs fois très rapidement sur le lien vers valid.php et se voient crédités de plusieurs centaines de points. Pourquoi ? Je n'en sais rien puisque l'enregistrement aurait du etre effacé.
Comment éviter alors cette méthode de triche ?
Merci infinniment !