Avatar billede survivor Nybegynder
20. oktober 2004 - 22:20 Der er 7 kommentarer

Log Ud problemer!

Jeg kan ikke få min log ud side til at logge ud er der nogen der har forslag til en kode til en log ud side på grunlag af denne kode?
<bruger.php>
<?
class bruger{
    var $brugernavn, $kodeord;

    function bruger(){
    if(isset($_SESSION["brugernavn"]) &&
        isset($_SESSION["kodeord"]))
      $this->log_ind($_SESSION["brugernavn"], $_SESSION["kodeord"]);
  }

  function log_ind($brugernavn, $kodeord){
    $bruger_slash = addslashes($brugernavn);
    $kode_slash = addslashes($kodeord);
    $foresp = mysql_query("SELECT * FROM bruger ".
          "WHERE brugernavn = '$bruger_slash' AND ".
          "kodeord = '$kode_slash'");
    if(mysql_num_rows($foresp) == 1){
      $this->brugernavn = $brugernavn;
      $this->kodeord = $kodeord;
      $_SESSION["brugernavn"] = $this->brugernavn;
      $_SESSION["kodeord"] = $this->kodeord;
      return true;
    } else {
        $this->log_ud();
      return false;
    }
  }

  function log_ud(){
    if($this->logget_ind()){
              unset($this->brugernavn);
              unset($_SESSION["brugernavn"]);
              unset($this->kodeord);
              unset($_SESSION["kodeord"]);
              return true;
    } else
              return false;
  }

  function logget_ind(){
    if(isset($this->brugernavn) && isset($this->kodeord))
      return true;
    else
      return false;
  }

  function opret($brugernavn, $kodeord){
    $bruger_slash = addslashes($brugernavn);
    $kode_slash = addslashes($kodeord);
    $foresp = mysql_query("SELECT * FROM bruger ".
              "WHERE brugernavn = '$bruger_slash'");
    if(mysql_num_rows($foresp) != 0)
      return false;
    else{
      mysql_query("INSERT INTO bruger (brugernavn, kodeord) ".
          "VALUES ('$bruger_slash', '$kode_slash')");
      return true;
    }
  }

  function fjern($brugernavn){
    $bruger_slash = addslashes($brugernavn);
    $foresp = mysql_query("SELECT * FROM bruger ".
              "WHERE brugernavn = '$bruger_slash'");
    if(mysql_num_rows($foresp) != 1)
      return false;
    else{
      mysql_query("DELETE FROM bruger ".
          "WHERE brugernavn = '$bruger_slash");
      return true;
    }
  }

  function hent_brugernavn(){
    if($this->logget_ind())
          return $this->brugernavn;
    else
        return "";
  }

  function hent_kodeord(){
    if($this->logget_ind())
        return $this->kodeord;
    else
        return "";
  }

  function ret_kodeord($kodeord){
    if($this->logget_ind()){   
    $bruger_slash = addslashes($this->brugernavn);
    $kode_slash = addslashes($kodeord);
    mysql_query("UPDATE bruger ".
        "SET kodeord = '$kode_slash' ".
        "WHERE brugernavn = '" . $bruger_slash . "'");
    $this->kodeord = $kodeord;
    $_SESSION["kodeord"] = $kodeord;
    return true;
      } else
    return false;
  }
}
?>

som du/i kan se har jeg lavet funktionen men jeg kan ikke få den til at fungerer når jeg refererer fra en side som fx hedder <logout.php>
Avatar billede dcheng Novice
20. oktober 2004 - 22:45 #1
Avatar billede dcheng Novice
20. oktober 2004 - 22:47 #2
eller brug session_unset() i stedet for unset()
Avatar billede survivor Nybegynder
20. oktober 2004 - 22:58 #3
Jo jeg kunne godt bruge en session_destroy(), og det har jeg prøvet men det virker ikke! DESVÆRRE!
Avatar billede dcheng Novice
20. oktober 2004 - 23:03 #4
Det er sku underligt... Prøv lige check om du får nyt session id eller om du beholder den efter en destroy..

Hvis du får samme session id så er der sandsynligvis noget i vejen med konfigurationen af php..

Hvis du får et nyt så er det helt klart noget konflikt på din side.. (Hvis det er det så tror jeg at vi skal bruge nogle flere stykker at dit script....)

I øvrigt står session_start() som det første i dit script?
Avatar billede Slettet bruger
21. oktober 2004 - 00:10 #5
Jeg havde også en gang et problem med at sessionsvariable ikke gad at forsvinde. Jeg løste det ved at sætte dem til '' og teste med empty()
Avatar billede sukos Juniormester
21. oktober 2004 - 05:19 #6
Når du bruger $_SESSION, vil den korrekte måde at sætte den på være

$_SESSION["brugernavn"] = $brugernavn;
$_SESSION["kodeord"] = $kodeord;

(hvorfor registrere password?)

Og for at slette en session, sat med $_SESSION

$_SESSION[] = array();
session_destroy();

i stedet for

unset($this->brugernavn);
unset($_SESSION["brugernavn"]);
unset($this->kodeord);
unset($_SESSION["kodeord"]);
Avatar billede sukos Juniormester
21. oktober 2004 - 05:19 #7
Hov,

$_SESSION[] = array();
session_destroy();

skal være

$_SESSION = array();
session_destroy();
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