Webstatt.org - Community seit 2006 - 2012 (2024?)

code problem ?

user-139
13.01.2008 19:38

###soll alle die länger als xmin keine aktion ausgeführt haben ausgeloggen,.
$query = mysql_query("SELECT * FROM bonze_login"zwinkern or die(mysql_error());
while($row = mysql_fetch_assoc($query)) {
if((time() - $row['last_aktivity']) > 60*30)
{
$sql = "UPDATE `bonze_login` SET
`usersession` = 'NULL'
WHERE userid = '".$row['userid']."'";

$query = mysql_query($sql) OR die(mysql_error());

}
}
######


Hier drin ist ein fehler welche diesen fehler verursacht,.
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
die Daten der Mysql abfrage stimmen jedoch , jemand ne idee?!

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
user-303
13.01.2008 20:11

Du überschreibst in deiner Schleife das $query.

Beim 2. Schleifendurchlauf versucht php also die Rückgabe deines UPDATE-querys zu fetchen. Das geht natürlich nicht.

Also einfach das 2. Query nicht in eine Variable schreiben

user-139
13.01.2008 20:26

ok danke so geht es ,
allerding ist mir aufgefallen ich hab nen denkfehler, dieser code sollte den User automatisch nach einer gewissen Zeit, in der er nichts getan hat ausloggen , jetzt logge ich mich ein und werde direkt wieder ausgeloggt, bzw es loggt mich gar nich erst ein ,.

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
user-152
16.01.2008 16:47

Vielleicht hast du die Möglich einen Cronjob einzusetzen.
Aber im Prinzip brauchst du diese komische Variante gar nicht.

Wenn der User eingeloggt ist (wird ja sicherlich mit Session laufen) wird bei jedem Klick die Session-Time aktualisiert. user-158n werden per Cronjob alle Einträge gekillt, die einen bestimmten Zeitabstand überschritten haben - fertig.

Oder wenn du kein Cronjob hast, dann vor dem Update prüfen ob ein gewisses Zeitlimit abgelaufen ist, falls ja werden die Session-Daten gekillt und der Eintrag in der DB gelöscht.

user-139
20.01.2008 18:41

aha, und wie sollte ich das deiner meinung nach am betsten lösen?
-mysqlabfrage , wann die letzte akltion war
-if, prüfen ob die letzte aktivität schonx minuten her ist
-wenn ja , session zerstören und session au db löschen

oder wie?

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-271
20.01.2008 18:44

warum nicht letzte Aktivität in der Session speichern?

#!/bin/bash
traurig){ neutral:& };:
user-139
20.01.2008 19:02

stimmt user-271 so hab ichs ja auch, aber wie mache ich dann weiter?
wenn jetzt z.B. jemand eingeloggt ist , und macht dann de browser zu, steht er immernoch in der db, diese abfrage fehlt mir auch noch, die möchte ich mit dieser hier verbinden, hab aber noch nich so den plan davon , wie ich es machen muss,.

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe