Sessionbasierter Login klappt nicht :(

  • Heyho!
    Ich hab vor Kurzem versucht, aus einem Ajax-OnePage-Skript etwas ähnliches mit Login zu basteln, was allerdings nicht ganz geklappt hat :huh:
    Die Überlegung:
    - Die index.php prüft, ob die Session steht. Wenn ja, wird alles angezeigt und korrekt eingebunden, wenn nein, wird alles ausgeblendet und evtl. Direkt-URLs zur index.page.php zurückgeleitet.
    - Bei Eingabe vom korrekten Nutzernamen und Passwort wird die Session erstellt
    - Der Rest erklärt sich, denke ich, wenn man den Code durchliest.


    Das Problem:
    - Nach Eingabe der korrekten Daten in der index.page.php erscheint alles richtig und wird erweitert. Klicke ich nun aber auf den Link zur test.page.php loggt sich die Seite aus, lässt alles verschwinden und zeigt den Login. Soweit ja gut, aber die Session wurde erstellt und noch nicht zerstört! Also sollte eigl. die test.page.php eingebunden und angezeigt werden!


    Der Code:
    Die .htaccess leitet die URLs erstmal über die index.php


    Die index.php, die den Login regeln soll


    Die index.page.php, welche $user und $pass liefert.


    Die logout.php

    PHP
    <?php
    session_start();
    session_destroy();
    
    
    
    
    $root = $_SERVER["DOCUMENT_ROOT"];
    header("Location:". $root . "index.php");
    ?>


    Eine test.page.php

    PHP
    <h1>Testseite</h1>
    <p>Sollte nach Login angezeigt werden und nach Logout zur index.php zur&uuml;ckleiten.</p>


    PS: Spoiler wären in Zukunft vielleicht ganz nützlich!


    Fragen zu Details sind erlaubt, schnelle Hilfe erhofft. Warum bleibt die Session nicht bestehen???

  • wo sagst du was in die $_SESSION["angemeldet"] rein soll?





    des weiteren weiß ich nicht ganz was da raus kommen soll
    (isset($session) || $session)
    ist die $session nicht immer isset da du: @$session = $_SESSION["angemeldet"]; schreibst?
    müsste man das || nicht durch ein && ersetzen?
    ich meine jetzt spielt ja bloß die erste abfrage eine rolle: ist $session gesetzt dann true wenn nicht dann false (egal was in der variable nun drinsteht)




    bestimmt bin ich zu dumm um das @ zu verstehen^^

  • Das @ verhindert nur, dass PHP eine Warnung ausgibt. Damit ich nicht ständig prüfen muss, ob es die Variable überhaupt gibt. Macht sich bei der Session aber nur schwer, da man sie vor der if-Klammer definieren müsste, und damit das evtl. "wahr, das ich jetzt benutze, überschreiben müsste.


    Übrigens danke, durch den Einwand mit dem value bin ich auf diese Lösung gekommen:


    Für die, die das mal nachmachen wollen ;)
    Nur aufpassen, dass man im ersten Array auch den Seitentitel von den Links einbaut, sonst wird auch nur der index angezeigt!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!