• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Login umgehen wenn Session aktiv

fabian96

Neues Mitglied
Hallo zusammen. Ich arbeite gerade an einer Website und habe da ein login. Wenn das Login erfolgreich war, startet eine Session, damit man angemeldet bleibt wenn man die Seite verlässt. So weit so gut. Nun kommt allerdings wenn ich die Seite verlasse und dann wieder zurückkomme wieder die login maske. Daneben steht zwar Eingeloggt als [Username], allerdings möchte ich nicht die Login maske sehen sondern die direkt weitergeleitete Seite.

Session:
PHP:
<div id="content_right">

    <ul id="navi">
        <?php
            //Wenn Session "username" existiert wird der Name angezeigt und ein Link um sich abzumelden
            if(isset($_SESSION["username"]))
            {
        ?>
                <p>Eingeloggt als <?php echo'$username'?> <?php $_SESSION["username"]; ?></p>
                <li><a href="abmelden.php">Abmelden</a></li>
    <?php } ?>
           
        <?php
           
            if(!isset($_SESSION["username"]))
            {
            echo 'Sie müssen angemeldet sein um diesen Teil zu betreten';
            }
?>
</div>


Loginmaske:

PHP:
<?php
//Wenn das Formular abgeschickt wurde passiert folgendes:
if (!empty($_POST)) {
$username = $_POST["username"];
$passwort = md5($_POST["passwort"]); //Mit md5 wird das Passwort verschlüsselt abgespeichert

//Liest Username und Passwort aus Datenbank aus um kontrollieren, dass es diesen gibt
$abfrage = "SELECT Username, Passwort FROM t_user WHERE Username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

//Wenn das Passwort zum entsprechenden user stimmt wird Session "username" gestartet
if($row->Passwort == $passwort)
    {
    $_SESSION['username'] = $username; //Erstellt Session "username"
    header('Location: spielerbereich.php');//Leitet weiter
    }
//Wenn Login daten falsch sind
else
    {
    echo "Logindaten sind falsch";
    }
}
?>
<?php
                            include("php/navigation_right.php"); //Warenkorb wird angezeigt
                        ?>

Danke im Voraus
 
In jedem Script steht am Anfang ein session_start() ?

Und was soll denn das werden:
PHP:
<?php echo'$username'?> <?php $_SESSION["username"]; ?>
 
Tja, da wir nur bruchstückweise den Quellcode sehen (der auch noch schlecht geschrieben ist und HTML-Fehler enthält), bleibt nur:

Richtig debuggen

1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
 
Zurück
Oben