Login geschützer Bereich mit Warteschlange und Priorität

Hi tombe,

ja in der Tabelle können so viele User wie wollen stehen.
Wie meinst du das mit der Session-Variable bzw. Cookie?

Was geht deiner Meinung nach einfacher?
Mit Cookies habe ich noch nicht so viel gemacht, aber wenn es nicht so schwer ist müsste ich das doch auch hinbekommen.
 
Wenn ich versuche mich einzuloggen gibt es 2 Möglichkeiten a) es ist kein anderer eingeloggt oder b) ich komme in die Warteschleife.

In diesem Fall erzeugt du einfach eine SESSION-Variable die den Benutzernamen aufnimmt.
Wenn du jetzt die SQL-Abfrage ausführst um zu prüfen wer der Nächste ist der sich anmelden darf, prüfst du hierbei auch ob diese Variable den entsprechenden Namen hat (ich bleib hier jetzt wieder bei $benutzer da ich nicht weiß ob du sie noch wo anders im Einsatz hast!!).

PHP:
IF ($benutzer == 0 AND $_SESSION["user"] == $row["benutzer"]) {
  echo "Sie können sich jetzt einloggen!";
} else {
  echo "Anmeldung leider im Moment noch nicht möglich.";
}

Denke mal das es so klappen müsste
 
Hi tombe,

ok danke so probiere ich es direkt mal.

$benutzer habe ich noch nicht verwendet.

Soll $benutzer derselbe sein wie $bearbeiter?
Und bei $row["benutzer"] muss ich hier nicht den adminstatus mit überprüfen?
 
Sorry jetzt hab ich mich verschrieben $benutzer muss natürlich die von dir verwendete Variable $bearbeiter sein !!

Aber bei $row["benutzer"] ist schon der Benutzername gedacht. Wenn sich jemand einloggen will, gibt er hierzu ja seinen Benutzernamen an. Dieser wird dann zusammen mit der Uhrzeit und dem Adminstatus in der Tabelle gespeichert

Wenn jetzt geprüft wird wer sich als nächstes einloggen darf wird dem Benutzer eine Mitteilung gemacht desen Benutzername mit dem Benutzernamen übereinstimmt den die SQL-Abfrage zurückgibt!!
 
Achso ok.
Ich glaube ich habe es verstanden.

Gebe mich direkt mal dran und probiere es aus.
Ansonsten melde ich mich nochmal :)
 
Also irgendwie hab ich bei der Umsetzung noch ein Problem.

$_SESSION["user"] soll doch die Session Variable sein in der der User eingetragen wird wenn er versucht sich anzumelden.
Oder liege ich hier falsch?

Aber woher bekomme ich denn $row["benutzer"]) her?

Eigentlich müsste der Code doch jetzt so aussehen, oder?

PHP:
$reihenfolge=mysql_query("SELECT * FROM tabelle ORDER BY adminstatus DESC, Einloggzeit ASC LIMIT 1")
or die(mysql_error());
while($row = mysql_fetch_array($reihenfolge))
{
        echo "Adminstatus:";
        echo $row['adminstatus'];
if ($bearbeiter == 0 AND $_SESSION["user"] == $row["benutzer"]) {
  echo "Sie können sich jetzt einloggen!";
} else {
  echo "Anmeldung leider im Moment noch nicht möglich.";
} 

}
 
Zuletzt bearbeitet:
Hi,

also so wie ich mir das Vorstelle wird die SESSION["user"] dort und dann mit einem Wert belegt wenn man sich anmelden will und im Moment aber nicht kann.

Bei der Überprüfung bzw. bei der Abrage "$reihenfolge" wird ja der Benutzername, die Uhrzeit und der Adminstatus zurückgegeben.

Damit kannst du diesen Vergleich doch dann durchführen.

Gruß Thomas

Sorry hab vergessen zu schreiben das du $row["benutzer"] entsprechend der Feldnamen in der Tabelle anpassen musst !!
 
Hi tombe,

also ich habe es jetzt so angepasst.
Und $_SESSION["user"] hole ich mir doch aus der MySQL Tabelle in der der User eingetragen wird wenn er sich versucht anzumelden, jedoch noch nicht kann
da noch ein anderer User eingeloggt ist.
 
Du hast ja irgendwo ein Anmeldeformular wo man seinen Benutzernamen uns sein Passwort eingeben muss.

Auf dieser Seite müsste dann a) geprüft werden ob die Angaben korrekt sind und b) ob die Anmeldung möglich ist oder ob bereits ein anderer Benutzer angemeldet ist.

Sind die Angaben korrekt und es ist kein anderer online wird die Anmeldung durchgeführt und alles ist in Butter.

Ist die Anmeldung OK jedoch bereits jemand anderes angemeldet, wird der Benutzername zum Vergleich in der SESSION-Variable gespeichert und es wird (in einem zeitlichen Abstand) immer wieder geprüft ob die Anmeldung jetzt möglich ist.

Ich hab das jetzt mal in vereinfachter Form mit einer Tabelle nachgestellt, die Tabelle enthält fogende Felder:

"benutzer" - für den Benutzernamen
"uhrzeit" - für die Uhrzeit an der man sich anmelden wollte
"adminstatus" - 0 = kein Admin oder 1 = Admin
"online" - hiermit wird gesteuert werd angemeldet ist, 0 = nicht angemeldet oder 1 = angemeldet.

Den Inhalt von "online" ändere ich einfach von Hand direkt in der Datenbank, dient nur dazu das ein Benutzer den Status angemeldet erhalten kann.

Dann gibt es noch ein kleines Formular (siehe Anlage) wo man seinen Benutzernamen eingeben kann und auf Anmelden klicken kann.

Im Anschluß wird zunächst geprüft ob jemand angemeldet ist. In diesem Fall wird per meta-refresh die Seite alle 5 Sekunden neu aufgerufen und geprüft ob die Anmeldung jetzt möglich ist.

Ist primitiv aber von der Funktion her sollte es so sein wie du es haben willst.
 

Anhänge

Hi tombe,

super vielen vielen Dank.
Damit werde ich es direkt mal ausprobieren.
Hoffe das ich es so hinbekomme ;)
 
Zurück