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 !
Moi j'utilise session_destroy()
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
avec $_Session=[] je perd les clés avec
là je met à null les valeurs pour chaque clés du tableau c'est un peu différent mais je ne perd pas les clés ! Non ?
Ok entre and et && et or et || ! Ceux sont les opérateurs en C qui sont à l'origine du langage PHP. Non ?
and et or ont été rajouté pour évaluer les deux variables en même temps, c'est ça ?
and et or ne sont plus des expressions logiques classiques mais quasiment des affectations à évaluer :
$a and $b <=> ($a =true OR false) AND ($b = TRUE OR FALSE)
$a or $b <=> ($a =true OR false) OR ($b = TRUE OR FALSE)
Et tu veux en faire quoi de ces clés si elles ne sont plus définies ? Quand on efface toutes les variables de sessions c'est qu'on en a plus besoin alors pourquoi voudrais-tu que les clés soient persistantes, dans quel contexte cela peut-il t'être utile ?
pour pouvoir après une connexion pouvoir se reconnecter avec les memes cookies par ex qui ont les memes noms que les clés de la session mais pas avec les memes valeurs.
et en cas de fin de time () pour les cookies réinitialiser les cookies sur une nouvelle session avec les clés et nouvelle valeurs.
Tout cela selon des contextes différents si la session est "active", "none", ou "disabled".
Je vois toujours pas mieux à quoi ça peut servir, enfin bon si t'as envie de te compliquer la vie...
bien pour moi ça a 2 utilités :
niveau sécurité :
si la personne au moment de se connecter créé le cookie et même si je lui autorise 3 ou n fois d'entrer un nom et prénom valide pour sa session
je les compares au cookie et aux tentatives d'entrée en session et aux données de la base de données et ça renforce pour moi car même si il supprime ses cookies c'est une manip supplémentaire ce qui peut être fastidieux, d'autant que si je supprime les cookies et blackliste dans la base ce genre de tentatives, c'est encore plus long
mais ceci j'y ai pensé après mais au départ :
c'était pour une fois connecté correctement il puisse entrer un pseudo différent pour des sessions différentes tout en étant correctement connecté tout de suite grace aux cookies, session et comparés avec les noms enregistrés dans la base.
mais c'est peut-être plus simple ?
mais pour moi ne connaissant pas bien toutes les fonctions php liées aux sessions et cookie ça avait l'utilité par contre pour moi d'apprendre à les manipuler !
Voilà pour mes raisons !
Tout ça m'a l'air d'une usine à gaz qui ne fonctionne même pas.
Je ne comprends pas même pas ton objectif.
Quelque soit ton idée, une session PHP ne sert que durant une navigation. Donc vouloir garder la structure du tableau de session plutôt que de tout effacer n'a pas de sens.
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Oui là tu t'égare. Les systèmes d'authentifications php sont largement documentés. Renseignes-toi en lisant des doc ou des tutos à ce sujet plutôt que d'essayer d'improviser. Techniquement pour éviter de se faire pirater l'identifiant de session on utilise https.
Oui c'est vrai vous avez tous entièrement raison
Mais j'avoue que c'était surtout pour apprendre à manipuler les fonctions php lié aux sessions et cookies. J'ai tendance à travailler à comme ça pour apprendre je me lance un défi seul pour comprendre par moi même un sujet méconnu et un problème sur mon site en sachant que je suis obligé par passer par l'étude de pleins de fonctions sur le sujet sur php.net.
Ensuite je vais voir les tutos sur le sujet "sécurité" etc... par ex et je me fais même des notes d'ailleurs sur ce que je devrais faire une fois le site à peu près stable à mon gout . Après je pose mon problème sur le forum quand je pense avoir épuisé mes capacités d'analyse sur php.net à propos de chaque problème.
Mais j'ai d'ailleurs résolus mon problème et c'est vrai que c'était une usine à gaz et de moins en moins d'ailleurs car je vois mieux la structure de mon site par rapport à mes sessions et mes cookies comment ils sont réactualisés donc je supprime les codes redondant, les nombreux messages commentaires,... pour voir plus clair et faire plus propre.
Et de nouveaux problèmes différents arrivent ensuite... C'est pas ça la vie d'un codeur !
C'est pas la bonne méthode! C'est comme si un apprenti maçon regardait une truelle sous tous ses angles pour savoir comment il pourrait bien s'en servir.
C'est sur l'objectif qu'il faut concentrer ses recherches, par exemple dans ton cas, "authentification php" te montreras comment utiliser correctement les sessions pour une authentification.
Les fonctions sont prévues pour être utilisées dans un certain contexte. C'est donc le contexte qui détermine les fonctions à utiliser. Si tu cherches à les utiliser en dehors de ce pourquoi elles sont conçues tu vas finir par perdre beaucoup de temps, d'efficacité et de sécurité. Commence par prendre modèle sur les bonnes pratiques avant de jouer aux apprentis sorciers
C'est ça la vie d'un codeur
en période d'apprentissage de nouvelles fonctions ou problème, c'est ma façon de faire.
Même si je regarde aussi les bonnes pratiques en même temps !
Mais même en faisant cela, vu qu'il y a à boire et à manger sur google, et que certaines personnes pourtant apparemment avisés,pro ont des façons différentes de faire et de voir un même problème.
Je suis obligé d'aller voir php.net et voir les fonctions et parfois de demander conseils ici.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager