Letzer Login anzeigen

oder du speicherst beim ersten Login die Loginzeit in eine Session z.b. $_SESSION['lastLogin']
Dann frägst du immer ab ob schon $_SESSION['lastLogin'] gesetzt ist.
Fals ja übernimmst du diesen Wert in die Anzeige
Fals $_SESSION['lastLogin'] nicht gesetzt ist nimmst du den Wert aus der Datenbank in der Ausgabe und speicherst ihn in die Session.

PHP:
if (isset($_SESSION['lastLogin'])) {
  echo "Letzter Login: ".$_SESSION['lastLogin'];
} else {
  // Datenbankabfrage lastLogin abfragen
  echo "Letzter Login: ".$dbvariable['lastLogin'];
  $_SESSION['lastLogin'] = $dbvariable['lastLogin'];
  // Datenbankupdate aktuelle Zeit für lastLogin eintragen
}

Damit wäre der letzte Login gespeichert solange man eingeloggt bleibt.
Danach soll ja eh der neue Wert kommen.
 
Zuletzt bearbeitet:
Also ich mache es so, sobald sich ein User einloggt, überprüft man ja ob er auch berechtigt ist sich einzuloggen usw. Dabei lese ich den letzten Login aus, steht in der Spalte nichts, wird halt "nie" angezeigt. Sobald ich den letzten Login ausgelesen habe, speichere einen aktuellen TimeStamp in der Spalte und so habe ich für den nächsten Login die Zeit des letzten Logins ^^

Den letzten Login speichere ich in ner session.
 
Eine neue Sache die es gilt umzusetzen,...alles andere hab ich irgendwie nicht hinbekommen ;)

so sieht meine MySQL Tabelle aus:

Code:
ID  |    date    | time
----|------------|-------
2   | 18.05.2008 | 12:00  
----|------------|-------
1   | 18.05.2008 | 15:49

Den letzten Login frag ich dann so ab:
PHP:
<?php 
$abfrage = "SELECT * FROM last_login WHERE id = '2'"; 
$ergebnis = mysql_query($abfrage); 
while($row = mysql_fetch_object($ergebnis)) 
    { 
    echo "Letzter Login am $row->date um $row->time"; 
    } 
//... 
?>

Jetzt das was es zu lösen gilt!
ID 2 soll ersetzt werden durch ID 1 und in ID 1 soll das neue Datum + neue Zeit stehen
Beispiel:
Code:
ID  |    date    | time
----|------------|-------
2   | 18.05.2008 | 12:00  
----|------------|-------
1   | 18.05.2008 | 15:49

nach dem Login:
Code:
ID  |    date    | time
----|------------|-------
2   | 18.05.2008 | 15:49  
----|------------|-------
1   | 19.05.2008 | 07:54

Ausgegeben wird immer ID 2 (siehe oben).

Ich hoffe es war nicht allzu schwer erklärt:confused:

LG Christoph
 
Hallo,

man muss einen Umweg machen, da der sonst bei dem zweiten UPDATE beide wieder auf 1 setzt..

PHP:
//die ID 1 auf eine ID setzen, die sonst nie vorhanden ist bzw benutzt wird (z.B. 3)
mysql_query("UPDATE last_login SET ID = 3 WHERE ID = 1");
//die ID 2 auf die ID 1 updaten..
mysql_query("UPDATE last_login SET ID = 1, date = 'datum hier rein', time = 'zeit hier rein' WHERE ID = 2");
//die ganz oben gesetzte ID auf 2 setzen
mysql_query("UPDATE last_login SET ID = 2 WHERE ID = 3");

Edit: Ich hab Datum und Zeit bei der falschen Query upgedatet

Ist zwar nicht unbedingt sehr schön gelöst, aber ich wüsste nicht, wie man es sonst machen soll ;)

MfG
Fabsch
 
Update doch für jede ID das Datum?
Etwa so:
SQL:
UPDATE
    last_login
SET
    date = neues_datum,
    time = neue_zeit
WHERE
    id = 1
----------------------------------------
UPDATE
    last_login
SET
    date = altes_datum,
    time = alte_zeit
WHERE
    id = 2
 
Zuletzt bearbeitet von einem Moderator:
Mhhh ich sehe immernoch keinen Sinn darin das ganze so abzuspeichern!

PHP:
<?php  
$abfrage = "SELECT * FROM last_login WHERE id = '1' LIMIT 1";  
$ergebnis = mysql_query($abfrage);  
$row = mysql_fetch_object($ergebnis);
$_SESSION['lastlogin'] = "Letzter Login am ".$row->date." um ".$row->time;
$query = "UPDATE last_login SET date='".date("d.m.Y")."', time='".date("H:i")."' WHERE id=''1";
mysql_query($query);
//...  
?>

Und wenn man das ganze beim Login ausführt so hat man den letzten Login des Users in der Session gespeichert und auch das neue Datum und die neue Zeit für den nächsten Login gesetzt, weil da soll ja die Zeit von diesem Login angezeigt werden.

Was spricht nun dagegen?

Ich meine bei deiner Version werden für jeden User 2 Datensätze angelegt, wenn ich dich richtig verstanden habe.
 
Hallo Dark Ranger,
ich habe deinen Code mal eingebaut, musste allerdings noch paar Änderungen vornehmen. Aber jetzt klappt alles wunderbar. Danke an alle die geholfen haben!

Allerdings ist mir eine Sache aufgefallen die jetzt nicht gerade Kriegsentscheident ist, weil das Script nur auf einen User bezogen ist. Aber wenn sich jetzt zB ein zweiter User Namens "Hans Haumichblau" einloggen würde, bekäme dieser die selben Letzen Login Daten wie zB der erste User "Christoph Haas", oder!?
 
Dann müsstest du hier:
Code:
ID  |    date    | time
----|------------|-------
2   | 18.05.2008 | 15:49  
----|------------|-------
1   | 19.05.2008 | 07:54
noch eine Userid einbauen, beispielweise:
Code:
ID  |    date    | time  |  user  |
----|------------|-------|--------|
2   | 18.05.2008 | 15:49 |   1    |
----|------------|-------|--------|
1   | 19.05.2008 | 07:54 |   1    |
----|------------|-------|--------|
2   | 22.05.2008 | 11:05 |   2    |
----|------------|-------|--------|
1   | 21.05.2008 | 19:36 |   2    |
Und querys dann erweitern:
SQL:
SELECT
    ...
FROM
    ...
WHERE
    id = id
AND
    user = userid
 
Zuletzt bearbeitet von einem Moderator:
Mahlzeit :)
ich hab mich heut auf im Dienst als ich mal Zeit hatte hingesetzt und hab mir paar Gedanken gemacht. Letztendlich bin ich auf die Lösung gekommen.

Ich erweitere meine Tabelle, dass sie wiefolgt aussieht
Code:
ID  |    user        |   password    |    date    | time
----|----------------|---------------|------------|-------
1   | Admin	   | password1     | 18.05.2008 | 12:00  
----|----------------|---------------|------------|-------
2   | Christoph Haas | password2     | 18.05.2008 | 15:49

Die Abfrage sieht jetzt auch anders aus:
PHP:
<?
// login.php
$username = $_POST['username']
//...
$abfrage = "SELECT * FROM users WHERE user = '$username' LIMIT 1";   
	$ergebnis = mysql_query($abfrage);   
	$row = mysql_fetch_object($ergebnis); 
	$_SESSION['lastlogin'] = "Letzter Login am $row->date um $row->time"; 
	$query = "UPDATE users SET date = '$date', time = '$time' WHERE user = '$username'"; 
	mysql_query($query);
//...
Wenn sich jetzt Admin einloggt erscheint:
Code:
Letzter Login am 18.05.2008 um 12:00
und wenn sich Christoph Haas einloggt erscheint:
Code:
Letzter Login am 18.05.2008 um 15:49

So hab ich das jetzt gelöst;)

LG
Christoph Haas
 
Jep das ist doch schon ganz gut!
Und wenn es klappt ist es auch toll ^^

Jetzt solltest u dir noch Gedanken um Verschlüsselung usw. machen falls du dir noch keine gemacht hast :D
 
Zurück