hab nen problem mit ner session =/

Bei numerischen Werte sind Anführungszeichen auch nicht nötig. Nur in den meisten Fällen ist die Sitzungs-ID eine 128-Bit-Hash-Wert, die einer Hexadezimalschreibweise ähnelt. Und da dabei Buchstaben vorkommen und es damit eine Zeichnekette ist, sind Anführungszeichen notwengig.
 
das mit der $_SESSION['id'] kann ich an und für sich nach vollziehen aber warum ihr denn wert mit ner id aus der datenbank vergleicht die es so nicht gibbt verstehe ich nicht ^^


PHP:
function getusername($uid)
   {
     $users=mysql_query("select * from users where userid = '$uid' ") or die(mysql_error());
      $user=mysql_fetch_assoc($users);
  
     return $user['username'];

}

welcher wert soll denn $uid sein und warum wird der wert der gar nicht gegeben ist mit der UserID verglichen ....

denn einzigsten wert denn ich durch die SESSION zur verfügung haben ist die $_SESSION['id'] und die wird in der db im UserSession gespeichert ....
 
Also bei mir entspricht $_SESSION['id'] der UserID des angemeldeten Users.
Anhand dessen kann ich dann an die Userdaten kommen.
$uid steht fuer die UserID und wird der Funktion wie in meinem Beispiel gezeigt uebergeben.
Falls Du erst anhand der SessionID die UserID aus der Datenbank holen musst (was meiner Meinung nach irgendwo Kaese ist) dann kann die Funktion z.B. so aussehen:
PHP:
function getusername()
{
 $usersesssions=mysql_query("select * from `UserSession` where `userid`='".session_id()."'");
 $usersession=mysql_fetch_assoc($usersessions);
 $users=mysql_query("select * from `users` where `userid`='".$usersession['userid']."'");
 $user=mysql_fetch_assoc($users);
 return $user['UserName'];
}
Die wird dann so aufgerufen:
PHP:
$username=getusername();
In die Funktion sollte dann natuerlich noch etwas Code zur Fehlerbehandlung rein, fuer den Fall dass kein Eintrag fuer die Session oder den entsprechenden User existiert.
 
Dennis Wronka hat gesagt.:
Falls Du erst anhand der SessionID die UserID aus der Datenbank holen musst (was meiner Meinung nach irgendwo Kaese ist) […]
Ich halte es eher für sehr leichtsinnig, die Authentifizierung allein anhand der Benutzer-ID auszuführen. Noch schlimmer, wenn die Sitzungs-ID dabei der Benutzer-ID entspricht. Ich hoffe mal, dass die Benutzer-ID dann nicht auch noch ein fortlaufender numerischer Wert ist.
 
Die SessionID ist ja, wenn man nicht dran rumfummelt, ein recht zufaelliger und somit nicht einfach zu ratender Wert. Daher duerfte es nicht ganz so einfach sein eine Session zu uebernehmen, vorausgesetzt der Verkehr wird nicht abgehoert.
In der Session steht dann die UserID, das ist meiner Meinung nach okay, denn die Session-Daten bleiben ja eh auf dem Server.
Dieser Weg ist auf jeden Fall besser als Usernamen und Passwort in einem Cookie abzulegen und den User dann anhand dieser Informationen zu identifizieren.
 
Klar würde auch ich diese Vorgehensweise bevorzugen. Jetzt merke ich auch gerade, dass ich wohl etwas fehlinterpretiert hab.
 
Gumbo hat gesagt.:
Jetzt merke ich auch gerade, dass ich wohl etwas fehlinterpretiert hab.
Kann ja mal passieren. Niemand ist perfekt, und irgendwo waer es auch reichlich langweilig wenn man es waere. :)

Man koennte im Grunde noch die SessionID einer IP zuordnen, aber das kann auch fuer legitime User zu einem Problem werden wenn mal mittendrin der Auto-Disconnect des ISP zuschlaegt und man dann ploetzlich mit einer anderen IP auf der Website aufschlaegt.
Man muss halt immer einen Kompromiss zwischen Sicherheit und User-Komfort finden.
 
sry dein code funktioniert leider nicht auch nicht...
warum hab ich denn nach deinem code her zusagen auf einmal 2 tabellen ?
hab doch nur eine ....

TABLE `users` (
`UserID` int(11) NOT NULL auto_increment,
`UserName` varchar(30) collate latin1_general_ci NOT NULL default '',
`UserPass` varchar(32) collate latin1_general_ci NOT NULL default '',
`UserSession` varchar(32) collate latin1_general_ci default NULL,
`UserMail` varchar(150) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (`UserID`),
UNIQUE KEY `NickName` (`UserName`),
UNIQUE KEY `UserMail` (`UserMail`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

mehr hab ich nich ...

die $_SESSION['id'] wird in der UserSession gespeichtert
die UserID ist fortlaufend ....

kann es damit was zutun haben das ich html templates habe
und die nicht solche variablen wie $username parse kann ? obwohl er mir ja dann auch nur $username ausgibt ... aber bei mir lässt er es komplett weg =(
 
Ich glaub es liegt daran, dass Dein System sehr verwirrend ist.
Mit UserSession meintest Du also keine Tabelle sondern ein Feld in Tabelle users. Okay, Missverstaendnis meinerseits.
Aber wofuer ist das Feld? Speicherst Du nach dem Login darin die SessionID?
Speicherst Du nichts in der Session? Wie halt z.B. die UserID?
Wenn Du das so hast wie ich vermute, also dass Du die SessionID zum User in die Datenbank packst und nicht noch die UserID in der Session speicherst verhinderst Du damit, dass ein User 2 mal eingeloggt werden kann. Das kann zwar wuenschenswert sein, aber wuerde in Deinem Fall wahrscheinlich eher Probleme mit sich bringen. Ausserdem kann es beim Testen manchmal sinnvoll sein wenn man mit 2 oder mehr Browsern mit dem gleichen User angemeldet ist.
Das erwaehnte Problem was ich da sehe duerfte sein, dass wenn ein User angemeldet ist und sich mit einem 2. Browser nochmal anmeldet die erste Anmeldung floeten geht und der User somit automatisch ausgeloggt werden duerfte.
Ausserdem find ich das so unnoetig kompliziert.

Und nochmal: Halte Dich bitte an Gross- und Kleinschreibung.
 
deine vermutung hat sich nicht bestätigt ich kan zwei gleichzeitig oder auch zwei mal mit denn selber benutzt einloggen...

aber vllt. kannst du dich besser hiermit reinversetzten
 
Zuletzt bearbeitet:
Zurück