unset() ?

unset() ? - PHP - Programmation

Marsh Posté le 12-09-2005 à 14:28:37    

question rapide...
 
yaurait-il un moyen rapide pour supprimer des variables à la volée plutot que de faire des unset à la suite mais sans detruire la session completement ? et eventuellement en pouvant mettre des exceptions ?
 
 


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 14:28:37   

Reply

Marsh Posté le 12-09-2005 à 14:32:09    

Reply

Marsh Posté le 12-09-2005 à 14:35:12    

j'explique plus clairement....
en fait j'ai une multitude de variables de session qui sont déclarées... à un moment je vais devoir les supprimer pour en creer de nouvelles... mais j'aimerai savoir si ya un moyen de les supprimer à la volée... sans faire des centaines de lignes de unset(...); unset(...);unset(...);
 
peut etre une boucle tout simplement ? je sais pas.. ya peut etre quelquechose deja prevu pour ça ?


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 14:40:52    

Reply

Marsh Posté le 12-09-2005 à 14:44:34    

je crois que j'ai trouvé une autre solution...
mais alors ma question est maintenant :
 
est ce que faire un unset() d'une variable qui n'existe pas provoque une erreur ?


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 14:45:41    

j'ai la reponse dans la doc :
 

Citation :


En PHP 4 toutefois, unset() n'est plus une véritable fonction : c'est une structure du langage, ce qui fait qu'elle ne retourne pas de valeur. Lire la valeur retournée par unset() (dans une variable, par exemple), retourne une erreur d'analyse.  
 


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 14:46:04    

Reply

Marsh Posté le 12-09-2005 à 14:46:46    

Je vois pas le rapport entre ton quote de la doc et ta question là. :/


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 12-09-2005 à 14:49:39    

bah si.. c'est que avant unset() retournait true... maintenant ça retourne rien... ce que j'avais peur c'est qu'il me retourne une erreur si j'essayais de supprimer une variable qui n'etait pas declarée...  visiblement si j'essaie de supprimer une variable qui n'existe pas.. c pas grave.. du coup je vais pouvoir faire un truc du genre :
 

Code :
  1. $array_vars=array(0=>"background",1=>"entite",2=>"titre",3=>"adresse",4=>"logo1" );
  2. foreach ($array_vars as $key=>$value)
  3. {
  4. $num2="2";
  5. unset($_SESSION["pos_x_$value"]);
  6. unset($_SESSION["pos_y_$value"]);
  7. unset($_SESSION["couleur_$value"]);
  8. unset($_SESSION["fonte_$value"]);
  9. unset($_SESSION["width_$value"]);
  10. unset($_SESSION["height_$value"]);
  11. unset($_SESSION["size_$value"]);
  12. unset($_SESSION["fonte_$value"]);
  13. unset($_SESSION["align_$value"]);
  14. unset($_SESSION["valign_$value"]);
  15. unset($_SESSION["interlignage_$value"]);
  16. unset($_SESSION["CV$value"]);
  17. unset($_SESSION["CV$value$num2"]);
  18. }


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 14:55:29    

pour supprimer toutes les varaibles d'une session ca doit etre session_destroy() ou session_close, chai pu

Reply

Marsh Posté le 12-09-2005 à 14:55:29   

Reply

Marsh Posté le 12-09-2005 à 14:57:54    

oui mais session_destroy ça tue la session complete.. et moi je veux pas ! je crois qu'il n'y a pas d'autre moyen que ce que j'ai fait en fait.. je vois pas comment PHP peut deviner quelles variables il faut detruires et celles qu'il ne faut pas


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 14:59:43    

session_destroy détruit la session mais ne unset pas tous les $_SESSION et vire pas le cookie de session non plus.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 12-09-2005 à 15:00:36    

ouai donc ça me convient pas, moi je veux garder la session en cours ouverte.. Mais supprimer un grand nombre de variables pour quelles soient eventuellement remplacées


Message édité par freed102 le 12-09-2005 à 15:01:45

---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 15:01:07    

freed102 a écrit :

oui mais session_destroy ça tue la session complete.. et moi je veux pas ! je crois qu'il n'y a pas d'autre moyen que ce que j'ai fait en fait.. je vois pas comment PHP peut deviner quelles variables il faut detruires et celles qu'il ne faut pas


 
En même temps t'as pas l'air de lésiner sur les sessions.  [:mlc]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 12-09-2005 à 15:39:27    

Et si tu faisait un foreach sur ta session dans laquelle tu fais un unset?
Ca la videra sans la tuer.

Reply

Marsh Posté le 12-09-2005 à 15:40:10    

et bien si tu lis plus haut... c ce que j'ai fait!


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 15:46:20    

Moi, je te proposais de boucler directement sur $_SESSION :lol:
En fait, t'avais tellement de ligne dans ta solution que j'avais même pas vu que tu faisais un foreach sur un tableau que tu venais de créer Pourquoi t'utilise pas une fonction vu que tu sais exactemetn ce que tu veux supprimer? Ca serait plus rapide que de créer un tableau et faire un foreach dessus.

Reply

Marsh Posté le 12-09-2005 à 15:48:16    

et bien en fait c le seule moyen que j'ai trouvé pour cibler ce que je veux supprimer (j'ai fais attention à garder une cohérence dans les noms quand je declarais mes variables expres pour pouvoir les manipuler sans crainte)


---------------
Freed102
Reply

Marsh Posté le 12-09-2005 à 19:20:48    

Et pourquoi tu ne stockes pas tes variables dans une variable de session ?
 
Par exemple tu crées $_SESSION['valeurs'] = array(); et tu utilises ce tableau pour stocker tes variables, au lieu de stocker directement dans $_SESSION
 
Et après il ne reste qu'à faire $_SESSION['valeurs']  = array(); ou unset($_SESSION['valeurs']); pour détruire tes variables.
 


---------------
France Hardware | Degroup Test | Degroup News
Reply

Marsh Posté le 12-09-2005 à 19:54:14    

et bien parceque j'avais pas prevu ça au debut... donc c trop tard !

Reply

Marsh Posté le 12-09-2005 à 20:01:20    

Il n'est jamais trop tard :)


---------------
France Hardware | Degroup Test | Degroup News
Reply

Marsh Posté le 12-09-2005 à 20:04:59    

et bien j'ai pas envie de tout recoder en fait.. c trop tard !

Reply

Marsh Posté le 14-09-2005 à 00:16:41    

J'ai eu une petite idée en tete en lisant.
Si tu vois que tu n'a que 1 ou 2 session a récupéré, tu les met dans des variables.
 
$truc = $_SESSION['truc'];
$_SESSION = array();
$_SESSION['truc'] = $truc;
 
Mais apres il faut voir ca selon ce que tu as besoin.
Voila, j'ai apporter ma contribution de la soirée :D


Message édité par Badze le 14-09-2005 à 00:17:06
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed