Avatar billede googolplex Novice
04. april 2003 - 15:34 Der er 4 kommentarer og
1 løsning

Sessions begynder hjælp

4 Spørgsmål, 1 'stort' og 4 små...

Jeg har følgende kode i toppen af min index.php:

<?php
session_start();

if ($_POST["logout"]) {
    session_destroy();
}

if ($_POST["navn"]) {
    $navn = $_POST["navn"];
    $_SESSION["navn"] = $navn;
}
?>

..samt følgende kode lidt længere nede:

<?php
if (!$_SESSION["navn"]) {

?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<fieldset>
  Navn:<br />
  <input type="text" name="navn" value="" />
  Password:<br />
  <input type="password" name="password" value="" />
  <input type="submit" name="login" value="Login" />
</fieldset>
</form>

<?php
} else {
    echo "Velkommen " . $_SESSION["navn"] . "!";
?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<fieldset>
  <input type="submit" name="logout" value="Logout" />
</fieldset>
</form>

<?php
}
?>

Jeg kan sagten logge ind, men når jeg efterfølgende trykker på logout, skal jeg trykke TO gange før den logger af.

1. Hvad gør jeg galt ?

2. Er det en god ide at bruge: header("Cache-control: private");

3. Skal jeg bruge 'session_register' eller ej ?

4. Har jeg i det hele taget opbygget det på dem rigtige måde ?
Avatar billede repox Seniormester
04. april 2003 - 16:39 #1
prøv at skrive:
session_unregister("navn");
session_destroy();
eller
unset($_SESSION['navn']);
session_destroy();

session_register skal bruges for at registrere sessionen...
Avatar billede googolplex Novice
04. april 2003 - 16:44 #2
Jep, det hjalp :)

Men skal jeg så bruge session_register("name"); ? Jeg har læst at man ikke bør bruge denne med PHP v4.1.0 ?!

Havde jeg ellers stillet det rigtigt op (første forsøg) ?

Hvad med spørgsmål 2 ?
Avatar billede repox Seniormester
04. april 2003 - 16:54 #3
Altså, fra version v4.0.6 har det ikke være nødvendigt at bruge session_register... Desuden er session_unregister også unødvendigt (ifl. php.net)
så helt korrekt nu skriver man
$_SESSION['navn'] = "detnavnmanbruger"; //eller en variabel, selvfølgelig
så er sessionen registreret og virker fint...

Og hvis du har register_globals=Off er den korrekte måde at slette den på:
unset($_SESSION['navn']);

alternativt kan du jo indsætte session_destroy()

Med hensyn til din opstilling, så er det jå egentlig så'n at så længe det virker for dig, så er det stillet rigtigt op for dig, men det er jo ikke sikkert andre kan finde hoved eller hale i det du har lavet...

Og spørgsmål to ? Tja, jeg synes det er unødvendigt men der sker jo ingen skade...
Avatar billede googolplex Novice
04. april 2003 - 16:58 #4
Hvis jeg bruger unset($_SESSION['navn']); er det så helt unødvendigt at bruge session_destroy; ?

Kaster du ikke lige et svar :)
Avatar billede repox Seniormester
04. april 2003 - 17:02 #5
Det skulle ifølge php.net ( http://www.php.net/manual/en/ref.session.php ) være helt unødvendigt at bruge session_register(), session_unregister() og session_is_registered() og de bruger ikke selv session_destroy i nogle af deres eksempler, men dermed ikke sagt at den ikke er god at bruge!
Personligt ville jeg nok sætte den efter af sikkerhedsprincipper...

:)
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