Avatar billede allandk Nybegynder
14. juli 2003 - 21:26 Der er 8 kommentarer og
1 løsning

Hvordan smadrer jeg effektivt ALLE vars på en side?

Jeg bruger sessions til at overføre mine vars, men af en eller anden grund kan jeg ikke smadre dem allesammen ved logout-siden (se nedenfor).

I min menu som viser en if/else version afhængig af om man er logget på eller ej viser stadigvæk Du er logget på-menuen efter jeg har kørt følg.:

<?php
session_start();
$_SESSION = array();
session_destroy();

session_unregister($Name);
session_unregister($alias);
session_unregister($email);
session_unregister($password);

$_SESSION['Name'] = "NULL";
$_SESSION['alias'] = "NULL";
$_SESSION['email'] = "NULL";
$_SESSION['password'] = "NULL";

session_unset()
unset( $_SESSION['Name'], $Name );
unset( $_SESSION['alias'], $alias );
unset( $_SESSION['password'], $password );
unset( $_SESSION['email'], $email );

header("Location:login.php");
exit;
?>

Logoutisden er er i øvrigt inspireret af sukos mysql-login-system der virker aldels glimrende, bare ikke med min udbygning :-)
Nogle ideer eller synlige fejl?
Avatar billede googolplex Novice
14. juli 2003 - 21:29 #1
session_unset();
Avatar billede googolplex Novice
14. juli 2003 - 21:30 #2
session_unset();
session_destroy();

Det burde altså smadre dem alle, jeg bruger det selv.
Avatar billede bearhugx Nybegynder
14. juli 2003 - 21:44 #3
i hvert fald når du ikke langt med sætninger som :
$_SESSION['Name'] = "NULL";

Det eneste du gør her er at oprette/rette en sessionvar Name til at have værdien "NULL" (som er en streng - ikke null)

Jeg mener også at googolplex' kode burde være tilstrækkelig.

dvs.
<?php
  session_start();
  session_unset();
  session_destroy();
  header("Location:login.php");
?>

forresten.... er du sikker på at du ikke skal have et ; efter
  session_unset()
??
Avatar billede allandk Nybegynder
14. juli 2003 - 22:20 #4
Jeg takker. Jeg har ikke fået det til at virke, men er i det mindste blevet klogere på, hvordan jeg lukker af for sessions. Fejlen må ligge i en af mine inkluderede sider der evt. holder min session i live :--(
Avatar billede googolplex Novice
14. juli 2003 - 22:43 #5
Hvilken form for login er det du gerne vil lave ?
Avatar billede bearhugx Nybegynder
14. juli 2003 - 22:46 #6
evt. så lav en fil - logout.php - som ikke laver andet end at dræbe sessionen og derefter sende brugeren videre til f.eks. index-siden....

dvs. intet include af indhold eller noget....
Avatar billede allandk Nybegynder
15. juli 2003 - 00:18 #7
Jeg har lavet en fil kun med dette indhold:

<?php
  session_start();
  session_unset();
  session_destroy();
  header("Location:login.php");
?>

Når jeg så checker i tmp-mappen ligger der alligevel en session-fil med værdien: alias|N;password|N;

Den bør vel være tom eller slettet. Ikke sandt?

Målet er bare at lave et stjernesimpelt login a la sukos eksempel, hvor man logger på og har adgang til alle sider. Når man logger af (via logud-php med unset-historien) så ændres menuen til standard fremfor personlig.
Avatar billede bearhugx Nybegynder
15. juli 2003 - 00:22 #8
Hmmm - underligt -

Til et projekt, jeg lavede for et stykke tid siden var følgende nok
<?php
    session_start();
    session_destroy();
    header("Location: index.php");
?>

prøv at fjerne session_unset();
Avatar billede bearhugx Nybegynder
15. juli 2003 - 00:26 #9
der havde jeg kun én variabel i sessionen - nemlig et user-objekt --- men det skulle ikke have nogen betydning

for at du kan sammenligne, så er min logon.php lavet således
<?php
    require("inc/conn.inc.php");
    require("inc/class.Administrator.php");
    session_start();
    unset($_SESSION["user"]);
   
  if( isset($_REQUEST["usr"]) && isset($_REQUEST["pwd"]) ) {
    $query = "SELECT * FROM Administrator WHERE initialer='".$_REQUEST["usr"]."' AND password='".md5($_REQUEST["pwd"])."';";
    $result = mysql_query($query);
    if( mysql_num_rows($result) == 1 ) {
      $row = mysql_fetch_object($result);
      $user = new Administrator( $row->id, $row->navn, $row->initialer, $row->sygehus );
      $_SESSION["user"] = $user;
      header("Location: administratorIndex.php");
    } else {
            header("Location: index.php");
    }       
  } else {
        header("Location: index.php");
  }
?>
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