11545 sujets

JavaScript, DOM et API Web HTML5

Je suppose que je ne suis pas le seul à obtenir ce message lorsque sur une page on fait précédent avec le naviguateur (là c'est IE mais avec Firefox le message est différent)
en fait c'est parce que la page ou l'on retourne attend une valeur $_POST ou $_GET qu'on lui envoie pas.

Mais comment le solutionner?
J'ai mis un bouton retour mais l'utilisateur est peut etre habitué au "précédent".

J'ai mis cette question dans cette catégorie car je pense que c'est + un problème de javascript que de php
Es tu sur que c'est à cause de ça ??

Quand tu fais précédent alors que la page d'avant attendait un $_POST, le message est plutot voulez vous renvoyer les informations...
£Bonjour,
Différence entre :

Voulez-vous renvoyer les informations......
apparaît quand on fait Actualiser sur une page où on a envoyé des données en post.

Délai expiré pour cette page......
apparaît quand on fait précédent et qu'on retombe sur une page où on avait envoyé des données en post.

J'ai déjà remarqué que ce message n'apparaissait pas quand on faisait une redirection avec header après avoir traité les données envoyées par post. Peut-être la solution ?
Bonsoir à tous,
Je me permets de upper ce topic parce que j'ai le même problème.
La solution que j'évoquais moi-même ci-dessus n'est absolument pas réalisable.
Y aurait-il par hasard une autre solution ?

Je vous donne le contexte :
Je suis en train de faire une nouvelle version de mon validator.
Lorsque les infos sont postées, la page de validation s'affiche.
Quand il y a un nom d'élément HTML, celui-ci apparaît en lien et pointe direct vers la référence.
et lorsqu'on veut revenir à la page de validation ... ben ... j'obtiens le fameux message.

J'ai essayé, à tout hasard, d'envoyer un en-tête HTTP expires avec une date postérieure d'un heure par rapport à la date actuelle, mais ça ne change rien...

J'ai aussi essayé d'enregistrer une variable de session, et que, si cette variable existe, réafficher l'ancienne page de validation... toujours le message.

ET comme le traitement effectué par le serveur est quand même conséquent (2 à 3 secondes sans compter un éventuel upload), ça m'embête de devoir le refaire plusieurs fois de suite...

En attendant je force les popup, mais bon, c'est moyen comme parade...

Thanks a lot.
Tu as essayé un truc du style :

<meta http-equiv="cache-control" content="Private" />


Ou directement dans les headers http.

[Pour info]Les valeurs acceptées pour cache-control sont "public" (pages cachables sur un proxy par exemple), "private" (page cachables uniquement pour un utilisateur donné), "no-cache" (pages non cachables), et "no-store" (page cachables mais pas archivables).

Edit : je viens de découvrir qu'il y en a d'autres Smiley cligne
[/]
Modifié par Lanza (27 Oct 2005 - 22:20)
Rien à faire, rien ne change.

J'ai comme prévu ajouté :
<?php header("Cache-Control:private"); ?>
et
<meta http-equiv="Cache-Control" content="private" />

mais le résultat reste absolument identique.
Merci.
Modifié par QuentinC (28 Oct 2005 - 17:34)
Bonjour,

moi aussi j ai le meme probleme

Avertissement : expiration du délai pour cette page
La page requise a été créée en utilisant les informations fournies dans un formulaire. Cette page n'est plus disponible. Par sécurité, Internet Explorer ne renvoie pas automatiquement les informations vous concernant.

Je n'arrive pas a le resoudre comment faire ?????

Merci
Entre temps, j'ai pu le résoudre, j'ai pu faire comme j'ai dit : enregistrer temporairement les infos du form en sessions et afficher une autre page en récupérant ces infos.
Bonjour,
QuentinC peux tu me donner plus d'infos sur
"enregistrer temporairement les infos du form en sessions et afficher une autre page en récupérant ces infos."
stp ?
quand le visiteur fait un retour en arrière avec le navigateur, comment as-tu as géré ? as-tu un exemple de code ?

merci

VR
Depuis, ça s'est encore complexifié : j'utilise un fichier temporaire sur le serveur, que je supprime automatiquement après trois heures. C'est pour mon validateur que je prépare ça.

Mais bon, à la base, c'est simple. Admettons que tu envoies deux valeurs val1 et val2 par post à la page A.

Je commence par ce qu'il ne faut pas faire :


<?php
$val1 = $_POST['val1'];
$val2 = $_POST['val2'];
echo "val1 = $val1 et val2 = $val2";
?>


Dans un pareil cas, tu peux vérifier par toi-même qu'en allant sur une autre page et enrevenant, tu as droit au fameux message. Accessoirement, si tu fais F5, tu as le message "Voulez-vous renvoyer les informations ..... ".


Voici maintenant comment j'ai fait :

La page A :

<?php
session_start();
$_SESSION['val1'] = $_POST['val1'];
$_SESSION['val2'] = $_POST['val2'];
header("Location:B.php");
exit();
?>


et la page B :

<?php
session_start();
echo "val1 = {$_SESSION['val1']} et val2 = {$_SESSION['val2']}";
?>


Tu pourras vérifier qu'ici par contre, si tu vas sur une autre page et que tu reviens, la page est réaffichée telle quelel, et, quand tu fais F5, tu n'as pas non plus le "Voulez-vous renvoyer les informations .....".
En plus c'est totalement transparent, car si tu fais Précédent, tu retombes sur ton formulaire de départ.
Je tombe sur ce site bien longtemps après, comme quoi la question soulevée est bien référencée sur le web et la réponse attendue peut servir à d'autres...

Donc, voilà une piste les amis :


<?php
session_start();
if( isset($HTTP_POST_VARS['monchamps']) ) {
$_SESSION['monchamps']= $HTTP_POST_VARS['monchamps']; 
}
?>


Voilou Smiley smile

Concrètement, votre page de formulaire envoi les données à la page de résultat qui transforme illico les données en variables de sessions (sans passer par une page A, B, ou C Smiley sweatdrop ).

Cela devrait alors éviter les :
a écrit :
Avertissement : expiration du délai pour cette page
quand on clique sur page précédente Smiley langue

C'est simple mais c'est dingue que le concepteur d'Internet Explorer ne soit pas fichu de mettre la solution sur son site ! En tout cas ça marche pour moi, j'espère que ce sera bon aussi pour vous.

C'est comme pour les animations flash :

a écrit :
"Cliquer ici pour activer et utiliser ce contrôle"
(il faut utiliser un fichier *.js qui affiche l'animation, plutôt que de l'inclure directement dans la source)

ou encore dans Access :

a écrit :
"Un composant ActiveX ne peut pas créer d'objet"
(il faut réinscrire dans le registre le fichier dao360.dll : Menu démarrer, Exécuter :
regsvr32 "C:\Program Files\Fichiers communs\Microsoft Shared\DAO\dao360.dll"
Smiley ravi )

Tous ces problèmes ont leurs solutions efficaces mais Microsoft ne l'indique pas, c'est dommage ! Smiley fache

Enfin, bon, voilou, et bonne continuation Smiley cligne !

@+

Graphys.
Modifié par Euromillion (24 May 2006 - 17:46)
Notons toutefois que le problème évoqué dans ce topic n'est pas spécifique à IE : tous les navigateurs du monde l'ont, c'est simplement le message qui est différent.
En fait, les spécifications HTTP précisent qu'il ne faut pas stocker le contenu d'une page récupérée par le mode POST en cache. Ce que tout le monde applique à la lettre, pour une fois.
Bonjour,
je réagit sur le message de "Euromillion".
La solution est très intéressente, je l'ai testé mais ca ne marche pas. Par contre, la solution de QuentinC doit théoriquement marché, mais je ne l'ai pas testée.

Est ce que vous pouvez expliquer un peut plus car en effet je ne vois pas comment en créant des variables de session le navigateur peut s'empasser de cette contrainte (methode post). Je parle bien ici de la solution "Euromillion".

Merci d'avance.
Ce n'est pas le fait d'utiliser des variables de sessions qui font que le navigateur n'affiche pas d'avertissement. Ce qui fait, c'est si on reste sur la page chargée par POST ou non. L'utilisation des sessions permet simplement de stocker temporairement les données.
Je m'explique:
J'ai une page toto.htm qui contient un form qui envoie les données par post à titi.php.

Si j'ai bien compri, les variables de sessions sont à créer dans titi.php qui recevra toujours ces données par post.
En changeant de page puis en revenant sur la page résultat, j'ai toujours le messagge 'expiration du délai pour cette page ...'
Dans la page où tu reçois les données par POST, tu stocke en session puis tu rediriges avec header. C'est tout ce qu'il y a à faire sur cette page.
Tu peux évidemment utiliser le même fichier si tu veux, ce qui est important c'est la redirection (HTTP 301).