Onlineliste-User wird online angezeigt obwohl er nicht online ist

Begonnen von Alkuinia, 09 Januar 2004, 20:13:26

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Alkuinia

Seit zwei Tagen wird einer unserer Mitglieder in der Onlineliste als "online" angezeigt, obwohl dies nicht der Fall ist. Auch wenn ich Ihn in der Datenbank unter "session" lösche" taucht er nach ner Weile wieder auf. Wer weiß Rat?

DarkBoy

Hm, welche Verion nutzt du unter welchen Bedingungen? Mehr Infos wären hilfreich für uns.

Alkuinia

Das ist ne gute Frage!
Was meinst Du mit Version? Welche  "vkp"-Version, oder welche Version des "Who's online"-Blocks. Ich habe inzwischen soviel selbst gebastelt und ergänzt, dass ich da den Überblick verloren habe.
Unsere Seite (wir sind nur ne kleine Community) ist unter
http://www.alkuinia.de/community
zu finden, vielleicht kannst Du mal vorbei surfen.
Interessant ist, dass es bei allen anderen Mitgliedern funktioniert. Sie werden, wenn Sie offline sind nach ner Zeit gelöscht!
Hier der Code mein Blocks:

<?php //* VKP-Maxi, RC 1.0.0.5 - 28.07.2002 - ae
/************************************************************************/
/* VKP-Maxi, VKP-Midi, VKP-Mini                                         */
/* ============================                                         */
/* rewrite and modified by:                                             */
/* http://www.maax-design.de                                            */
/* http://www.fsz-design.de                                             */
/* http://micro.myftpsite.net                                           */
/* http://www.shiba-design.de                                           */
/*                                                                      */
/*                                                                      */
/************************************************************************/

/************************************************************************/
/* Original from PHP-NUKE: Advanced Content Management System           */
/* ============================================                         */
/*                                                                      */
/* Copyright (c) 2002 by Francisco Burzi (fbc@mandrakesoft.com)         */
/* http://phpnuke.org                                                   */
/*                                                                      */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License.       */
/************************************************************************/

################# Einstell Variablen ############################################################################
$onlinelistsize=8;    # Hoehe des Selectfeld der Onlinuser
$showbuddy=1;              # Buddylink (Messenger) anzeigen
$checkpmtime=200000;   # Intervall zum private Nachrichten abfragen, 0 wenn nicht abgefragt werden soll
# User, die nicht angezeigt werden sollen
# Namen mit Komma trennen!
$excludedusers ="Texster, Knaxller";
##################################################################################################################
$imagedir="images/maaxon";
$pm_module_name = "Private_Messages";
##################################################################################################################
global $admin, $user, $prefix, $user_prefix, $dbi, $cookie, $currentlang, $blockfiletitle, $anonymous;
global $bgcolor1, $bgcolor2, $bgcolor3, $txtcolor1, $txtcolor2, $uname;
if (isset($PHP_SELF)) {
   Header("Location: ../index.php");
   die();
   }
$thisfile=basename(__file__);

if(file_exists("language/maaXoN/maaXoN-$currentlang.php")) {
   include_once("language/maaXoN/maaXoN-$currentlang.php");
   }
else {
   include_once("language/maaXoN/maaXoN-english.php");
   }
# Variablen initialisieren
if($currentlang=="german"){   # Bilder fuer Buttons definieren (noch keine Bilder vorhanden!!)
   $pmimagepath="modules/$pm_module_name/images/buttons/german";
   }
else{
   $pmimagepath="modules/$pm_module_name/images/buttons/english";
   }

# Variablen initialisieren
$ip = getenv("REMOTE_ADDR");
if (is_user($user)){
   cookiedecode($user);
   $username = $cookie[1];
   $uid = $cookie[0];
   $guest=0;
   }
else {
   $username = "$ip";
   $guest=1;
   $showscrollist=0;
   }

$past = time()-900; $ctime = time();
$countpm=0; $countpmunread=0;
$userlist=""; $totalmembers=0;
$whoonlinelist = ""; $whoonlineselect = "";
$member_online_num = 1; $guest_online_num=0;
$pmactiv=0;
$isseradmin=is_admin($admin);
# SQL-bedingung fuer excluded Users erstellen
$exusers = explode (",", $excludedusers);
if(!$isseradmin){
   while (list($key, $val) = each($exusers)) {      
      $xexusers[]="\"".trim($val)."\"";
      }
   }
$xexusers[]="\"$anonymous\"";
$excludedusers=implode($xexusers,",");

# alte User aus session loeschen
sql_query("DELETE FROM ${prefix}_session WHERE time < $past",$dbi);

# ermitteln ob aktueller User bereits in Session eingetragen
$result = sql_query("SELECT time FROM ${prefix}_session WHERE username='$username'",$dbi);
if ($row = sql_fetch_row($result,$dbi)) { # falls ja, Daten aktualisieren
   sql_query("UPDATE ${prefix}_session SET username='$username', time='$ctime', host_addr='$ip', guest='$guest' WHERE username='$username'",$dbi);
   }
else { # falls nein, User in Session eintragen
   sql_query("INSERT INTO ${prefix}_session (username, time, host_addr, guest) VALUES ('$username', '$ctime', '$ip', '$guest')",$dbi);
   }

# Anzahl aller User ermitteln
$qry="select COUNT(uid) from ${user_prefix}_users where uid<>1 and uname<>'".$anonymous."';";
list($totalmembers) = sql_fetch_row(sql_query($qry,$dbi),$dbi);

# neusten User ermitteln
$qry="select uname from ${user_prefix}_users where uid<>1 and uname<>'".$anonymous."' order by uid DESC limit 0,1;";
$result = sql_query($qry,$dbi);   # neusten User ermitteln
list($lastuser) = sql_fetch_row($result,$dbi);

# Alle User und Gaeste ermitteln, evtl auflisten
$qry="SELECT guest, username FROM ${prefix}_session where (guest=0 or guest=1) and username not in($excludedusers) order by username;";
$result2 = sql_query($qry,$dbi);
while (list($sesionguest, $uname2) = sql_fetch_row($result2,$dbi)) {
  if ($sesionguest==0) {   # wenn angemeldeter User
      if(isset($uname))
         if(strtolower($uname2)==strtolower($uname)) {$sel="selected";} else{$sel="";}
      else
         if(strtolower($uname2)==strtolower($username)) {$sel="selected";} else{$sel="";}
      $uname3 = substr("$uname2", 0, 20);   # Kurzen Usernamen erstellen
      $whoonlineselect.="<option value=\"$uname2\" $sel>$uname3</OPTION>\n"; # options fuer auswahlselect erstellen
      $member_online_num++;   # Anzahl User hochzaehlen
     }
   else{
      $guest_online_num++;   # Anzahl Gaeste hochzaehlen
      }
   }
$member_online_num=$member_online_num-1;   # Wieder einen User abziehen (war bei init 1)

# Private Nachrichten
if ($guest == 0) { # Wenn aktueller User registriert ist (kein Gast)
   $pmactiv=is_active("$pm_module_name"); # feststellen ob pm-modul aktiv ist
   if ($pmactiv){   # falls pm-modul aktiv ist
      $qry="SELECT read_msg, Count(msg_id) FROM ${prefix}_priv_msgs WHERE to_userid='$uid' group by read_msg;";
      $result = sql_query($qry,$dbi);
      while (list($read_msg, $nums) = sql_fetch_row($result,$dbi)) {
        if ($read_msg==0) {   # wenn angemeldeter User
            $countpmunread=$nums;   # Anzahl ungelesene ermitteln
           }
         else{
            $countpm=$nums;   #++;   # Anzahl aller pm's ermitteln
            }
         }
      }
   else{
      $checkpmtime=0; # private Nachrichten nicht abfragen!
      }
   }

# weitere Variablen initialisieren zur Zeitberechnung :(
# den Mist muss man aendern! da gehoert ein anstaendiges Datumsfeld in die Tabelle
$Today = getdate();
//Formatting Current Date
$month = $Today['month'];
$mday = $Today['mday'];
$year = $Today['year'];
//Formatting Previous Date
$pmonth = $Today['mon'];
$pmday = $Today['mday'];
$pmday = $mday-1;
$pyear = $Today['year'];
$test = mktime (0,0,0,$pmonth,$pmday,$pyear,1);
//Creating SQL parameter
$curDate2 = "%".$month[0].$month[1].$month[2]."%".$mday."%".$year."%";
$preday = strftime ("%d",$test);
$premonth = strftime ("%B",$test);
$preyear = strftime ("%Y",$test);
$curDateP = "%".$premonth[0].$premonth[1].$premonth[2]."%".$preday."%".$preyear."%";
# Heute neu angemeldete User ermitteln
$qry = "SELECT COUNT(uid) from ${user_prefix}_users WHERE user_regdate LIKE '$curDate2' and  uid<>1 and uname not in($excludedusers);";
list($userCount) = sql_fetch_row(sql_query($qry,$dbi),$dbi);
# Gestern neu angemeldete User ermitteln
$qry = "SELECT COUNT(uid) from ${user_prefix}_users WHERE user_regdate LIKE '$curDateP' and  uid<>1 and uname not in($excludedusers);";
list($userCount2) = sql_fetch_row(sql_query($qry,$dbi),$dbi);
# Ausgabe ...................................
$content = "\n<!-- $thisfile output start -->\n<div class=\"content\" align=\"center\">\n"
."<img src=\"$imagedir/people.gif\" width=\"19\" height=\"19\" border=\"0\" Alt=\""._BWOPICS."\">\n"
."<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border: 0px; margin-bottom: 5px;\">\n"
."\n<tr>\n<td>"._BWOTOTALMEMBERS."</td>\n<td align=\"right\">\n<b>$totalmembers</b></td>\n</tr>\n"
."\n<tr>\n<td>"._BWOTODAYMEMBERS."</td>\n<td align=\"right\">\n<b>$userCount</b></td>\n</tr>\n"
."\n<tr>\n<td>"._BWOYESTERDAYMEMBERS."</td>\n<td align=\"right\">\n<b>$userCount2</b></td>\n</tr>\n"
."\n<tr>\n<td>"._BWOMEMBERS1."</td>\n<td align=\"right\">\n<b>$member_online_num</b></td>\n</tr>\n"
."\n<tr>\n<td>"._BWOGUESTES."</td>\n<td align=\"right\">\n<b>$guest_online_num</b></td>\n</tr>\n"
."</table>\n";
if ($guest == 0 || $isseradmin) {   # Wenn angemeldeter User
   # Onlineliste anzeigen wenn User online sind
   if($member_online_num>0){
      if($onlinelistsize>=$member_online_num) {$onlinelistsize=$member_online_num+1;}
      $content .= "<div style=\"border: 0px; margin-bottom: 5px;\">"._BWOLATEMEMBER."\n<A HREF=\"modules.php?name=Your_Account&op=userinfo&uname=$lastuser\">$lastuser</a></div>\n";
      if($guest){
         $script = "";
         }
      else{
         $script = " onDblClick=\"clickit()\"";
         $content .= "
<!--
function clickit(){
   var y=document.onlineuserinfo.uname.selectedIndex;
   var x=document.onlineuserinfo.uname.options[y].value;
   window.open('modules.php?name=$pm_module_name&file=buddy&op=compose&to='+x, '".md5(time())."','left=370,top=150,width=360,height=200,toolbar=no,location=no,menubar=no,scrollbars=yes,resizeable=yes,status=no');
   return false;
   }
//-->
";
      }
   #background-color: $bgcolor1; font-size: 9px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: $txtcolor1; width: 90%; border: 0px $bgcolor1;
   
   $content .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border: 0px; margin-bottom: 5px;\">\n";
   $content .= "\n<tr>\n<td colspan=\"2\" align=\"center\">\n";
   $content .= "<img src=\"$imagedir/guy_hand.gif\" width=\"19\" height=\"19\" border=\"0\" Alt=\""._BWOPICS."\" align=\"absmiddle\">\n<b>"._BWOONLINELIST."</b>\n<img src=\"$imagedir/girl_hand.gif\" width=\"19\" height=\"19\" border=\"0\" Alt=\""._BWOPICS."\" align=\"absmiddle\">\n";
   $content .= "</td>\n</tr>\n";
   $content .= "\n<tr>\n<td colspan=\"2\" align=\"center\">";   # select-options verwenden
   $content .= "<form action=\"modules.php?test\" name=\"onlineuserinfo\" method=\"get\" style=\"border: 0px; margin-bottom: 5px; margin-top: 0px;\">";
   $content .= "<input type=\"hidden\" name=\"name\" value=\"Your_Account\">";
   $content .= "<input type=\"hidden\" name=\"op\" value=\"userinfo\">";
   $content .= "<select name=\"uname\" size=\"$onlinelistsize\" style=\" background-color: $bgcolor1; font-size: 9px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: $txtcolor1; width: 90%; cursor : hand;   border: 1px solid $bgcolor2; text-decoration: none; padding-left: 1px; padding-top: 1px; padding-bottom: 1px;\" $script>$whoonlineselect</select>";
   $content .= "\n<input type=\"image\" src=\"$pmimagepath/info.gif\" alt=\""._BWOUSERINFO."\">";
   $content .= "</form>\n";
   $content .= "</td>\n</tr>\n";
   $content .= "</table>\n";
   }
   # private messages
   if ($pmactiv){
      # pm Liste
      $content .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border: 0px; margin-bottom: 5px;\">\n";
      if ($countpm){
         $content .= "\n<tr>\n<td colspan=\"3\" align=\"center\"><a href=\"modules.php?name=Private_Messages\">"._BWOPMSG."</a></td>\n</tr>\n";
         $content .= "\n<tr>\n<td align=\"center\"><a href=\"modules.php?name=Private_Messages\"><img src=\"$imagedir/pmessage.gif\" width=\"19\" height=\"19\" border=\"0\" Alt=\""._BWOPMSG."\"></a></td>\n";
         $content .= "<td valign=\"top\">"._BWOPMSGALL.":\n"._BWOPMSGUNREAD.":</td>\n";
         $content .= "<td valign=\"top\" align=\"right\"><b>$countpm</b>\n";
         if($countpmunread){
            $content .= "<marquee behavior=\"alternate\" direction=\"left\" hspace=\"0\" vspace=\"0\" loop=\"\" height=\"5\" align=\"right\"><b><blink>$countpmunread</blink></b></marquee>";
            }
         else{
            $content .= "<b>$countpmunread</b>";
            }
         $content .= "</td>\n</tr>\n";
         }
      else{
         $content .= "<tr><td><a href=\"modules.php?name=Private_Messages\"><img src=\"$imagedir/pmessage.gif\" width=\"19\" height=\"19\" border=\"0\" Alt=\""._BWOPMSG."\" hspace=\"0\"></a></td><td><a href=\"modules.php?name=Private_Messages\">"._BWOPMSG."</a></td></tr>\n";
         }
      $content .= "</table>\n";
   # Buddy
      if ($showbuddy){
         $windowname=md5($sitename);
         $content .= "
         <a href=\"#\" onClick=\"window.open('modules.php?name=Private_Messages&file=buddy','$windowname','left=180, top=150, width=200,height=350,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,copyhistory=0'); return false;\">
         <img src=\"$imagedir/buddy.gif\" border=\"0\" Alt=\""._BWOBUDDIE."\"></a>\n";
         }
      }
   }
