php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben || php-forumjetzt anmelden
 

PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-12-2006, 14:15
dakingno1
 Registrierter Benutzer
Links : Onlinestatus : dakingno1 ist offline
Registriert seit: Nov 2006
Beiträge: 149
dakingno1 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Suche vergebens - User Session aus DB löschen

Hey,

auch wenn es hier nicht gern gesehen wird, aber nach ausführlicher suche, hab ich einfach nicht das passende gefunden.

Ich möchte gern die User anzeigen lassen, die gerade online sind.

Dafür speichere ich die UserSession in de DB, jedoch wird die nur gelöscht, wenn die Person sich richtig ausloggt.

Wenn die Session abgelaufen ist, steht die Session immernoch in der DB
Das ist die Function, die beim ausloggen ausgeführt wird.
PHP-Code:

function logout()
{
    
$sql="UPDATE tbl_user
    SET UserSession=NULL
    WHERE UserSession='"
.session_id()."'";
     
mysql_query($sql);

NUr wie kann ich es machen, dass das Query ausgeführt wird, bevor die UserSession abläuft oder die Person die Seite ohne logout schließt?????

Mit Zitat antworten
  #2 (permalink)  
Alt 20-12-2006, 15:34
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Du musst bei jedem User noch den Zeitpunkt der letzten Aktivität speichern. Dann kannst du alle "löschen", deren letzte Aktivität länger als x Minuten her ist
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #3 (permalink)  
Alt 20-12-2006, 18:17
dakingno1
 Registrierter Benutzer
Links : Onlinestatus : dakingno1 ist offline
Registriert seit: Nov 2006
Beiträge: 149
dakingno1 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von mrhappiness
Du musst bei jedem User noch den Zeitpunkt der letzten Aktivität speichern. Dann kannst du alle "löschen", deren letzte Aktivität länger als x Minuten her ist
hört sich klug an, aber wie wird es umgesetzt?!

ICh stell mir vor die aktivität einzutragen, wenn er sic heingeloggt hat, aber weiter wüsste ich nicht, wie ich vorgehen sollte... wie und wann prüft er z.B. die aktivität oder wann soll sie wieder aktualisiert werden?!
Mit Zitat antworten
  #4 (permalink)  
Alt 20-12-2006, 19:34
Hirnhamster
 Registrierter Benutzer
Links : Onlinestatus : Hirnhamster ist offline
Registriert seit: Oct 2006
Beiträge: 160
Hirnhamster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Letzte_Aktion ist vom Typ DATETIME.
Diese beiden Querys müssen am Anfang jeden Skriptes ausgeführt werden

PHP-Code:
    // Online Status der User aktualisieren
    
if(isset($_SESSION['UserID'])){
        
$sql "UPDATE
              User
           SET
            Letzte_Aktion = NOW()
           WHERE
              ID = "
.$_SESSION['UserID']."
                "
;
        
doQuery($sql);
    }
    
/* Session['UserID'] enthält die ID des Users,
     * sie wird beim einloggen des Users in der Session gespeichert.
     * bei jedem Aufruf irgendeiner Seite wird die Spalte 
     * 'Letzte_Aktion' aktualisiert.
    */

    //Userdaten der User korrigieren, die sich nicht ausgeloggt haben
    
$sql "UPDATE
                 User,
       SET
                SessionID = NULL,
       WHERE
          DATE_SUB(NOW(), INTERVAL 30 MINUTE) > Letzte_Aktion 
           "
;
    
doQuery($sql);
    
/* Bei jedem Aufruft wird geprüft, ob ein User eingeloggt ist,
     * obwohl er schon über 30 Min nichts mehr gemacht hat
     * (sprich seine Letzte_Aktion nich geupdatet hat).
     * wurde ein User gefunden, wird die SessionID, die in der Tabelle
     * des Users gespeichert ist, gelöscht.
     * Konsequenterweise muss man nun auch dafür für sorgen, 
     * dass auch die entsprechende Session gelöscht wird. Da ich aber dein
     * Sessionverwaltungssystem nicht kenne, kann ich dazu nichts sagen.
    */ 
Mit Zitat antworten
  #5 (permalink)  
Alt 20-12-2006, 19:45
lightdisc
 Registrierter Benutzer
Links : Onlinestatus : lightdisc ist offline
Registriert seit: Mar 2006
Ort: GeRmAnY
Beiträge: 128
lightdisc ist zur Zeit noch ein unbeschriebenes Blatt
Standard

oh danke. sowas hab ich schon lang gesucht
Mit Zitat antworten
  #6 (permalink)  
Alt 21-12-2006, 03:08
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

http://de2.php.net/manual/de/functio...dler.php#60316
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #7 (permalink)  
Alt 21-12-2006, 09:55
dakingno1
 Registrierter Benutzer
Links : Onlinestatus : dakingno1 ist offline
Registriert seit: Nov 2006
Beiträge: 149
dakingno1 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Hirnhamster
Letzte_Aktion ist vom Typ DATETIME.
Diese beiden Querys müssen am Anfang jeden Skriptes ausgeführt werden

PHP-Code:
    // Online Status der User aktualisieren

    //Userdaten der User korrigieren, die sich nicht ausgeloggt haben
    
$sql "UPDATE
                 User,
       SET
                SessionID = NULL,
       WHERE
          DATE_SUB(NOW(), INTERVAL 30 MINUTE) > Letzte_Aktion 
           "
;
    
doQuery($sql);

    */ 
Dieser Teil will bei mir nicht. Es erscheint der Fehler, dass die
Function doQuery nicht funktioniert. Daraufhin habe ich es so
modelliert:

PHP-Code:
mysql_query ('UPDATE tbl_user SET UserSession = NULL WHERE 
DATE_SUB(NOW(), INTERVAL 2 MINUTE) > Letzte_Aktion'
) or 
die(
mysql_error()); 
Nun ershceint aber wiederum ne Fehlermeldung bezüglich der Syntax.

Zitat:
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to
use near 'SET UserSession = NULL WHERE DATE_SUB(NOW(),
INTERVAL 2 MINUTE) > Letzte_Aktion' at line 1
Gibt es lösungsvorschläge?? Danke im voraus
Mit Zitat antworten
  #8 (permalink)  
Alt 21-12-2006, 11:26
dakingno1
 Registrierter Benutzer
Links : Onlinestatus : dakingno1 ist offline
Registriert seit: Nov 2006
Beiträge: 149
dakingno1 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
  mysql_query ('UPDATE `tbl_user` SET `Letzte_Aktion` = 
NOW() WHERE `nickname` =  \'".$name."\' LIMIT 1;'
) or 
die(
mysql_error()); 
Mein SQL Query ist wird so nicht ausgeführt und gibt keine Fehlermeldung aus.
in der Variable $bane ist ebenfalls was vorhanden.
Wenn ich jedoch $name durch einen festen nicknamen einsetze, dann wird das Query ausgeführt.

Woran liegt es?
Es wird ja nicht einmal eine Fehlermeldung ausgegeben.

Ich bin verzweifelt. Nun sitze ich schon seit 2h an dem Problem herum!
Mit Zitat antworten
  #9 (permalink)  
Alt 21-12-2006, 11:40
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.833
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

EDIT:

Sorry, da war ich zu hastig mit dem Senden Button.

__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."

Geändert von hhcm (21-12-2006 um 11:44 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 21-12-2006, 11:43
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.833
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Zitat:
in der Variable $bane ist ebenfalls was vorhanden.
Ich seh nix von $bane...

Ausserdem solltest du dir mal über single und Doublequotes im klaren werden.

Das was du da machst müsste einen Parse Error ausgeben.
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #11 (permalink)  
Alt 21-12-2006, 18:41
Hirnhamster
 Registrierter Benutzer
Links : Onlinestatus : Hirnhamster ist offline
Registriert seit: Oct 2006
Beiträge: 160
Hirnhamster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

doQuery ist ne Funtkion von mir, weil ich den nicht bei jedem Query
mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());

schreiben wollte

PHP-Code:
        // Führt einen SQL-Query aus und gibt im Fehlerfall eine Fehlermeldung aus
    
function doQuery($sql)
    {
        
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        return 
$result;
    } 
Mit Zitat antworten
  #12 (permalink)  
Alt 22-12-2006, 07:34
dakingno1
 Registrierter Benutzer
Links : Onlinestatus : dakingno1 ist offline
Registriert seit: Nov 2006
Beiträge: 149
dakingno1 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Hirnhamster
doQuery ist ne Funtkion von mir, weil ich den nicht bei jedem Query
mysql_query($sql) OR die("<pre>".$sql."</pre>".mysql_error());

schreiben wollte

PHP-Code:
        // Führt einen SQL-Query aus und gibt im Fehlerfall eine Fehlermeldung aus
    
function doQuery($sql)
    {
        
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
        return 
$result;
    } 

Hab mich schon gewundert....
Mit Zitat antworten
  #13 (permalink)  
Alt 22-12-2006, 12:48
Hirnhamster
 Registrierter Benutzer
Links : Onlinestatus : Hirnhamster ist offline
Registriert seit: Oct 2006
Beiträge: 160
Hirnhamster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja, da hätte man jetzt auch selbst drauf kommen können ich hab den Code ja nur von nem Script von mir copied & pasted
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Warum Texterstellung mit künstlicher Intelligenz richtig gut ist
Warum Texterstellung mit künstlicher Intelligenz richtig gut istKünstliche Intelligenz ist dabei, die Welt zu erobern. Die größten Unternehmen entwickeln Systeme, die einen Text für Sie schreiben können. Und sie machen das sehr gut.

05.01.2022 | Berni

Vorteile eines flexiblen ERP Systems
Vorteile eines flexiblen ERP SystemsEin flexibles ERP System bietet in allen Unternehmensbereichen die Grundlage für eine erfolgreiche Verwaltung, Organisation und Planung aller Prozesse.

01.12.2021 | Berni


 

Aktuelle PHP Scripte

Homepagetools 2022

Kostenloses Gästebuch und Homepagetools für die eigene Homepage. Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.

29.04.2022 freepler | Kategorie: PHP/ Gaestebuch
SF-Shopsystem V1.0

Hier haben wir ein einzigartiges Shopsystem in PHP. Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich. Ausführliche Beschreibung weiter unten.

28.04.2022 Speedcrawler | Kategorie: PHP/ Shops
Anzeigen Markt mit PayPal Bezahl System

Anzeigen Markt Script mit PayPal Bezahl System Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal seine Anzeigen zu schalten, je nach seinem Guthaben.

27.04.2022 Webace_de | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:46 Uhr.