Session Login schlägt immer fehl

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session Login schlägt immer fehl

    Hallo, ich habe mir eine Klasse geschrieben, die unter anderem folgende Methoden beinhaltet:
    PHP-Code:
    <?php

    class session {

    var 
    $userid        "";
    var 
    $database    "";

    /* Session initialisieren */
    function session(&$database) {
        
    session_start();
        
    $this->database = &$database;
    }

    /* User einloggen */
    function login($id ""$password "") {
        if(empty(
    $id) OR empty($password)) {
            
    $this->error("Login fehlgeschlagen");
        }

        
    $this->userid $id;

        
    $sql "SELECT * FROM wpc_user WHERE id = '$id' AND password = '$password'";
        if(!
    $this->database->query($sql)) {
            return 
    FALSE;
        }

        
    session_register($id);
        
        
    $sql "INSERT INTO wpc_user (session) VALUES ('$PHPSESSID')";
        if(!
    $this->database->query($sql)) {
            return 
    FALSE;
        }

        return 
    TRUE;
    }

    /* Prüfen ob User eingelogged ist */
    function logged_in($id "") {
        if(empty(
    $id)) {
            return 
    FALSE;
        }

        if(!
    session_is_registered($id)) {
            return 
    FALSE;
        }

        return 
    TRUE;
    }

    }

    ?>
    Nun rufe ich über eine Loginseite die Methode login() auf. Die Datei sieht im Moment so aus:
    PHP-Code:
    <?php

    include("mysql.php");
    include(
    "template.php");
    include(
    "session.php");
    include(
    "parser.php");

    $username    "+";
    $password    "+";
    $database    "+";
    $host        "+";
    $backupdir    "+";

    $db        = new mysql($username$password$database$host);
    $tpl    = new template($db$backupdir);
    $sess    = new session($db);
    $par    = new parser(TRUETRUE);

    $sess->login(1"lalala");

    ?>
    Dies geht ist auch erfolgreich. Stelle ich auf die selbe Seite eine Abfrage mit $this->logged_in(1); sagt er mir, ich sei eingelogged. Frage ich nun aber auf einer anderen Seite ab, sagt er mir immer, ich sei nicht eingelogged. Woran liegt das? Der Code der anderen Seite:
    PHP-Code:
    <?php

    include("mysql.php");
    include(
    "template.php");
    include(
    "session.php");
    include(
    "parser.php");

    $username    "+";
    $password    "+";
    $database    "+";
    $host        "+";
    $backupdir    "+";

    $db        = new mysql($username$password$database$host);
    $tpl    = new template($db$backupdir);
    $sess    = new session($db);
    $par    = new parser(TRUETRUE);

    if(
    $sess->logged_in(1)) {
        echo 
    "gut";
    }
    else {
        echo 
    "schlecht";
    }

    ?>
    Vielen Dank für eure Hilfe,
    Doerr

  • #2
    vermutlich schlägt das fehl, weil du die session in eine klasse gepackt hast. wenn du eine neue seite aufrufst und dort wieder eine neue instanz der klasse erstelltst, dann wird auch eine neue session erstellt ...

    grüsse cb
    Hans Matthöfers Widerspruch zur Expertenerkenntnis: Künstliche Intelligenz ist besser als natürliche Dummheit.

    Kommentar


    • #3
      Und wie umgehe ich das Problem?

      Kommentar


      • #4
        in dem du die session nicht in eine klasse packst, sondern in der aufgerufenen Datei erstellst / registrierst / startest ...

        also auf jeder seite am anfang ein session_start(),
        auf der startseite die Variable (Array?) initialisieren und die session registrieren ...

        <shrugs> was soll ich mehr sagen ?

        mir fällt also keine methode ein, mit der man eine member-variable einer klasse aus der klasse behalten könnte, nachdem die instanz der klasse wieder gelöscht wurde (z.B. nach aufruf einer neuen seite ...)

        vielleicht weiss ja hier jemand, wie man die instanz einer klasse auf eine andere seite "rüberretten" kann ? evtl. kann man die instanz wieder in eine session variable schreiben ? (watt aba totala kwatsch is IMHO)

        grüzze
        cb
        Zuletzt geändert von i2dx; 27.02.2003, 15:44.
        Hans Matthöfers Widerspruch zur Expertenerkenntnis: Künstliche Intelligenz ist besser als natürliche Dummheit.

        Kommentar

        Lädt...
        X