else{   # Gast no user
   $content .= "<div align=\"justify\">\n"._BWOASREGISTERED."</div>\n";
   }

$agent = strtoupper(getenv ("HTTP_USER_AGENT"));
if (strstr($agent,"MSIE 5")
|| strstr($agent,"MSIE 6")
|| strstr($agent,"MSIE 7")
|| strstr($agent,"MSIE 8")
|| strstr($agent,"MSIE 4")
|| strstr($agent,"MSIE+4")
|| strstr($agent,"Explorer/4")
|| strstr($agent,"OPERA")
|| strstr($agent,"NETSCAPE6")
|| strstr($agent,"GECKO/2")
|| strstr($agent,"MOZILLA/5")
){
   $checkpmfile="modules.php?name=$pm_module_name&file=buddy&op=check&ref_intervall=$checkpmtime";
   $content.= "<div id=\"who_checkpm\"> </div>";
   $content.= "
   
      var who_checkpm_anf='';
      var who_dom = !!document.getElementById;
      if(who_dom) document.getElementById('who_checkpm').innerHTML = who_checkpm_anf + '$checkpmfile' + who_checkpm_end;
      else document.all['who_checkpm'].innerHTML = who_checkpm_anf + '$checkpmfile' + who_checkpm_end;
   \n";

}
$content .= "</div>\n<!-- $thisfile output end -->\n";
# Blocktitel aus Sprachdatei auslesen
$blockfiletitle=_BWOMAAXONLINE;
?>


[Editiert am 9/1/2004 von Alkuinia]

DarkBoy

Alles recht alte Versionen. Du solltest mal unbedingt ein UPDATE machen auf das mx2.x
Wir hatten dies Problem schon mal, aber ich muss suchen was es war, da es mir nicht einfällt auf die Schnelle.

PS. Es sind ausreichend Scriptgehler auf deiner seite vom Themen vorhanden, solltest du auch mal nach schauen.

Alkuinia

Das mit den alten Versionen wird mir klar wenn ich ab und zu Eure Homepage besuche. Ihr entwickelt ja rasentschnell neue Sachen.
An ein Update hab ich auch schon gedacht, habe die neuen Versionen auch bereits runter geladen, aber Du hast sicher gemerkt, wie sind Theologen und die tun sich mit manchen Dingen schwer.
Bin ja heilfroh gewesen, das ich dieses System so laufen hatte, wie es jetzt läuft. Bin darin totaler Laie und hab natürlich dementsprechen Schiss vor einem Update, wer weiß was ich da dann alles anstelle und welche Daten verloren gehen. Überlege natürlich auch ob sich für unsere kleine Gruppe dies dann lohnt!
Aber auf jeden Fall schon mal Danke für deinen Besuch. Wäre schön, wenn Dir noch was einfallen würde!
Danke!!!