16. april 2004 - 10:37Der er
21 kommentarer og 1 løsning
Slette kun en session.
Jeg sidder og arbejder med en indkøbskurv. For at benytte systemet skal man være logged ind. Her benytter jeg mig af to sessions: $_SESSION["useradmin"] og $_SESSION["passwdadmin"],
min indkøbskurv her sessionen $_SESSION['shopcart'].
Når jeg vil tømme kurven med følgende script smider den mig ud af systemet. Hvad gør jeg galt, mangler jeg nogle variabler?
<a href='main.php?empty=True'>Tøm shopcart</a>
if (isset($_GET['empty'])){ unset($_SESSION['shopcart']); }
Skal virksomheder stå stærkere mod angreb og kunne udvikle sig, skal sikkerhed, drift og forretning tænkes sammen. Det er tanken bag Jysk IT’s ambition om at skabe en “sikker fremtid” for kunderne.
Hmm du har ikke forklaret hvad der ligger i $_GET['empty']; endnu? mit bud ville være at $_GET['empty'] ikke er sat, og derfor smider den dig ud af systemet.. Jeg ville have skrevet
if (isset($_SESSION['shopcart'])){ unset($_SESSION['shopcart']); }
Eller hov nu ser jeg heller ikke helt efter.. når du skriver "smidt ud af systemet" mener du vel at _SESSION["useradmin"] og $_SESSION["passwdadmin"] også bliver unset?
<a href='main.php?empty=True'>Tøm shopcart</a> Definere at empty er sand og derfor skulle den unset sessionen, det gør den også men alla sessions unsettes!
$_SESSION["useradmin"] og $_SESSION["passwdadmin"] er samme session. Een bruger har een session. Du har bare flere variabler i samme session. Hvis du vil slette shopcart, så burde unset($_SESSION['shopcart']) virke.
Er du sikker på at der ikke er en anden fejl?
du kan bruge print_r($_SESSION); til at se hvad session'en indeholder. Så kan du tjekke hvad der er i den og hvad der ikke er.
Det jeg mener er at når jeg bruger unset($_SESSION['shopcart']), så sletter den sessionen, således at man bliver smidt ud af systemet. men ved at sætte værdien af $_SESSION['shopcart']) til 0, så forsvinder indholdet, samtidig med at man stadig er på systemet!
Smidt ud af systemet kan være mange ting, alt efter hvordan man bruger sessions. Jeg tvivler meget på at du har slettet din session.
Jeg tror du har fundet et symptom på et andet problem.
Du kan jo teste det <?php $_SESSION['shopcart'] = array(1 => 'etelelrandet'); $_SESSION['erjegher'] = "ja, gu er jeg så :)"; unset($_SESSION['shopcart']); // hvis hele sessionen er slettet, bør næste linje skrive ingenting ud print $_SESSION['erjegher']; ?>
Hmm nu jeg tænker over det... kan det så have noget at gøre med hvilken version af PHP han kører med (dette er nok mere rettet til sebster og dennismp).. Kunne godt være at ældre versioner tolker unset(); anderledes? - men ellebaek, det ville være rart hvis du lige smed et stykke kode ind så vi kunne se lidt på det :D
jelboen: Det har jeg ikke overvejet. Men nu hvor $_SESSION virker (her og i andre spørgsmål), så må man da antaget at da $_SESSION er et array, så bør unset($_SESSION['key']) også virke, da det har virket i lang tid. Så jeg tvivler, men det kunne da være rart at få afkræftet det.
sebster; hvilken version bruger du? (du kan se det med <?php phpinfo(); ?>)
vil det sige, at filen med dette bid php-kode ikke skriver noget ud? (havde glemt at lave en session_start() i toppen). <?php session_start(); $_SESSION['shopcart'] = array(1 => 'etelelrandet'); $_SESSION['erjegher'] = "ja, gu er jeg så :)"; unset($_SESSION['shopcart']); // hvis hele sessionen er slettet, bør næste linje skrive ingenting ud print $_SESSION['erjegher']; ?>
Jeg er sikker på at du har en fejl. Jeg har aldrig haft problemer af den type. Men hvis du har fundet en løsning er det måske nemmest bare at lade det ligge.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.