Problem mit Sessionlogin:

Verdammt.Eigentlich geht das doch gar nicht :mad: :mad: :mad:

Anscheinend ist eine richtige Session abgespeichert, und erst nach einem falschen Login, wird die anders abgespeichert, also falsch.
Wie umgehe ich das Problem?
 
Och lasse das Auch von anderen Testen,
und anscheinend haben sie imemr Zugriff, auch wenn sie nicht eingeloggt sind.
Sie sind noch nicht einmal registriert!
 
Also an deiner Stelle würde ich ganz neu anfangen. Das ganze ist gottseidank nicht so viel!

Zuerst würde ich schauen ob was in der Session steht, dann die Daten in Variablen schreiben. Danach würde ich überprüfen ob das Formular geschickt wurde, und die Daten aus dem Form in die Vars schreiben. Dann würde ich die Vars in der DB überprüfen, ob sie gültig sind. Wenn ja dann die Ausgabe des internen Bereichs ansonsten die Ausgabe der Loginseite

PHP:
session_start();

//Überprüfung der Session
if(isset($_SESSION['member']) && !empty($_SESSION['member']) && isset($_SESSION['pass']) && !empty($_SESSION['pass'])){
    $var_member=$_SESSION['member'];
    $var_pass=$_SESSION['pass'];
}

//Überprüfung der Formulareingaben
if(isset($_POST['submit']) && !empty($_POST['name']) && !empty($_POST['password'])){

    $var_member=mysql_real_escape_string($_POST['name']);
    $var_pass=mysql_real_escape_string($_POST['password']);

}

//MySQL-Abfrage starten
$sql=mysql_query("SELECT id,Mitglied,Passwort,frei FROM spmembers WHERE Mitglied='".$var_member."' AND Passwort='".$var_pass."'") or die(mysql_error());

//Ergebnisse der MySQL-Abfrage zählen
$cnt_query=mysql_num_rows($sql);

//Abfrage überprüfen und entsprechendes ausgeben
if($cnt_query == 1){

    //SQL-Ergebnisse in ein Array schreiben
    $result=mysql_fetch_array($sql);
    echo "Sie sind eingeloggt, ".$result['Mitglied'];
    $_SESSION['member']=$result['Mitglied'];
    $_SESSION['pass']=$result['Passwort'];
    //Oder was du sonst im internen Bereich haben willst

}elseif($cnt_query == 0){ 

    //Hier kannst du dann die Loginseite einfügen.

}else{
    //Sollten mehr als 1 ergebnis sein oder der inhalt von $cnt_query anders als 1 oder 0 sein, wird diese Meldung ausgegeben:
    echo "Ein unbekannter Fehler ist aufgetreten";

}

Der Nachteil an diesem Script ist:
Ich habs gerad erst geschrieben und daher noch nicht ausprobiert und
Es wird JEDES mal ein SQL-Query gemacht, wenn die Seite aufgerufen wird. Aber das kannst du ja selber umbauen wenn du nicht willst dass die SQL-Anfrage immer wieder durchäuft.
 
Zuletzt bearbeitet:
PHP:
<?php
phpinfo();
?>

Mach mal ein solches File und ruf es auf. Dann such, ob register_globals auf on oder off ist. Sofern es auf on ist, ist klar, warum deine Variablen überschrieben werden. Am besten setzt du es sowieso auf off. Warum ist hier nachzulesen: http://de.php.net/manual/de/security.globals.php

@nero: Ja leider. Man hat immer was zu lernen :)
 
Also ich hab keinen Zugriff, wenn ich direkt auf die Seite komm! Aber wenn ich mich mit Falschen Daten einlogge, kommt folgendes:

Code:
Notice: Undefined variable: members in /usr/export/www/vhosts/funnetwork/hosting/petersilies/sp/index.php on line 46

Achtung: Möglicherweise war ihr Login und/oder Passwort nicht korrekt oder sie sind noch nicht freigeschaltet!


Nochmal

Zeig mal den Code den du jetzt hast!
 
Also,
das loginsystem funktioniert, auch wenn da ein notice steht :)

und die Datenbank.php
sieht so aus
PHP:
if(isset($_SESSION['member']) && !empty($_SESSION['member']) && isset($_SESSION['pass']) && !empty($_SESSION['pass']))
{
//pruefen ob Login ind Passwort richtig ist
//formular
}
else echo 'Ungueltige Session';
Also so ungefähr.
Danke nochmal für den Tipp zum prüfen :)
 
Zurück