Session soll überschrieben werden.

Acriss

Gesperrt
Hi,
ich habe schon wieder ein sehr merkwürdiges Problem:

Ich habe ein Loginsystem mit Sessions, und dazu folgenden Code:

PHP:
<?php
//......
else
	{

         $_SESSION['member'] = mysql_real_escape_string($_POST['Login']);
         $_SESSION['pass'] = mysql_real_escape_string($_POST['Password']);

         $login =  mysql_real_escape_string($_POST['Login']);

         $select = "SELECT id FROM zeitschlacht WHERE Mitglied = '$login'";
         $query = mysql_query($select) or die (mysql_error());

         while ($check = mysql_fetch_array($query, $connect))
         	{
                 $_SESSION['id'] = $check[0];
                 }
?>

Mein Problem:
Es sind ein paar Accounts dort registriert.
Ich komme mit folgendem Account aber nicht hinein:
Login: Testaccount
Pass: xgh234

Mit allen anderen Account komme ich rein.

Kann es daran liegen, das der Account im Passwort Zahlen und Buchstaben enthält,
oder der neuste ist?

Das unterscheidet ihn nämlich von den anderen.

Ich habe nochmal ein paar Tests durchgeführt, udn komme zu folgendem Ergebnis:

Durch irgendetwas, warscheinlich das Passwort wird die Session['id'] nicht überschrieben,
udn ich kann mich nicht einloggen.
Wie umgehe ich das?
 
Hi

Du gibst ja nicht sehr viel von Deinem Script preis, aber in dem, was Du hier veröffentlichst, hat das Passwort nix mit der Generierung der $_Session['id'] zu tun.

Lass Dir doch mal die SQL via echo ausgeben, dann sieht man schon mal, ob überhaupt ein Wert übergeben wird.
 
Ok,
da ergibt sich folgendes:
SELECT id FROM zeitschlacht WHERE Mitglied = 'Testaccount'

So soll es doch sein, die ID bleibt aber trotzdem die alte -.-
 
Hi,
Jo, die id sollte in dem Fall "richtigerweise" die alte sein, nämlich die, die Du Dir über $check[0] in die Session einliest, wenn Testaccout als Bedingung für den Datensatz stimmt. Die ID sollte eindeutig sein, d.h., nicht doppelt vorkommen.

So soll es doch sein, die ID bleibt aber trotzdem die alte -.-

Welchen Wert soll die id denn bekommen? :confused:
 
Ich habe mich vorher mit einem Account eingeloggt, der hatte die ID 1

Da ich bei den ID's auto_increment verwende, ist ausgeschlossen, das welche doppelt vorkommen.

Der Testaccount hatte auch ID 1.
Wenn ich mich aber mit wieder einem Anderen Account einlogge, enthält dieser, richtigerweise, die ID 7.
Melde ich mich wieder mit Testaccount an, enthält er auch 7 -.-

edit:
Für Testaccount ist eigentlich id 8 vorgesehen.
 
Zuletzt bearbeitet:
Hallo

nein, ich komme nicht rein.

Aber ganz davon abgesehen, ich denke mal, hier liegt ein Verständigungsproblem an.
Also ich bin mir nicht sicher, ob ich Dich wirklich richtig verstehe.

Setz einfach mal beide Bedingungen (suchen nach Mitglied und Passwort) in der SQL ein. Vielleicht ergibt das eine Eindeutigkeit bei Dir.
 
Aber dann gibt es doch irgendwie das Problem, das man sich nicht einloggen kann.

Und zwar mit einem Account, der ein Passwort mit Buchstaben UND Zahlen hat.


Wie suche ich denn nach 2 Dingen,
ich hatte es schon einmal mit AND probiert, das erzeugte lediglich einen Fehler -.-
 
Guten Morgen,

ein Passwort sollte immer aus einer Kombination von Zeichen und Buchstaben bestehen.

Ich sehe allerdings nur in Deinem Fall nicht, was das Passwort mit der Session zu tun hat.

Vielleicht reden wir auch aneinander vorbei, vielleicht hat das Passwort noch irgendeinen Zweck, den Du weißt, welcher uns aber verborgen ist.

Zusammenfassend kann ich nur für mich verstehen

Die ID wird generiert aufgrund des Vergleichs von Feld Mitglied mit dem Wert aus dem Formularfeld Login, wenn die Übereinstimmung stimmt. Der Testwert heißt Testaccount. Hier soll die ID des Datensatzes mit dem Mitglied Testaccount in eine Session geschrieben werden. Warum das nicht funktioniert, ist aus dem Scriptteil, den Du gepostet hast, nicht zu erkennen.

Ich persönlich würde folgende Vorgehensweise bevorzugen und bin auch dann mit meinem Latein an dieser Stelle am Ende.

PHP:
  $query = sprintf("SELECT id, benutzer, passwort, gruppe, name 
  			FROM login WHERE benutzer=%s AND passwort=%s",
  				quote_smart($LoginUsername), 
				quote_smart($LoginPasswort)); 
   
  $LoginRS = mysql_query($query) or die(mysql_error());
  
  // Auslesen der mysql_num_rows
  $FoundUser = mysql_num_rows($LoginRS);
  if ($FoundUser) {
    
	$_SESSION['UserRechte']  = mysql_result($LoginRS,0,'gruppe');
	$_SESSION['UserID']	 = mysql_result($LoginRS,0,'id');
	$_SESSION['UserName']	 = mysql_result($LoginRS,0,'name');
	//...
	} else {
	
	//
}
 
Zurück