# -------- SID_neu bei jedem Aufruf berechnen ------- #
$a_debug.="${ \('-'x30) }<br>Beginn SID generieren (bei jedem Aufruf)<br>";
$login_max = 15; # max. erlaubte Login-Zeit in Minuten
$login_max = $login_max*60; # dergl. jetzt in Sekunden
$anz_login_max = ($login_max/60)." Minuten";
$sek_dag = $dag* 24 * 60 * 60;
$sek_stund = $stund * 60 * 60;
$sek_min = $min * 60;
$adl = int($sek*1.13) + 21;
$adm = int($sek * 0.75) + 39;
$adr = int($sek * 0.4) + 19;
$SID_lneu = (5234989+$sek_dag+$sek_stund+$sek_min+$sek)+$login_max;
$SID_mneu = (3197452+$sek_dag+$sek_stund+$sek_min+$sek)-234+$login_max;
$SID_rneu = (7430929+$sek_dag+$sek_stund+$sek_min+$sek)-345+$login_max;
$SID_neu = $adl.$SID_lneu.".".$adm.$SID_mneu.".".$adr.$SID_rneu; # SID_neu bei jdem Aufruf als Vergleichswert
$a_debug.="SID_neu => $SID_neu generiert<br>";
$a_debug.= "${ \('-'x5) } <b>Ende SID generieren</b> ${ \('-'x5) }<br>";
# -------- Ende SID erstellen ------- #
# -------- Beginn Zugangsberechtigung ermitteln ------- #
$a_debug.= "${ \('-'x5) } <b>Beginn Block Zugangsberechtigung prüfen </b>${ \('-'x5) }<br>";
if($namerein ne "" && $SID eq "") # wenn namerein nicht leer u. keine SID (Nutzername als Übergabeparameter, Erstaufruf)
{
$a_debug.="Keine SID - \$namerein vorhanden => $namerein<br>";
get ["name", "==!", $namerein], "$db1"; # Nutzerdaten holen
if($pwrein ne "")# && $pwrein eq $passwort && $frei ne "" ) # Passwort und Freigabe holen und vergleichen
{
$a_debug.="...\$pewrein vorhanden => $pwrein<br>";
if ($pwrein eq $passwort)
{
$a_debug.="......\$pwrein gleich \$passwort ($pwrein = $passwort)<br>";
if ($frei ne "")
{
$a_debug.=".........\$frei vorhanden (Nutzer freigeschaltet)<br>";
$SID = $SID_neu; $uid = $_id;
$anz_anmeld++;
mod "name==!$namerein", ["n_sid", "$SID", "anz_anmeld", "$anz_anmeld"], "$db1"; # SID, Anz. Anme.in DB speichern
$a_debug.=".........\$n_sid =>$n_sid und anz_anmeld =>$anz_anmeld in db1 => $db1 geändert<br>";
get ["name", "==!", $namerein], "$db1"; # Nutzerdaten nochmal holen (wegen Neubelegung von anz_anmeld)
$zug = 4;
}else
{
$a_debug.=".........\$frei nicht vorh. (Nutzer nicht freigesch.)<br>";
$zug = 2;
}
}else
{
$a_debug.=".....\$pwrein ungleich $\passwort ($pwrein <> $passwort<br>";
$zug = 1;
}
}
}elsif ($SID ne "" && $uid ne "" ) # ansonsten wenn SID und uid belegt sind (weitere Aufrufe nach Erstaufruf)
{
$a_debug.="SID => $SID und uid => $uid vorhanden<br>";
get ["Id", "==!", $uid], "$db1"; # Daten für Nutzer mit Id=uid holen und SID vergleichen
if ($logout == 0)
{
$a_debug.="DS mit \$uid $uid geholt, \$logout leer - Prüfung auf SID-Gültigkeit folgt<br>";
# ........ SIDmax aus n_sid und login_max generieren und mit SIDneu vergleichen ........ #
$pt1=index($n_sid, ".");
$SIDmr = substr($n_sid,$pt1+1);
$pt2 = index($SIDmr, ".");
$SID_lmax = substr($n_sid,2,$pt1-2)+$login_max;
$SID_mmax = substr($n_sid, $pt1+1+2, $pt2+1-2)+$login_max;
$SID_rmax = substr ($n_sid, $pt2+$pt1+4)+$login_max;
$SID_max = $adl.$SID_lmax.".".$adm.$SID_mmax.".".$adr.$SID_rmax;
#
if ($SID eq $n_sid)
{$a_debug.="SID und n_id sind gleich (keine Manipulation)<br>";
if (($SID_lmax > $SID_lneu) || ($SID_mmax > $SID_mneu) || ($SID_rmax > $SID_rneu))
{ $a_debug.="SID gültig SID => $SID | uid => $uid<br>";
$zug = 4;
}else
{ $a_debug.="SID abgelaufen SID => $SID | uid => $uid<br>";
$zug = 3;
$nick = $name;
}
}else
{
$a_debug.="SID nicht gleich n_sid:<br>\$SID => $SID";
$zug = -1;
}
}elsif ($logout == 1)
{
$a_debug.="DS mit \$uid $uid geholt, \$logout nicht leer<br>";
$zug = 5;
}
$a_debug.="\$SID mit $SID belegt | Zugangscode \$zug => $zug<br>";
}
$a_debug.= "${ \('-'x5) } <b>Ende Block Zugangsberechtigung püfen</b> ${ \('-'x5) }<br>";
In Abhängigkeit des gesetzten Flags $zug erfolgen dann die weiteren Aktionen, bspw. werden die Statusmeldungen für das jeweilige Anmeldeergebnis in einen Hash geschrieben, dessen Elemente dann einfach in die HTML-Ausgabe eingebaut werden.
Wenn du willst, schick ich dir mal den Code des gesamten Templates per mail, ist recht lang und noch nicht ganz fertig, die Grundfunktionen gehen aber schon