hi leutz
hab nen portal gecodet. sicherlich der blanke horrorquellcode für dich. aber es lööft ABER ich hab nen fehler. ich arbeite mit sessions und das glaub ich will nicht so richtig.
also.
so starte ich meine session und register die. in $kuserid les ich die userid des users der sich eingeloggt hat aus der db aus und speicher sie in $kuserid. diese sollte nun in der session sein.
auf den anderen seiten gehts immer am start so los:
dann greife ich auf die $kuserid zu und hol mir die userid die ich zum arbeiten und auslesen der db brauche.
doch es passiert das er ab und zu die daten verliert. der hat auf einmal keine sessionid mehr und keine userid. da zerhaut mir mein ganzes projekt.
vor allem weil ich beim einloggen den user in eine tabelle "online" eintragen lasse. bei jedem aufruf wird geprüft ob der user noch online ist. wenn nicht updaten der onlinezeit. und danach werden alle user gelöscht die 5min nicht aktiv waren also wo sich die onlinezeit nicht verändert hat.
eintragen:
updaten:
löschen:
also in der tabelle useronline stehen die $kuserid, nick, geschlecht, alter und die onlinezeit. doch wenn er mitten im script die session verliert weiß er auc nicht mehr die $kuserid des user. kann deshalb keinen update vornehmen weil in der tabelle "online" die kuserid nicht zu finden ist und trägt deshlab einen neuen user ein.
und das soll nicht sein!!!
normal siehts so aus:
m26 Madison << das lass ich in einer box anzeigen (alle user die in der onlinetabelle sind untereinander)
und wenn er die session daten verliert steht dann...
m25 user
w23 userin
m2006 << da is der fehler
der user ist aufeinmal identitäslos und kann nix mehr machen, keine userid mehr da, da er plötzlich m2006 is und die sessionid is auch weg.
ich geh kaputt. weiß net mehr weiter. was mach ich falsch?
bei jedemseitenaufbau wird die check.php included die guckt ob der user noch online ist, das update macht, enu einträgt oder die suer die 5min idlen rauslöscht.
is daran was falsch? oder register ich die session schon falsch?
wei nimmer weiter wieso der immer die daten verliert die doch in den session registered sind. oder andere lösung nehmen?
hab nen portal gecodet. sicherlich der blanke horrorquellcode für dich. aber es lööft ABER ich hab nen fehler. ich arbeite mit sessions und das glaub ich will nicht so richtig.
also.
PHP-Code:
@session_start();
session_register("kuserid","sidname","sidsid","mod");
$sidname= session_name();
$sidsid= session_id();
auf den anderen seiten gehts immer am start so los:
PHP-Code:
@session_start();
doch es passiert das er ab und zu die daten verliert. der hat auf einmal keine sessionid mehr und keine userid. da zerhaut mir mein ganzes projekt.
vor allem weil ich beim einloggen den user in eine tabelle "online" eintragen lasse. bei jedem aufruf wird geprüft ob der user noch online ist. wenn nicht updaten der onlinezeit. und danach werden alle user gelöscht die 5min nicht aktiv waren also wo sich die onlinezeit nicht verändert hat.
eintragen:
PHP-Code:
$sql3="INSERT INTO kabuzo_online (kuserid,nick,age,geschlecht,zeit) VALUES ('$kuserid','$nick','$alter','$geschl',NOW(''))";
mysql_query($sql3);
PHP-Code:
$sqloff3="UPDATE kabuzo_online SET zeit=(NOW('')) WHERE kuserid='$kuserid'";
mysql_query($sqloff3);
PHP-Code:
$sqloff4="DELETE FROM kabuzo_online WHERE zeit < DATE_SUB(NOW(), INTERVAL '0 0:5:0' DAY_SECOND)";
mysql_query($sqloff4);
also in der tabelle useronline stehen die $kuserid, nick, geschlecht, alter und die onlinezeit. doch wenn er mitten im script die session verliert weiß er auc nicht mehr die $kuserid des user. kann deshalb keinen update vornehmen weil in der tabelle "online" die kuserid nicht zu finden ist und trägt deshlab einen neuen user ein.
und das soll nicht sein!!!
normal siehts so aus:
m26 Madison << das lass ich in einer box anzeigen (alle user die in der onlinetabelle sind untereinander)
und wenn er die session daten verliert steht dann...
m25 user
w23 userin
m2006 << da is der fehler
der user ist aufeinmal identitäslos und kann nix mehr machen, keine userid mehr da, da er plötzlich m2006 is und die sessionid is auch weg.
ich geh kaputt. weiß net mehr weiter. was mach ich falsch?
bei jedemseitenaufbau wird die check.php included die guckt ob der user noch online ist, das update macht, enu einträgt oder die suer die 5min idlen rauslöscht.
PHP-Code:
<?php
@session_start();
$treffer=0;
//gucken ob der user in der online liste ist
$sqlsuche="SELECT kuserid FROM kabuzo_online";
$result = mysql_query($sqlsuche);
$anz = mysql_num_rows($result);
for($i=0; $i < $anz; $i++)
{
$nick1=mysql_result($result,$i,"kuserid");
if ($nick1 == $kuserid)
{
$treffer=1;
}
}
//wenn er in online liste die zeit hochsetzen
if ($treffer == 1)
{
$sqloff3="UPDATE kabuzo_online SET zeit=(NOW('')) WHERE kuserid='$kuserid'";
mysql_query($sqloff3);
}
//erst er nicht mehr drin weil er zu lange geidelt hat dann wieder eintragen
if ($treffer == 0)
{
$sql1="SELECT pass,user_ID,aktiv,nick,geschl,tag,monat,jahr FROM kabuzo_user WHERE user_ID='$kuserid'";
$result = mysql_query($sql1);
$pass = mysql_fetch_array($result);
//in onlinetabelle eintragen
//geburtsdatum ermitteln
$int_day = $pass[5];
$int_month = $pass[6];
$int_year = $pass[7];
//aktuelles datum ermitteln
$now_year=date("Y");
$now_month=date("n");
$now_day=date("d");
$age = $now_year - $int_year;
if(($now_month == $int_month AND $now_day < $int_day) OR $now_month < $int_month) $age--;
$alter = $age;
$nick = $pass[3];
$geschl = $pass[4];
$sql3="INSERT INTO kabuzo_online (kuserid,nick,age,geschlecht,zeit) VALUES ('$kuserid','$nick','$alter','$geschl',NOW(''))";
mysql_query($sql3);
}
//alle user die 5min nichts gemacht haben austragen aus der onlineliste
$sqloff4="DELETE FROM kabuzo_online WHERE zeit < DATE_SUB(NOW(), INTERVAL '0 0:5:0' DAY_SECOND)";
mysql_query($sqloff4);
?>
wei nimmer weiter wieso der immer die daten verliert die doch in den session registered sind. oder andere lösung nehmen?
Kommentar