Get Methode und Login

Steeven

Mitglied
Hi,

also ich hab da noch nicht so den Überblick, aber ich will einen Login bei mir realisieren und nichts haut hin was ich mache. Ich hab einen kleinen Loginbereich an der rechten Seite gebaut und den mittels invlude auf allen Seiten drin. Jetzt hab ich versucht das Ding über Cookie hinzubekommen. Also wenn sich der User anmeldet dann die Abfrage mit der Datenbank und wenn dieser dann eingeloggt soll er auch überall eingeloggt bleiben, deshalb den Cookie. Aber er meckert bei mir die Get-Methode

if($_GET['do'] == "login"){


verstehe ich überhaupt nicht was daran falsch ist.

Ich habs über sessions versucht mit einer sid, die in der Datenbank gespeichert wird, aber was ist wenn der User einfach das Browserfenster schließt, dann bleit diese sid drin, ist natürlich auch doof.

Hat denn wer eine Lösung? Irgendwie muss doch das gehen.

Gruß

Steeven
 
Also es gibt zu diesem Problen natürlich mehrere Möglichkeiten, welche du nimmst hängt stark davon ab wie du das Verhältnis Sicherheit <-> Komfort wählst. Die vielleicht einfachste und gleichzeitig einigermasen sichere Möglichkeit ist eine eigene ID für jeden User zu setzten. Du hast wahrscheinlich eine Tabelle in der Mysql-Datenbank in der jeder User gespeichert ist. Für diese Methode brauchst du die Felder ID, username und password, des versteht sich fast von selbst. Beim Login überprüft die Seite über "SELECT username, password FROM USER_TABELLE WHERE username='$username'", überprüfst ob sowohl Username als auch Passwort übereinstimmen, wobei eine md5-codierung des Passwortes sinnvoll ist. Sollten die Daten richtig sein, erstellst du eine neue ID und setzt diese für den User. Auf allen Seiten, die "geschützt" sein sollen, überprüfst du am Anfang einfach die ID.

Hier wäre ein Beispiel zum Finden einer neuen ID:
PHP:
do
{
        $key = '';
        while(strlen($key) < 20)
        {
                $char = mt_rand(48, 90);
                if(($char >= 48 && $char <= 57) || ($char >= 65 && $char <= 90))
                        $key .= chr($char);
        }
        $id_test = mysql_fetch_object(mysql_query("SELECT ID FROM USER_TABELLE WHERE ID='$key'"));
}
while($id_test->id == $key);
mysql_query("UPDATE USER_TABELLE SET ID='$key' WHERE username='$username'");

Hoffe ich konnte dir weiterhelfen.
MfG, Pascal

PS: Sollte dir die Methode nicht sicher genug sein, hätte ich noch eine Methode die ich selbst anwende, und die absolut sicher ist, allerdings sehr auf Kosten des Komforts :)
 
ne, verstehe ich jetzt nicht. Ich hab eine Datenbank, dort einmal Tabelle Kunden und Tabelle login. In der Tabelle login speicher ich die Session ID. Durch eine ID in der Tabelle wird durch die Relation zur ID in Tabelle Kunden ja der Kunde eindeutig zugewiesen.

Einen geschützten Bereich gibts hier nicht, weil das soll ein Shop werden. Wenn der Kunde sich einloggt dann hab ich alle Daten von ihm wenn er was bestellt. Daher auch das mit der Session ID.

Aber was ich nicht verstehe ist der Loginbereich.

Ich hab das Skript:

PHP:
//Loginvorgang

	if((isset($pass)) and ($pass!='') and ($email!='')){ 

	$sql=mysql_db_query("$DBName","SELECT * FROM kunde WHERE Email='$email'and Passwort='$pass'")or DIE ("Fehler");

	$kunde=mysql_fetch_row($sql);

				if( $kunde[11] == $pass)

				{

				$datum= time();

				$sql = mysql_db_query("$DBName","INSERT INTO login (sid,KundenNr,Datum) VALUES ('$sid',$kunde[0],$datum)") or die ("Es ist ein Fehler Aufgetreten bitte überprüfen Sie ihre Login Namen und das Passwort");
				
				
				}

				else{$Login_Versuch=fail;}
	}

	if((isset($pass)) and (($pass=='') or ($email==''))){$Login_Versuch=fail;}

?>

sollte eigentlich klappen aber klappt nicht. Weil beim Login muss ja eine action passieren also zur anderen Seite oder so, aber da ich dieses Loginfeld als include in allen Seiten einbinde geht das so nicht. Loginfeld soll sich ja nur verändern wenn User angemeldet ist in Du bist eingeloggt oder wenn nicht, dann sollen die Eingabefelder erscheinen, falls falsch eingegeben, dann soll darunter ... erscheinen. Es muss aber immer die gleiche PHP-Datei sein.
Ich weiß keinen Rat mehr wie das umzusetzen geht. Zudem noch das Problem, wenn der User das Fenster schließ dann automatisch die Session aus der Datenbank schmeißt.

Gruß

Steeven
 
Died er denn bei den Mysql-Querys? Wäre gut das zu wissen. Desweiteren: Bist du dir sicher das das Feld 11 in deiner Datenbank auch das Passwort ist? Ich empfehle statt der Funktion mysql_fetch_row eher mysql_fetch_object, welche dir statt eines Arrays ein Objekt zurückgibt in dem das Passwort dann unter $kunde->Passwort gespeichert ist. Desweiteren würede ich gerne ssehen wo die Variable $sid initialisiert wird.
MfG, Pascal
 
hi,

also died macht er richtig, er legt die Session ID auch in die Datenbank ab. Session ID sieht so aus

session_start();
session_name("sabotaz");
$sid=session_id();

Gruß

Steeven
 
ja das ist mir ja klar, daß dann get hingehört, habs ja wieder umgeschrieben, aber alles funktioniert einfach nicht. Kapier den mit der Session nicht und mit den Cookie auch nicht. Nix funktioniert, Deine Links sind leider auch nicht hilfreich.
 

Neue Beiträge

Zurück