Avatar billede sebster Nybegynder
16. april 2004 - 10:37 Der 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']);
}
Avatar billede ellebaek Nybegynder
16. april 2004 - 10:40 #1
kan du ikke bare sætte sessionen til '' ?
Avatar billede sebster Nybegynder
16. april 2004 - 10:41 #2
hvad mener du?
Avatar billede ellebaek Nybegynder
16. april 2004 - 10:49 #3
at du i stedet for at slette sessionen bare giver den en tom værdi..
Altså at du ikke giver den noget indhold.
Avatar billede jelboen Nybegynder
16. april 2004 - 11:01 #4
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']);
}
Avatar billede jelboen Nybegynder
16. april 2004 - 11:03 #5
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?
Avatar billede sebster Nybegynder
16. april 2004 - 11:03 #6
<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!
Avatar billede sebster Nybegynder
16. april 2004 - 11:07 #7
Når jeg sætter sessionen til 0 så bliver jeg også smidt ud!

if (isset($_GET['empty'])){
$_SESSION['shopcart']=0;
}

Hvad kan det være!
Avatar billede dennismp Nybegynder
16. april 2004 - 15:38 #8
$_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.
Avatar billede sebster Nybegynder
18. april 2004 - 13:49 #9
Jeg har benyttet mig af unset($_SESSION['shopcart']), men der lukker den hele sessionen.
en hvis jeg sætter den lig nul så forsvinder den!
Avatar billede dennismp Nybegynder
18. april 2004 - 14:01 #10
Hvad er forskellen på lukke og forsvinde? Jeg er ikke helt sikker på at jeg forstår dig.
Avatar billede sebster Nybegynder
18. april 2004 - 14:51 #11
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!
Avatar billede dennismp Nybegynder
18. april 2004 - 15:11 #12
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'];
?>
Avatar billede jelboen Nybegynder
18. april 2004 - 18:50 #13
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
Avatar billede jelboen Nybegynder
18. april 2004 - 18:54 #14
ups... der kom jeg lige til at rode rundt i det... Sebster skal smide noget kode ind.. ellebaek skal ikke noget :D
Avatar billede dennismp Nybegynder
18. april 2004 - 18:57 #15
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(); ?>)
Avatar billede sebster Nybegynder
19. april 2004 - 10:13 #16
Jeg bruger Php 4.2.2. angående kode så brugte jeg:

if (isset($_GET['empty'])){
unset($_SESSION['shopcart']);
}

som dennismp foreslog men den unsettede alle mine sessions.

Derfor bruger jeg nu en løkke som denne og det virker:

if(isset($_SESSION['shopcart']) || isset($_SESSION['shopcart'][$proid])) {
 
  foreach($_SESSION['shopcart'] as $proid => $antal ) {
    $_SESSION['shopcart'][$proid] = 0;
  }
}

Det irritere mig bare at min unset ikke kan virke!
Avatar billede dennismp Nybegynder
19. april 2004 - 10:19 #17
Du har stadig kun een session pr bruger :-)

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'];
?>
Avatar billede dennismp Nybegynder
19. april 2004 - 10:23 #18
Jeg har lige hurtigt søgt changeloggen igennem, den nævner ikke om unset()-problemer med $_SESSION så vidt jeg kan se
Avatar billede sebster Nybegynder
19. april 2004 - 10:30 #19
Jeg havde glemt at slette en linje hvor det stod session_unset($_session[shopcart])

Derfor slettede den hele sessionen. Nu har jeg brugt

if (isset($_GET['empty'])){
unset($_SESSION['shopcart']);
}

Og den sletter også hele indkøbskurven, indtil jeg tilføjer produkter, så henter den de tidligere frem og lægger dem oven i den jeg lige har valgt!
Avatar billede dennismp Nybegynder
19. april 2004 - 10:39 #20
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.
Avatar billede sebster Nybegynder
19. april 2004 - 10:43 #21
Det kan du selvfølgelig ha ret i!
Avatar billede sebster Nybegynder
20. april 2004 - 15:43 #22
Jeg lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester