disparition des $_POST

hypno
Invité n'ayant pas de compte PHPfrance

09 sept. 2007, 00:11

bonjour,
j'aimerais savoir comment éviter l'évaporation des variable $_post après un refresh de la page.
ca me pose de gros problème car j'aimerais découper les resulats du formulaire en plusieurs pages et pour le moment, quand je clic pour aller à la page suivante, toute mes $_POST disparaissent et j'obtiens donc une erreur.
merci.

Mammouth du PHP | 881 Messages

09 sept. 2007, 02:42

Une façon de contourner le problème: envoyer tes infos contenues en POST dans l'URL nouveau. Tu les retrouveras en $_GET et lisibles dans la barre d'adresse.

Tu peux aussi les passer dans une autre "frame" en attendant le rafraîchissement.

Tu peux encore les entreposer dans une table temporaire de ta base de données.
Soyez artisans de paix

ViPHP
ViPHP | 5924 Messages

09 sept. 2007, 03:15

Ou plus simplement et proprement les sessions

hypno
Invité n'ayant pas de compte PHPfrance

09 sept. 2007, 10:30

voilà donc je fais ça pour chaque variable:

if(isset($_POST['var1']))
{
$_SESSION['var1'] = $_POST['var1'];
}

c'est ça, ou il y a un moyen plus simple?

ViPHP
ViPHP | 5924 Messages

09 sept. 2007, 12:31

Essaye $_SESSION = $_POST :D

Invité
Invité n'ayant pas de compte PHPfrance

09 sept. 2007, 13:11

heu si je fais ça:

$_SESSION = $_POST

ça m'écrase toute mes autres variables de session :(

hypno
Invité n'ayant pas de compte PHPfrance

09 sept. 2007, 13:34

j'ai essayé $_SESSION = $_SESSION + $_POST mais du coup les nouveaux $_POST n'écrasent pas les anciens $_SESSION, ce qui pose problème.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 sept. 2007, 14:54

essaie avec :

Code : Tout sélectionner

Je veux $_POST mettre dans $_SESSION
PHP se débrouillera pour le reste :wink:

Soit tu prend variable par variable soit tu affectes à un sous tableau de session (pour plus de lisibilité):
 $_SESSION["post"][] = $_POST; // ou $_SESSION[] = $_POST;  
ou extract() ou la doc :)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

hypno
Invité n'ayant pas de compte PHPfrance

09 sept. 2007, 16:03

voilà j'ai donc fait:

if(isset($_POST))
{
$_SESSION['post'] = $_POST;
}

et cette fois, j'ai encore un problème:
php rentre toujours dans le if, même après un refresh, alors que mes variables POST sont toutes vides.

hypno
Invité n'ayant pas de compte PHPfrance

09 sept. 2007, 16:05

ok j'ai rien dit avec un :

if ($_POST) ça marche très bien.

merci à tous!

ViPHP
ViPHP | 5924 Messages

09 sept. 2007, 18:01

Le tableau $_POST est toujours défini, lorsqu'il n'y a aucune donnée envoyée en post, il est vide, mais défini. Donc il faut tester avec la fonction empty().

Mammouth du PHP | 881 Messages

09 sept. 2007, 19:30

Ce me sera utile à moi aussi.
Je ne connaissais pas la fonction "Session".
Soyez artisans de paix