begin process at 2012 05 27 19:33:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > "LA PAGE NE PEUX PAS ÊTRE ACTUALISÉE SANS LE RENVOI D'INFORMATION..."

"LA PAGE NE PEUX PAS ÊTRE ACTUALISÉE SANS LE RENVOI D'INFORMATION..."


 Information sur la source

Note :
9,91 / 10 - par 11 personnes
9,91 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Niveau :Débutant Date de création :09/07/2004 Date de mise à jour :25/03/2005 11:28:23 Vu :10 794

Auteur : arnal69130

Ecrire un message privé
Site perso
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bonjour,
J'en avais assez d'avoir sans cesse le message "La page ne peux pas être actualisée sans le renvoi d'information...", lors du rechargement de mes pages dynamiques contenant des données postées.
J'ai donc écrit ce petit bout de code qui permet de mettre le contenu des tableaux $_POST et $_GET dans des variables de sessions, respectivement $_SESSION['POST'] et $_SESSION['GET']. Ensuite ces tableaux sont vidés et la page est rechargée.

Placer le code au début de la page qui reçoit les données.

Source

  • <?php session_start();
  • if ( (!empty($_POST)) || (!empty($_GET)) )
  • {
  • if (!empty($_GET["mavariable"]))
  • {
  • $_SESSION["mavariable"]=$_GET["mavariable"];
  • unset($_GET);
  • }
  • if (!empty($_POST))
  • {
  • foreach($_POST as $cle=>$val)
  • { $_SESSION[$cle]=$val; }
  • unset($_POST);
  • }
  • session_write_close();
  • echo '<script type="text/javascript">document.location="http://',$_SERVER['HTTP_HOST'],$_SERVER['PHP_SELF'],'";</script>';
  • }
  • ?>
<?php session_start(); 
    if ( (!empty($_POST)) || (!empty($_GET)) ) 
    { 
    if (!empty($_GET["mavariable"])) 
    { 
        $_SESSION["mavariable"]=$_GET["mavariable"]; 
        unset($_GET); 
    } 
    if (!empty($_POST)) 
    { 
        foreach($_POST as $cle=>$val) 
        { $_SESSION[$cle]=$val; } 
        unset($_POST); 
    } 
    session_write_close(); 
    echo '<script type="text/javascript">document.location="http://',$_SERVER['HTTP_HOST'],$_SERVER['PHP_SELF'],'";</script>'; 
    } 
?> 

 Conclusion

L'utilisateur peut recharger la page à loisir (sans le fichu message), et la QueryString du GET est effacée de la barre d'adresse.

C'est juste une idée !
Elle a peut-être des défauts, dites-le moi svp.
Arnaud


 Historique

05 août 2004 11:02:40 :
MAJ du 05/08/04 : Destruction des variables $_GET et $_POST, au lieu de les vider. Suggestion de MeTh
23 novembre 2004 10:28:50 :
!!! Attention !!! Le code, dans sa version précédente, comportait une grossière erreur. Pour mémoire : if (!empty($_GET)) { foreach($_GETT as $cle=>$val) { $_SESSION[$cle]=$val; } unset($_POST); } En effet, les variables transmises en GET étaient directement transformée en variables de session, quel que fut le nom de la variable ! Il était donc possible de transmettre la valeur d'une variable attendue en POST via un GET ! Dans la version corrigée, vous devez définir explicitement les noms des variables attendues en GET.
25 mars 2005 11:18:17 :
Correction syntaxe echo.
25 mars 2005 11:28:23 :
ajout printscr

 Sources du même auteur

Source avec Zip Source avec une capture CALENDRIER : ASSISTANT DE SAISIE DE DATE DANS UN FORMULAIRE
Source avec une capture HACHURES
PRÉCHARGER TOUTES LES IMAGES D'UN RÉPERTOIRE
Source avec Zip Source avec une capture DÉGRADÉ

 Sources de la même categorie

Source avec Zip Source avec une capture VALIDATEUR DE FORMULAIRE par Reldan
Source avec Zip SUIVI SERVICE CLIENT PHP par hige52
Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
Source avec Zip Source avec une capture SELECTEUR DE NOTE par Reldan
Source avec Zip Source avec une capture ESPACE MEMBRE , AVEC CASE OPTIONNEL , SANS MYSQL par sartoz

Commentaires et avis

Commentaire de windu le 09/07/2004 14:45:40

pas mal comme idée... je n'ai pas encore testé pour voir si ca fonctionne mais en tout cas, c'est vraiment original!!! continue comme ca, je trouve que ce genre de script ajoute toujours un petit + dans un site, c'est un détail mais qui rend bien si on le met

Commentaire de Snowboarder69 le 09/07/2004 19:35:14

Vraiment très bien. Ca marche super.

Je me demandait comment j'allais faire et bien voilà la solution.
Il va falloir que je fasse quleques modifs car j'affiche des pages différentes dans le même script avec des mélange GET et POST. et comme c'est tout le temps stocké, je reste bloqué sur certaine page.

Mais cela vaut bien 10

Commentaire de windu le 09/07/2004 19:45:33

ouai ta raison snowboarder69, ca vaut bien 10..; désolé j'avais oublié de noter auparavant

Commentaire de ribos le 14/07/2004 22:47:24

C'est vrai que c'est tout bête mais il fallait y penser !chapeau !
En plus c'est bien pratique ;-)

Commentaire de MeTh le 05/08/2004 01:20:13

sympa ....  comme idée..

ya t'il pas un moyen en javascript de forcer l'actualisation???

ou encore ya t'il pas en moyen de détruire les variable $_POST et $_GET alors qu'elle ne sont plus utile....

Commentaire de arnal69130 le 05/08/2004 10:56:49

ok MeTh, en effet.

Si tu veux, au lieu de
[code]header("Location: http://" . $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);[/code]
tu peux mettre un truc du genre :
[code]echo "<script type='text/javascript'>document.location='http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."';</script>";[/code]
Je ne pense pas que ça change grand chose, en dehors du fait que comme tu n'utilises plus "header()", tu n'es plus obligé de mettre le code en haut de la page.

Et je pense que tu peux effectivement aussi remplacer [code]${"_".$Method}=array();[/code]
par la destruction des variables : [code]unset(${"_".$Method});[/code]Merci pour cette suggestion.

Commentaire de arnal69130 le 05/08/2004 10:59:20

ah ! Pour les commentaires ça marche pas les "[code][/code]" ! alors en plus clair :


ok MeTh, en effet.

Si tu veux, au lieu de

header("Location: http://" . $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);

tu peux mettre un truc du genre :

echo "<script type='text/javascript'>document.location='http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."';</script>";

Je ne pense pas que ça change grand chose, en dehors du fait que comme tu n'utilises plus "header()", tu n'es plus obligé de mettre le code en haut de la page.


Et je pense que tu peux effectivement aussi remplacer

${"_".$Method}=array();

par la destruction des variables :

unset(${"_".$Method});

Merci pour cette suggestion.

Commentaire de cepiat le 22/10/2004 10:43:35

Que dire sinon Merci ;) vraiment géniale comme idée  bravo

Je cherchais du coté javascript comme un .........

Commentaire de MeTh le 23/10/2004 23:04:44

Mais de rien... très content d'avoir pu t'insufler cette suggestion...

par contre pour ce qui est de la redirection... quand je parlais de forcer l'actualisation en javascript je pensais pas vraiment à une redirection en javascript qui soit dit en passant est à éviter.... mais je pensais à un moyen d'empecher cette foutu boite de dialogue de s'afficher que ça renvoie les infos sans demander notre avis... mais je doute que ça soit possible...

par contre j'ai encore une question

Lorsque que l'on fais un POST sur une action de ce genre ACTION="lapage.php?varget=valeur" que se passe t'il ?? Si mes déduction son bonne ça va plus jouer non ?

enfin je me trompe peut etre à cet heure j'ai plus les idées clair ;-)

ah aussi autre suggestion y serait pas mal de faire un mysql_real_escape_string sur les données avant des les stocké non?? ou alors on le fais à la récupe des données...
je sais pas je te laisse le libre arbitre d'évaluer l'interet de cet suggestion

Commentaire de gwen189 le 24/11/2004 14:50:10

Bonjour,

j'ai le même problème avec IE et des fonctionnalités de mon appli. Seulement, je ne vois pas exactement comment utiliser cette astuce.

J'aimerai comprendre. Si on pouvait expliqur plus clairement comment faire....

merci

Commentaire de gwen189 le 24/11/2004 14:50:19

Bonjour,

j'ai le même problème avec IE et des fonctionnalités de mon appli. Seulement, je ne vois pas exactement comment utiliser cette astuce.

J'aimerai comprendre. Si on pouvait expliqur plus clairement comment faire....

merci

Commentaire de pex n pex le 02/03/2005 03:38:15

niarf je galère depuis un moment sur ce problème et je tombe sur ton script, niarf ca fait plaisir je vais pouvoir me coucher  l'esprit tranquille

merci a toi

Commentaire de pex n pex le 02/03/2005 03:42:42

niarf je galère depuis un moment sur ce problème et je tombe sur ton script, niarf ca fait plaisir je vais pouvoir me coucher  l'esprit tranquille

merci a toi

Commentaire de malalam le 27/03/2005 20:21:48 administrateur CS

Clap clap, c'est une jolie idee :-) !

Commentaire de arnal69130 le 29/03/2005 09:31:33

Merci malam ;o)

Commentaire de arnal69130 le 29/03/2005 09:32:59

oups, malalam !

Commentaire de mti le 10/06/2006 22:32:14

au passage, tu dis que
"comme tu n'utilises plus "header()", tu n'es plus obligé de mettre le code en haut de la page."
je te préviens que session_start() DOIT être en haut de page (pour la création de cookie).
Donc si, vous êtes toujours obligés de placer ce code en haut de page.

Commentaire de voodoo_chile le 17/07/2006 10:05:23

hum j'arrive pas à utiliser ton code!!
HELP!
Il faut faire quoi exactement pour le réutiliser??
et où peut-on trouver la dernière version mise à jour??

Merci d'avance

Commentaire de menyojulio2001 le 23/07/2009 18:57:22

le code est joli mais il fait défaut si dans une page l'on doit effectuer une insertion

Commentaire de Breub le 07/06/2010 14:36:05

J'ai en effet un problème quand je fais une insertion ; celle-ci se faisant deux fois ce qui génère une erreur de doublons. En tout cas pour le reste impeccable, Merci. Si quelqu'un connait une astuce pour empêcher la double insertion... merci d'avance

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales