Bonsoir
Quelle différence majeure entre unset($_Session[]) et session_unset() voir $_SESSION=array()?
Certains utilisant en plus : $_SESSION=array(); souvant après session_unset et session_destroy
Merci à vous !![]()
Bonsoir
Quelle différence majeure entre unset($_Session[]) et session_unset() voir $_SESSION=array()?
Certains utilisant en plus : $_SESSION=array(); souvant après session_unset et session_destroy
Merci à vous !![]()
oui si j'en crois ce que je lis un peu partout,
unset($_SESSION) tente de détruire une superglobale. J'imagine qu'effectivement php se protège de ce genre d'horreur !Mais pas sur !
Alors qu'effectivement session_unset() ne fait que mettre à "blanc" donc à null le tableau $_SESSION en cours.
Que ce soit $_SESSION=array(); ou session_unset() ça doit donner le même résultat!
Par contre session_destroy() ne met à null toute la session en cours mais elle est toujours sauvegardée un simple session_start() la réactive avec données du tableau et les valeurs associées.
J'ai d'ailleurs créé une fonction session_empty() :
j'ai fait pareil pour les cookies étant sous wamp , une fonction cookie_empty():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function session_empty(){ $_SESSION['$statusSession']=session_status(); if ( $_SESSION['$statusSession'] != PHP_SESSION_DISABLED and ( $_SESSION['$statusSession'] == PHP_SESSION_ACTIVE or $_SESSION['$statusSession'] == PHP_SESSION_NONE) ){ echo "<p>session_empty</p>"; foreach ($_SESSION as $cle => $valeur) { $_SESSION[$cle] = NULL; //ou "" } }elseif ($_SESSION['$statusSession'] == PHP_SESSION_DISABLED ) { echo "<p>NO session_empty : PHP_SESSION_DISABLED </p>"; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function cookie_empty(){ // désélectionner les cookies 3 $domain = ($_SERVER['HTTP_HOST']!='localhost') ?$_SERVER['HTTP_HOST']:false; //setcookie('cookiename', 'data', time()+60*60*24*365, '/', $domain, false); $cookiesSet = array_keys($_COOKIE); for ($x=0;$x<count($cookiesSet);$x++){ //setcookie($cookiesSet[$x],"",time()-1); setcookie($cookiesSet[$x],0,time()-31536000,'/',$domain,false); //là j'ai mis l'équivalent d'une année 31536000 secondes } echo "<p>cookie_empty</p>"; /**/ }
Faut commencer par les lectures du manuel php
Il y a un exemple dans la page concernant session_destroy, au cas où tu cherches un moyen de détruire complètement la session :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php // Initialisation de la session. // Si vous utilisez un autre nom // session_name("autrenom") session_start(); // Détruit toutes les variables de session $_SESSION = array(); // Si vous voulez détruire complètement la session, effacez également // le cookie de session. // Note : cela détruira la session et pas seulement les données de session ! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finalement, on détruit la session. session_destroy(); ?>
J'ai lu et vu ce code qui ne fonctionne pas si bien que ça en local.
Mais de toute façon, et comme tu peux le remarquer dans mes petites fonctions je détruis le contenu dans les cookies et les sessions et non les cookies et sessions eux mêmes.
Mais c'est vrai que mon sujet portait au début sur la destruction des variables sessions c'est juste que dans mon site je veux vider par moment par ex en cas de connexion à nouveau sans perdre les variables et détruire en cas de totale déconnexion.
Salut,
...l'équivalent de ta fonction "session_empty()" c'est juste $_SESSION = []; donc pas la peine d'une fonction pour cela
Au passage évites d'utiliser les opérateurs "and" et "or" car c'est piégeur dans certains cas. L'utilisation de "&&" et "||" répond à la logique généralement attendue (précédence des opérateurs), si bien qu'on utilise ces opérateurs quasi systématiquement pour éviter de se poser des questions à ce niveau là. Et quand c'est plus opportun d'utiliser "and" et "or" alors on commente le code pour expliquer pourquoi on fait cette exception. Cela fait gagner beaucoup de temps quand on a ensuite plusieurs milliers de lignes de code à relire![]()
Partager