Aller au menu - Aller au contenu

Eviter le rafraichissement d'une page

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne ness789 # Posté le 04/11/2007 à 14:54:44
Avatar

Bonjour, j'utilise Allopass pour mes pages a contenu protégé. Donc lorsque le membre entre un code il est ré dirigé vers une page sur laquelle s'exécute un script qui lui donne X points. Mais le problème c'est que le membre peut rafraichir la page et ainsi multipliera les points par le nombre de rafraichissement.
Et donc je cherche une façon de contourner ce problème, merci d'avance.


 
Hors ligne Neo6 # Posté le 04/11/2007 à 15:10:27
Uh ?
Avatar

Bonjour,
Pourquoi empecher le rafraichissement la ou un simple champ et une condition suffisent ?
Certes cela impose une ressource et une reflexion en cout mais cela en vaut sans doute la peine. Car quoi qu'il arrive, si vous bloquez juste le rafraichissement, cette page restera accessible ne serait-ce qu'une fois / visite.

OhMyPix.com : hebergement d'image en ligne gratuit avec gestion d'album
 
Hors ligne Arnadus # Posté le 04/11/2007 à 15:14:14

Je pense à un truc là.

Juste après quetu lui ai donner les point, tu pourrais re-faire une redirection vers une autre page (sui n'aurais rien à voir dans le script). non?
Je sais pas, c'est une idée qui m'a traversé l'esprit... Maintenant, attention! Car le client peux aussi faire "précédent" et revenir sur la page...
Hors ligne fehd # Posté le 04/11/2007 à 15:15:54

Salut,
Je pense que c'est faisable en stockant des cookies. Sauf que si le visiteur ou le membre n'accepte pas les cookies, celà ne pourrait pas fonctionner et pourra rafraichir la page autant qu'il veux.

Amicalament Fehd
 
Hors ligne Neo6 # Posté le 04/11/2007 à 15:24:09
Uh ?
Avatar

Personne n'a pensé aux sessions ?
Un système tout simple, qui lors du chargement de la page affecte la valeur 1 à une variable enregistrée en session, et l'incrémente lors du chargement de la page, ainsi avec une simple condition on peut déterminer si un rechargement à été effectué et lui afficher un message d'erreur.

Et si il quite la page, il suffit de faire un système qui va enregistrer une valeur quelconque dans une table, et comme précédemment on utilise un condition + requete pour voir si il n'a pas déja crédité son compte ;)

Il y a plein de méthodes, suffit d'en trouver une bonne et rapide.

OhMyPix.com : hebergement d'image en ligne gratuit avec gestion d'album
 
Hors ligne Arnadus # Posté le 04/11/2007 à 15:27:35

Neo> J'y ai pensé...le problème c'est que les sessions s'aut-détruisent après 5-10 minutes (non?).Si le type reste sur la page pdt 5-10 minutes (justement ^^ ) et qu'il actualise ensuite...Crack dedans! Il y a donc quand même une faille.
Mais je crois qu'il y a moyen, quand même, d'augmenter le temps de vie d'une session.
Hors ligne ness789 # Posté le 04/11/2007 à 15:27:56
Avatar

Voila je viens de trouver ce code :

Page d'entrée du code :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?
  2. $reload=1;
  3. session_register("reload");
  4. ?>


Pgae de gestion :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?
  2. if ($reload != 1)
  3. {
  4. header("location:http://tonsite.com/erreur.htm");
  5. }
  6. $reload =0;
  7. ?>

Mais ca n'a pas l'air de marcher, une idée ?
Édité le 04/11/2007 à 15:31:31 par ness789


 
Hors ligne Neo6 # Posté le 04/11/2007 à 15:31:24
Uh ?
Avatar

Dans la page gestion, tu utilises la session (session_start) mais ensuite tu n'y fait meme pas appel.
$reload = $_SESSION['reload']; // te donnera la valeur contenue dans la session reload.
Ce sera plus pratique que register
Édité le 04/11/2007 à 15:35:45 par Neo6

OhMyPix.com : hebergement d'image en ligne gratuit avec gestion d'album
 
Hors ligne ness789 # Posté le 04/11/2007 à 15:39:28
Avatar

Page 1 :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?
  2. $reload=1;
  3. session_register("reload");
  4. ?>


Page 2 :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?
  2. $reload = $_SESSION['reload'];
  3. if($reload != 1)
  4. {
  5. header("Location: http://****/index.php");
  6. }
  7. $reload =0;
  8. ?>

Mais ça ne fonctionne toujours pas.

PS: je n'utilise pas le session start car mes pages sont appelées par un include et dans la page index.php le session_start(); est présent.
Édité le 04/11/2007 à 15:43:12 par ness789


 
Hors ligne Neo6 # Posté le 04/11/2007 à 15:42:29
Uh ?
Avatar

Ah d'accord, j'ai mal compris :)
Bon session_register permet d'affecter une variable a une session sans passer par session_start donc pas de soucis de ce coté.
Ou est-ce que ta session est incrémentée ?

Si reload garde la meme valeur a chaque actualisation, c'est normal qu'il n'y ait pas de changement ;)
Édité le 04/11/2007 à 15:43:48 par Neo6

OhMyPix.com : hebergement d'image en ligne gratuit avec gestion d'album
 
Hors ligne ness789 # Posté le 04/11/2007 à 15:45:20
Avatar

Lorsque la 2eme page est chargée -> $reload = 0;
Et donc la première condition est remplie et si l'utilisateur réactualise la page il est redirigé sur une autre page.
Édité le 04/11/2007 à 15:50:12 par ness789


 
Hors ligne Neo6 # Posté le 04/11/2007 à 15:50:11
Uh ?
Avatar

Je te propose ceci :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?
  2. $reload = $_SESSION['reload'];
  3. if($reload >0) // Si nous sommes déja venu au moins une fois..
  4. {
  5. header("Location: http://****/index.php");
  6. }
  7. $_SESSION['reload']++; // Ici on incrémente, donc si c'est bien la première fois qu'on vient
  8. // On met ce qu'on veut ici
  9. ?>


Et bien entendu tu initialises la session à 0.
Édité le 04/11/2007 à 15:51:04 par Neo6

OhMyPix.com : hebergement d'image en ligne gratuit avec gestion d'album
 
Hors ligne ness789 # Posté le 04/11/2007 à 16:09:01
Avatar

Alors voila ce que j'ai :
Page 1 :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. $reload == 0;
  3. session_register("$reload");
  4. ?>


Page 2 :
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. $reload = $_SESSION['reload'];
  3. if($reload > 0)
  4. {
  5. header("Location: http://****/index.php?page=accueil");
  6. }
  7. $_SESSION['reload']++;
  8. echo 'Page rechargйe "' .$reload . '" fois';
  9. ?>


J'ai également rajouté un echo mais qui ne s'affiche même pas.
Donc voila le code ne marche toujours pas :S

EDIT :

Excuse moi tout marche parfaitement bien ^^ j'avais juste oublié de rajouter mon $_GET sur la page index.php
Donc maintenant tout fonctionne.
Merci d'avance.
Édité le 04/11/2007 à 16:16:32 par ness789


 

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx