Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
2041 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] comment detecter que l'utilisateur à actualiser la page

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] comment detecter que l'utilisateur à actualiser la page

n°135981
ftopaz
Posté le 07-05-2002 à 14:12:50  profilanswer
 

hello,
 
Je suis en train de faire des formulaires d'enregistrement mais le pb c'est qd je fais actualiser la page aprés avoir enregistrer un formulaire, les informations sont enregistrer de nouveau.
 
Ma question est la suivante :
 
Peut on tester en PHP (ou en javascript) si le mec a Actualiser ou non la page...
 
Merci :jap:


---------------
Vous pouvez dire n'importe quelle connerie a votre chien, et votre chien vous regardera d'un air qui semble vouloir dire:
mood
Publicité
Posté le 07-05-2002 à 14:12:50  profilanswer
 

n°135992
nico169
Posté le 07-05-2002 à 14:41:51  profilanswer
 

c'est normal que cela enregistre les infos a nouveau si tu fais actualiser car tu renvoit les informations.
la seule possibilités que je voit est de tester si la base de donnée contient deja le meme enregistrement, si oui, est ce que c'est la meme IP, si oui tu l'ignores.
cela implique que tu stockes les IP de chaque ordi qui ce sont enregistrées.
cela implique aussi que tu refuses ceux qui sont derriere une passerelle NAT et qui aurrait saisie les memes enregistrements. la probabilité de cette possibilités depends de la nature de ton application.
 

ftopaz a écrit a écrit :

hello,
 
Je suis en train de faire des formulaires d'enregistrement mais le pb c'est qd je fais actualiser la page aprés avoir enregistrer un formulaire, les informations sont enregistrer de nouveau.
 
Ma question est la suivante :
 
Peut on tester en PHP (ou en javascript) si le mec a Actualiser ou non la page...
 
Merci :jap:  



n°135994
ethernal
Chercheur de vérité...
Posté le 07-05-2002 à 14:57:47  profilanswer
 

fais un header("location:tapage.php" ); après la réception du formulaire.

n°136044
Corbier
Barbe's powaaa
Posté le 07-05-2002 à 16:49:40  profilanswer
 

ethernal a écrit a écrit :

fais un header("location:tapage.php" ); après la réception du formulaire.  




 
En fait g le même problème !  
ethernal tu pourrais être plus précis stp !

n°136072
ethernal
Chercheur de vérité...
Posté le 07-05-2002 à 17:45:00  profilanswer
 

tu rediriges sur une autre page soit par une meta refresh, soit par un header()
 
page_formulaire.php -> confirmation.php
//page_fomulaire.php:
if (isset($submit)){
 - test des données
 - enreg dans la bd
  -choix de la page de confirmation éventuel
 header("location: confirmation.php" );
}
 
 
ou  
 
 
page_formulaire.php -> "Message de confirmation" -> page_autre.php
//page_fomulaire.php (comme dans ce forum je pense):
if (isset($submit)){
 - test des données
 - enreg dans la bd
 - choix de la page de destination et du message à afficher
?>
<html><head>
<meta HTTP-EQUIV="refresh" CONTENT="0: URL=<? $goto ?>">
</head>
<body><? $message ?></body>
</html>
<?
}
 
 
normalement ça devrait faire ce que tu veux :)

n°136078
Sh@rdar
Ex-PhPéteur
Posté le 07-05-2002 à 17:57:45  profilanswer
 

en fait le fait de rediriger après (comme ici quand on poste) permet d'éviter de refaire une soumission du formulaire en cas de refresh.


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°138146
Corbier
Barbe's powaaa
Posté le 13-05-2002 à 11:29:06  profilanswer
 

ethernal a écrit a écrit :

 
page_formulaire.php -> "Message de confirmation" -> page_autre.php
//page_fomulaire.php (comme dans ce forum je pense):
if (isset($submit)){
 - test des données
 - enreg dans la bd
 - choix de la page de destination et du message à afficher
?>
<html><head>
<meta HTTP-EQUIV="refresh" CONTENT="0: URL=<? $goto ?>">
</head>
<body><? $message ?></body>
</html>
<?
}
normalement ça devrait faire ce que tu veux :)  




 
Alors moi je cale pas trop ce qu'est censé faire ce bout de code.
Le goto il indique koi comme URL ?
et le message il sert à koi ?
Merci de ta compréhension  :D

n°138150
ethernal
Chercheur de vérité...
Posté le 13-05-2002 à 11:35:15  profilanswer
 

dans "- choix de la page de destination et du message à afficher ", tu initialises la variables $goto à l'url sur laquelle tu veux rediriger par exemple :
- la page du formulaire en cas d'erreur dans les données avec un message d'erreur
- n'importe quelle page de ton site en cas de réussite de l'envoi avec un message de confirmation

 

[jfdsdjhfuetppo]--Message édité par ethernal le 13-05-2002 à 11:36:14--[/jfdsdjhfuetppo]

n°138192
Corbier
Barbe's powaaa
Posté le 13-05-2002 à 13:20:05  profilanswer
 

ethernal a écrit a écrit :

dans "- choix de la page de destination et du message à afficher ", tu initialises la variables $goto à l'url sur laquelle tu veux rediriger par exemple :
- la page du formulaire en cas d'erreur dans les données avec un message d'erreur
- n'importe quelle page de ton site en cas de réussite de l'envoi avec un message de confirmation  
 
 




 
ok ! mais que fait exactement la meta "refresh" : elle empêche la page de se réactualiser en chargeant une autre page ?
ya pas moyen de simplement empêcher le transfert de variables GET lors d'une 2ème réactualisation ? ce qui permettrai de rester sur la page voulue ...

n°138206
ethernal
Chercheur de vérité...
Posté le 13-05-2002 à 13:54:24  profilanswer
 

oui la meta refresh t'envoie sur une autre page pour que si l'utilisateur actualise la page, les données ne soient pas renvoyées.
 
empêcher le transfert (c du POST, pas du GET en général) ?
si tu actualises la page, tu renvoies les données...
comment tu vas faire pour savoir si les données ont déjà été envoyées ? à moins de regarder dans ta bd si ces donées ont déjà été stockées il y a peu de temps, je ne connais pas d'autre  méthode :(
 
si tu veux juste réafficher la même page, utilise plutôt  
header("location:".$PHP_SELF);

mood
Publicité
Posté le 13-05-2002 à 13:54:24  profilanswer
 

n°138218
omega2
Posté le 13-05-2002 à 14:16:52  profilanswer
 

Corbier a écrit a écrit :

 
 
ok ! mais que fait exactement la meta "refresh" : elle empêche la page de se réactualiser en chargeant une autre page ?
ya pas moyen de simplement empêcher le transfert de variables GET lors d'une 2ème réactualisation ? ce qui permettrai de rester sur la page voulue ...  



une méthode : A chaque demande de formulaire, tu rajoute un numéro unique.
Ensuite, quand tu reçois les données, tu vérifie qu'une demande a partir du formulaire numéro x n'as pas déjà était reçus, si c'est le cas, tu traites pas et tu préviens l'utilisateur.
Pour réussir ça, il te faut conaitre la liste des formulaires qui t'ont déjà été envoyé (utilisation d'une table dans la base de donnée).

n°138537
Corbier
Barbe's powaaa
Posté le 14-05-2002 à 10:26:25  profilanswer
 

Y'aurait peut etre une autre solution : une fois ke le formulaire a été rempli et que les variables ont été envoyées, le contenu du form se vide : ceci évite lors d'une réactualisation ultérieure de transférer une seconde fois les mêmes variables ... C possible de faire ça ?
 
Chez moi la fonction header ne veut pas marcher et pour ce qui est de la meta refresh j'avoue ne pas avoir trop compris comment m'en servir ...

n°138657
Corbier
Barbe's powaaa
Posté le 14-05-2002 à 14:54:08  profilanswer
 

bah faut croire ki a pas moyen ...  :??:

 

[jfdsdjhfuetppo]--Message édité par Corbier le 14-05-2002 à 16:19:09--[/jfdsdjhfuetppo]

n°138758
sellin20
Posté le 14-05-2002 à 16:59:09  profilanswer
 

Le refresh sert en fait à loader une page au bout d'un certain nombre de secondes (ou millisecondes je sais plus), voir instantanément. On peut s'en servir par exemple pour rerouter un internaute vers un autre domaine (changement d'hébergeur) lorsqu'il arrive sur la page d'accueil de l'ancien site.
Aussi, dans ton cas, quand tu valides ta page, ta base de données est updatée et puis au bout d'un certain nombre de secondes tu reroute l'internaute sur un page de confirmation (ou d'erreur). Par exemple, ta page : formulaire.php. Ce qui fait que les paramètres ne sont plus gardés.

n°138764
sellin20
Posté le 14-05-2002 à 17:08:12  profilanswer
 

donc le $goto = formulaire.php

n°139948
Corbier
Barbe's powaaa
Posté le 16-05-2002 à 16:44:02  profilanswer
 

Bon je vais maintenant poser une question concrète :
n'existe-t-il pas une variable de type HTTP_GET_VARS qui une fois le transfert effectué des variables du formulaire, les supprime, pour que le formulaire soit de nouveau vide : ceci mettrait fin à tous mes problèmes !
en fait il faudrait un GET qui au lieu de faire un "copier/coller" des variables, fasse un "couper/coller".

n°139987
dropsy
et bonne chance surtout...
Posté le 16-05-2002 à 17:33:22  profilanswer
 

non, car quand l'utilisateur raffraichit la page, son navigateur reposte les variables.
HTTP_GET_VAR n'existe que sur le serveur, pas chez le client.

n°2170708
boteha
Posté le 11-01-2013 à 12:49:11  profilanswer
 

Bonjour,
 
Sur ce forum on trouve ce code :

Code :
  1. <meta http-equiv="Pragma" content="no-cache" />
  2. <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
  3. <meta http-equiv="Expires" content="0" />


 
Cela a-t-il des avantages par rapport à :
 
<meta HTTP-EQUIV="refresh" CONTENT="0: URL=<? $goto ?>">  
 
Merci d(avance.

n°2170713
Riokmij
Blink and you're dead
Posté le 11-01-2013 à 13:25:39  profilanswer
 

[:pseudo ______] Joli déterrage...
 
Pour répondre à ta question : ça ne fait pas la même chose. Le premier code sert à éviter que le navigateur ou un proxy mette la page en cache, le deuxième sert à rediriger vers une autre page.


---------------
Are you two fucking? Are you serious? Right in front of my salad?!
n°2170814
tsoko
Posté le 12-01-2013 à 10:53:50  profilanswer
 

Oh la oui effectivement... il y a quelques années qui sépare les 2 sujets :)


---------------
Besoin d'aide pour votre projet? agence web
n°2170881
boteha
Posté le 12-01-2013 à 22:13:11  profilanswer
 

Joli déterrage...
 
En effet mais le sujet est important et peu traité.
 
Il me semble que la solution par header () est plus fiable que Meta Refresh car tu ne dépends pas du navigateur client et tu es sûr de bloquer les variables $_GET.
 
Autrement, pas de notifcations par mail sur ce forum, je n'ai pas trouvé ?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] comment detecter que l'utilisateur à actualiser la page

 

Sujets relatifs
[PHP] a propos de --header("Refresh:")--[PHP/MySQL] Acces à distance?
Connexion Php-Access sans DSN ???[HTML/PHP] comment ajouter un texte dans un Edit en cliquant sur un bt
[PHP] Peut-on appliquer l'UML à PHP?[ PHP - MySQL ] Afficher les entrées sur plusieurs colonnes ?
PHP : reconnaitre Mozilla 1.0[PHP] Récupération de POST sans savoir ce qui va etre envoyé
[PHP]Upload de fichier ![PHP]- Prob de cookies avec online.fr
Plus de sujets relatifs à : [PHP] comment detecter que l'utilisateur à actualiser la page


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR