Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/03/2006, 12h13   #1
Membre du Club
 
Inscription : février 2006
Messages : 104
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 104
Points : 68
Points : 68
Par défaut [Cookies] Sauver valeur $_SESSION => cookies

J'ai un petit problème et je ne voit pas la solution à envisager, j'ai un site qui fonctionne principalement avec des variables de sessions. Le problème c'est qu'une partie de ces infos peuvent être sauvé par l'utilisateur et recharger si ils doivent couper le navigateur, redemarrer ...

Le problème, c'est que je doit créer le cookie avant toute autre chose, mais je doit pouvoir faire un session_start() pour avoir accès aux données à stocker dans ce fameux cookie.

Ps : le cookie devra contenir plusieurs lignes de données, donc il faudra une boucle pour inscrire les données dans ce cookie.

J'avait pensé à faire comme ça sur ma page :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
 
for ($i=0;$i<$_SESSION['paniercount'];$i=$i+1)
	{
	echo $_SESSION['panier'][$i];
	echo " X ";
	echo $_SESSION['panierqty'][$i];
	echo "<br/>";
	setcookie("cookie",$_SESSION['panier'][$i].",".$_SESSION['panierqty'][$i],time()+10000);
	}
?>
mais j'ai une erreur :

Header already sent - cannot modify ...
psykbe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2006, 12h18   #2
Membre éprouvé
 
Avatar de gofono_bass
 
Inscription : décembre 2005
Messages : 385
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : décembre 2005
Messages : 385
Points : 409
Points : 409
c'est a cause de tes echos. si t'as vraiment besoin d'afficher ces données, peut-etre que ob_start et ob_end_flush() te seront utiles.

edit out tout simplement stocker tout ça dans une variable et ne l'afficher qu'apres...
__________________
mais pourquoi tu cours?
gofono_bass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2006, 12h23   #3
Membre du Club
 
Inscription : février 2006
Messages : 104
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 104
Points : 68
Points : 68
Citation:
Envoyé par gofono_bass
c'est a cause de tes echos. si t'as vraiment besoin d'afficher ces données, peut-etre que ob_start et ob_end_flush() te seront utiles.
Ca à l'air de marcher, pour ça en tout cas, il me suffira si il faut de refaire une boucle pour afficher après avoir modifié le cookie.

Autre problème on dirait qu'avec cette boucle, il écrase à chaque fois les données car le cookie à la lecture ne comporte plus que le dernier des champs. Y a-t-il une syntaxe ou opération particulière à effectuer ?

Pour afficher j'utilise :

Code :
1
2
3
4
5
6
7
8
9
<?php
session_start();
$monpanier=$_COOKIE['cookie'];
$tab=split(",",$monpanier);
$nb=sizeof($tab);
echo $nb;
echo $tab[0];
echo $tab[1];
?>
Donc ici ça m'affiche la partie 1 (0) qui est le produit et la partie 2 (1) qui est la quantité mais du dernier produit de la liste
psykbe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2006, 12h37   #4
Membre du Club
 
Inscription : février 2006
Messages : 104
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 104
Points : 68
Points : 68
Solution trouvée,

Code :
setcookie("cookie[$i]",$_SESSION['panier'][$i].",".$_SESSION['panierqty'][$i],time()+10000);
Pour la création et voici pour la lecture de données :

Code :
1
2
3
4
5
6
7
8
9
10
<?php
session_start();
$monpanier=$_COOKIE['cookie'];
$tab=split(",",$monpanier[$ligne]);
$nb=sizeof($tab)-1;
echo $nb;
echo $tab[0];
echo " , ";
echo $tab[1];
?>
psykbe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h58.


 
 
 
 
Partenaires

Hébergement Web