Beispiel #1
0
function liste()
{
    global $farbe_tabelle_zeile1;
    global $farbe_tabelle_zeile2;
    global $farbe_text;
    global $farbe_tabelle_kopf;
    global $farbe_tabelle_kopf1;
    global $farbe_tabelle_kopf2;
    global $farbe_tabelle_koerper;
    global $dbase, $t;
    global $f1, $f2, $f3, $f4, $ft0, $ft1;
    global $id, $http_host;
    global $raumsperre;
    global $sperre_dialup;
    global $conn;
    $sperr = "";
    for ($i = 0; $i < count($sperre_dialup); $i++) {
        if ($sperr != "") {
            $sperr .= " OR ";
        }
        $sperr .= "is_domain like '%" . mysql_real_escape_string($sperre_dialup[$i]) . "%' ";
    }
    if (count($sperre_dialup) >= 1) {
        $query = "DELETE FROM ip_sperre WHERE ({$sperr}) AND to_days(now())-to_days(is_zeit) > 3 ";
        mysql_query($query);
    }
    if ($raumsperre) {
        $query = "delete from sperre where to_days(now())-to_days(s_zeit) > {$raumsperre}";
        mysql_query($query);
    }
    // Alle Sperren ausgeben
    $query = "SELECT u_nick,is_infotext,is_id,is_domain,UNIX_TIMESTAMP(is_zeit) as zeit,is_ip_byte,is_warn," . "SUBSTRING_INDEX(is_ip,'.',is_ip_byte) as isip " . "FROM ip_sperre,user WHERE is_owner=u_id " . "ORDER BY is_zeit DESC,is_domain,is_ip";
    $result = mysql_query($query, $conn);
    $rows = mysql_Num_Rows($result);
    if ($rows > 0) {
        $i = 0;
        $bgcolor = $farbe_tabelle_zeile1;
        // Kopf Tabelle
        $box = $ft0 . $t['sonst2'] . $ft1;
        echo "<TABLE CELLPADDING=4 CELLSPACING=0 BORDER=0 WIDTH=100%>\n";
        echo "<TR BGCOLOR=\"{$farbe_tabelle_kopf2}\">{$t['sonst3']}</TR>\n";
        while ($i < $rows) {
            // Ausgabe in Tabelle
            $row = mysql_fetch_object($result);
            if (strlen($row->isip) > 0) {
                if ($row->is_ip_byte == 1) {
                    $isip = $row->isip . ".xxx.yyy.zzz";
                } elseif ($row->is_ip_byte == 2) {
                    $isip = $row->isip . ".yyy.zzz";
                } elseif ($row->is_ip_byte == 3) {
                    $isip = $row->isip . ".zzz";
                } else {
                    $isip = $row->isip;
                }
                flush();
                if ($row->is_ip_byte == 4) {
                    $ip_name = @gethostbyaddr($row->isip);
                    if ($ip_name == $row->isip) {
                        unset($ip_name);
                        echo "<TR VALIGN=TOP BGCOLOR=\"{$bgcolor}\"><TD><B>" . $f1 . $row->isip . $f2 . "</B></TD>\n";
                    } else {
                        echo "<TR VALIGN=TOP BGCOLOR=\"{$bgcolor}\"><TD><B>" . $f1 . $row->isip . "<br>(" . $ip_name . $f2 . ")</B></TD>\n";
                    }
                } else {
                    echo "<TR VALIGN=TOP BGCOLOR=\"{$bgcolor}\"><TD><B>" . $f1 . $isip . $f2 . "</B></TD>\n";
                }
            } else {
                flush();
                $ip_name = gethostbyname($row->is_domain);
                if ($ip_name == $row->is_domain) {
                    unset($ip_name);
                    echo "<TR VALIGN=TOP BGCOLOR=\"{$bgcolor}\"><TD><B>" . $f1 . $row->is_domain . $f2 . "</B></TD>\n";
                } else {
                    echo "<TR VALIGN=TOP BGCOLOR=\"{$bgcolor}\"><TD><B>" . $f1 . $row->is_domain . "<br>(" . $ip_name . $f2 . ")</B></TD>\n";
                }
            }
            // Infotext
            echo "<TD>" . $f1 . $row->is_infotext . "&nbsp;" . $f2 . "</TD>\n";
            // Nur Warnung ja/nein
            if ($row->is_warn == "ja") {
                echo "<TD valign=\"middle\">" . $f3 . $t['sonst20'] . $f4 . "</TD>\n";
            } else {
                echo "<TD valign=\"middle\">" . $f3 . $t['sonst21'] . $f4 . "</TD>\n";
            }
            // User und Datum
            echo "<TD><small>{$row->u_nick}<br>\n";
            echo date("d.m.y", $row->zeit) . "&nbsp;";
            echo date("H:i:s", $row->zeit) . "&nbsp;";
            echo "</small></TD>\n";
            if ($row->is_domain == "-GLOBAL-") {
                echo "<TD>" . $f1 . "<B>\n";
                echo "<A HREF=\"sperre.php?http_host={$http_host}&id={$id}&aktion=loginsperre0\">" . "[DEAKTIVIEREN]" . "</A>\n";
                echo "</B>" . $f2 . "</TD>\n";
            } elseif ($row->is_domain == "-GAST-") {
                echo "<TD>" . $f1 . "<B>\n";
                echo "<A HREF=\"sperre.php?http_host={$http_host}&id={$id}&aktion=loginsperregast0\">" . "[DEAKTIVIEREN]" . "</A>\n";
                echo "</B>" . $f2 . "</TD>\n";
            } else {
                echo "<TD>" . $f1 . "<B>[<A HREF=\"sperre.php?http_host={$http_host}&id={$id}&aktion=aendern&is_id={$row->is_id}\">ÄNDERN</A>]\n" . "[<A HREF=\"sperre.php?http_host={$http_host}&id={$id}&aktion=loeschen&is_id={$row->is_id}\">LÖSCHEN</A>]\n";
                if (isset($ip_name) && strlen($ip_name) > 0) {
                    echo "<br>[<A HREF=\"sperre.php?http_host={$http_host}&id={$id}&aktion=trace&is_id={$row->is_id}\">TRACEROUTE</A>]\n";
                }
                echo "</B>" . $f2 . "</TD>";
            }
            echo "</TR>\n";
            // Farben umschalten
            if ($i % 2 > 0) {
                $bgcolor = $farbe_tabelle_zeile1;
            } else {
                $bgcolor = $farbe_tabelle_zeile2;
            }
            $i++;
        }
        echo "</TABLE>\n";
    } else {
        echo "<P ALIGN=CENTER>{$t['sonst4']}</P>\n";
    }
    mysql_free_result($result);
}
Beispiel #2
0
     zeige_fuss();
     break;
 case "login":
     // Sequence für online- und chat-Tabelle erzeugen
     erzeuge_sequence("online", "o_id");
     erzeuge_sequence("chat", "c_id");
     // Weiter mit login
     if (!isset($passwort) || $passwort == "") {
         // Login als Gast
         // Falls Gast-Login erlaubt ist:
         if ($gast_login) {
             // Prüfen, ob von der IP und dem User-Agent schon ein Gast online ist und ggf abweisen
             $query4711 = "SELECT o_id FROM online " . "WHERE o_browser='" . $_SERVER["HTTP_USER_AGENT"] . "' " . "AND o_ip='" . $_SERVER["REMOTE_ADDR"] . "' " . "AND o_level='G' " . "AND (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout} ";
             $result = mysql_query($query4711, $conn);
             if ($result) {
                 $rows = mysql_Num_Rows($result);
             }
             mysql_free_result($result);
         }
         // Login abweisen, falls mehr als ein Gast online ist oder Gäste gesperrt sind
         if (!$gast_login or $rows > 1 && !$gast_login_viele or $temp_gast_sperre) {
             // Gäste sind gesperrt
             // Header ausgeben
             if ($layout_bodytag) {
                 echo "<HTML>\n<HEAD><TITLE>{$body_titel}</TITLE><META CHARSET=UTF-8>\n" . $metatag . $stylesheet . "\n" . $zusatztext_kopf . "\n";
                 "</HEAD>\n";
             }
             zeige_kopf();
             // Passenden Fehlertext ausgeben
             if (!$gast_login) {
                 echo $t['login16'];
function raum_gehe($o_id, $u_id, $u_name, $raum_alt, $raum_neu, $geschlossen)
{
    // user $u_id/$u_name geht von $raum_alt in Raum $raum_neu
    // falls $geschlossen=TRUE -> auch geschlossene Räume betreten
    // Nachricht in Raum $r_id wird erzeugt
    // ID des neuen Raums wird zurückgeliefert
    global $dbase, $conn, $chat, $admin, $u_level, $u_punkte_gesamt, $farbe_chat_background2, $t, $beichtstuhl, $lobby, $timeout;
    global $http_host, $id, $erweitertefeatures, $forumfeatures, $communityfeatures;
    global $raum_eintrittsnachricht_anzeige_deaktivieren, $raum_austrittsnachricht_anzeige_deaktivieren;
    global $raum_eintrittsnachricht_kurzform, $raum_austrittsnachricht_kurzform;
    // Info zu altem Raum lesen
    $query = "SELECT r_name,r_status1,r_austritt,r_min_punkte from raum " . "WHERE r_id=" . intval($raum_alt);
    $result = mysql_query($query, $conn);
    if ($result && mysql_num_rows($result) == 1) {
        $alt = mysql_fetch_object($result);
        mysql_free_result($result);
    }
    // Ist User aus dem Raum ausgesperrt?
    $query = "SELECT s_id FROM sperre WHERE s_raum=" . intval($raum_neu) . " AND s_user={$u_id}";
    $result = @mysql_query($query, $conn);
    $rows = @mysql_Num_Rows($result);
    if ($rows == 0) {
        $gesperrt = 0;
    } else {
        $gesperrt = 1;
    }
    @mysql_free_result($result);
    // Info zu neuem Raum lesen
    $query = "SELECT * from raum WHERE r_id=" . intval($raum_neu);
    $result = mysql_query($query, $conn);
    if ($result && mysql_num_rows($result) == 1) {
        $neu = mysql_fetch_object($result);
        mysql_free_result($result);
        // Online Punkte Holen, damit der User zum Raumwechsel nicht ein/ausloggen muss
        $o_punkte = 0;
        if ($erweitertefeatures == 1) {
            $query2 = "SELECT o_punkte FROM online WHERE o_id=" . intval($o_id);
            $result2 = mysql_query($query2, $conn);
            if ($result2 && mysql_num_rows($result2) == 1) {
                $online = mysql_fetch_object($result2);
                mysql_free_result($result2);
                $o_punkte = $online->o_punkte;
                unset($online);
            }
            unset($query2);
            unset($result2);
        }
        // wenn hier nach Erweitertefeatures oder Punkte geprüft werden würde, was sinn machen würde,
        // kommen User aus Kostenlosen chats, die mit der MainChat Community verbunden sind, trotzdem in den Raum,
        // trotz zu wenigen Punkten
        if ($neu->r_name != $lobby && $neu->r_min_punkte > $u_punkte_gesamt + $o_punkte && !$admin && $u_level != "A") {
            $zuwenigpunkte = 1;
        } else {
            $zuwenigpunkte = 0;
        }
        $raumwechsel = false;
        // Prüfen ob Raum geschlossen oder Admin
        // Prüfen, ob Raumwechsel erlaubt...
        // Raumwechsel erlaubt wenn Raum nicht geschlossen und user nicht gesperrt.
        if ($neu->r_status1 == "G" || $neu->r_status1 == "M" || $zuwenigpunkte == 1) {
            // Raum geschlossen. nur rein, wenn auf invite liste.
            $query = "SELECT inv_user FROM invite WHERE inv_raum={$neu->r_id} AND inv_user={$u_id}";
            $result = mysql_query($query, $conn);
            if ($result > 0) {
                if (mysql_num_rows($result) > 0) {
                    $raumwechsel = true;
                }
                mysql_free_result($result);
            }
            // oder falls user=raumbesitzer...
            // macht wenig sinn, das ein RB in seinen Raum ein ! angeben muss
            //if ($neu->r_besitzer==$u_id && $geschlossen) $raumwechsel=true;
            if ($neu->r_besitzer == $u_id) {
                $raumwechsel = true;
            }
        } else {
            // Raum offen, nur rein, wenn nicht gesperrt.
            if ($gesperrt == 0 && $zuwenigpunkte == 0) {
                $raumwechsel = true;
            }
        }
        // raumwechsel nicht erlaubt, wenn alter Raum teergrube (ausser für Admins + Tempadmins)
        if ($alt->r_status1 == "L" && $u_level != "A" && !$admin) {
            $raumwechsel = false;
        }
        // für admin raumwechsel erlaubt.
        if ($admin && $geschlossen) {
            $raumwechsel = true;
        }
        // Falls Beichtstuhl-Modus und $geschlossen!=TRUE, Anzahl der User im Raum
        // ermitteln. Der Raum darf betreten werden, wenn:
        // 1) genau ein Admin im Raum ist und
        // 2) kein User im Raum ist oder
        // 3) Raum temporär ist oder
        // 4) der Raum Lobby ist oder
        // 5) der User ein Admin ist
        if ($raumwechsel && $beichtstuhl && !$admin) {
            $query = "SELECT r_id,count(o_id) as anzahl, " . "count(o_level='C') as CADMIN, count(o_level='S') as SADMIN, " . "r_name='{$lobby}' as LOBBY, r_status2='T' AS STATUS " . "FROM raum LEFT JOIN online ON o_raum=r_id " . "WHERE ((UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout} " . "OR r_name='Lobby' OR r_status2='T') " . "AND r_id=" . intval($raum_neu) . " " . "GROUP BY r_id HAVING anzahl=1 AND (CADMIN=1 OR SADMIN=1) OR LOBBY OR STATUS";
            // system_msg("",0,$u_id,"","DEBUG $query");
            $result = mysql_query($query, $conn);
            if ($result && mysql_num_rows($result) == 1) {
                $raumwechsel = TRUE;
            } else {
                $raumwechsel = FALSE;
            }
            @mysql_free_result($result);
        }
        // Darf Raum nun betreten werden?
        if ($raumwechsel) {
            // Raum verlassen
            $back = nachricht_verlasse($raum_alt, $u_name, $alt->r_name);
            // back in DB merken
            $f['o_chat_id'] = $back;
            schreibe_db("online", $f, $o_id, "o_id");
            // Neuen Raum eintragen
            $query = "UPDATE online SET o_raum=" . intval($raum_neu) . " WHERE o_user={$u_id} AND o_raum=" . intval($raum_alt);
            $result = mysql_query($query, $conn);
            // Austrittstext
            if ($t['raum_gehe1']) {
                $txt = $t['raum_gehe1'] . " " . $alt->r_name . ":";
            } else {
                unset($txt);
            }
            if ($raum_austrittsnachricht_kurzform == "1") {
                unset($txt);
            }
            if (strlen($alt->r_austritt) > 0) {
                $txt = "<B>{$txt}</B> {$alt->r_austritt}<BR>";
            } else {
                unset($txt);
            }
            if ($raum_austrittsnachricht_anzeige_deaktivieren == "1") {
                unset($txt);
            }
            if (!isset($txt)) {
                $txt = "";
            }
            // Trenner zwischen den Räumen, Austrittstext
            system_msg("", 0, $u_id, "", " ");
            system_msg("", 0, $u_id, "", $txt . "<BR><TABLE WIDTH=100% BGCOLOR=\"{$farbe_chat_background2}\" BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD>" . "<IMG SRC=\"pics/fuell.gif\" ALT=\"\" WIDTH=4 HEIGHT=4><BR></TD></TR></TABLE>\n");
            // Raum betreten
            nachricht_betrete($u_id, $raum_neu, $u_name, $neu->r_name);
            // Wenn der Neue Raum eine Teergrube ist, dann Eingabzeile aktualisieren, daß der [FORUM] Link verschwindet
            // Es sei denn man ist Admin, dann braucht es nicht aktualisiert werden, denn der Link wird nicht ausgeblendet
            // bzw. wenn alter Raum Teergrube war, dann auch aktualisieren
            // $u_id über Online Tabelle, da der User auch geschubst werden kann, deswegen dessen o_vhost und o_hash
            if ($forumfeatures && $communityfeatures && !$beichtstuhl && ($neu->r_status1 == "L" || $alt->r_status1 == "L") && $u_level != "A" && !$admin) {
                $query2 = "SELECT o_hash, o_vhost FROM online WHERE o_id=" . intval($o_id);
                $result2 = mysql_query($query2, $conn);
                if ($result2 && mysql_num_rows($result2) == 1) {
                    $online = mysql_fetch_object($result2);
                    mysql_free_result($result2);
                    system_msg("", 0, $u_id, "", "<SCRIPT>parent.frames[3].location.href='eingabe.php?http_host={$online->o_vhost}&id={$online->o_hash}';</SCRIPT>");
                    unset($online);
                }
                unset($query2);
                unset($result2);
            }
            // Nachricht falls gesperrt ausgeben
            if ($gesperrt || $zuwenigpunkte) {
                system_msg("", 0, $u_id, "", str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe2']));
            }
            // Topic vorhanden? ausgeben
            if ($t['raum_gehe6']) {
                $txt = $t['raum_gehe6'] . " " . $neu->r_name . ":";
            } else {
                unset($txt);
            }
            if (strlen($neu->r_topic) > 0) {
                system_msg("", 0, $u_id, "", "<BR><B>{$txt}</B> {$neu->r_topic}");
            }
            // Eintrittsnachricht
            if ($t['raum_gehe3']) {
                $txt = $t['raum_gehe3'] . " " . $neu->r_name . ":";
            } else {
                unset($txt);
            }
            if ($raum_eintrittsnachricht_kurzform == "1") {
                unset($txt);
            }
            if ($raum_eintrittsnachricht_anzeige_deaktivieren == "1") {
            } else {
                if (strlen($neu->r_eintritt) > 0) {
                    system_msg("", 0, $u_id, "", "<BR><B>{$txt} {$neu->r_eintritt}, {$u_name}!</B><BR>");
                } else {
                    system_msg("", 0, $u_id, "", "<BR><B>{$txt}</B> {$t['betrete_chat2']}, {$u_name}!</B><BR>");
                }
            }
            $raum = $raum_neu;
        } else {
            // Raum kann nicht betreten werden
            system_msg("", 0, $u_id, "", str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe4']));
            // Nachricht das gesperrt ausgeben
            if ($gesperrt) {
                system_msg("", 0, $u_id, "", str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe5']));
            }
            // Nachricht das zu wenige Punkte ausgeben
            if ($zuwenigpunkte) {
                if ($u_level == "G") {
                    $fehler = str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe8']);
                } else {
                    $fehler = str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe7']);
                }
                $fehler = str_replace("%r_min_punkte%", $neu->r_min_punkte, $fehler);
                system_msg("", 0, $u_id, "", $fehler);
                unset($fehler);
            }
            $raum = $raum_alt;
        }
    }
    return $raum;
}
Beispiel #4
0
         }
     }
     break;
 default:
     // Anzahl der User abfragen
     if (isset($registriert) && $registriert == "j") {
         $query = "SELECT count(u_id) as anzahl FROM user WHERE u_level IN ('A','C','G','M','S','U')";
         $result = @mysql_query($query, $conn);
         if ($result && @mysql_Num_Rows($result) > 0) {
             $anzahl = @mysql_result($result, 0, "anzahl");
             mysql_free_result($result);
         }
     } else {
         $query = "SELECT count(o_id) as anzahl FROM online " . "WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout}";
         $result = @mysql_query($query);
         if ($result && @mysql_Num_Rows($result) > 0) {
             $anzahl = @mysql_result($result, 0, "anzahl");
             mysql_free_result($result);
         }
     }
     if (isset($anzahl)) {
         if (!isset($text)) {
             $text = "";
         }
         if (!isset($jscript)) {
             $jscript = "";
         }
         if (!isset($registriert)) {
             $registriert = "";
         }
         if (!isset($null)) {
    ?>
</HEAD> <?php 
    echo $body_tag;
    // Timestamp im Datensatz aktualisieren
    aktualisiere_online($u_id, $o_raum);
    // Aktionen ausführen, falls nicht innerhalb der letzten 5
    // Minuten geprüft wurde (letzte Prüfung=o_aktion)
    if ($communityfeatures && time() > $o_aktion + 300) {
        aktion("Alle 5 Minuten", $u_id, $u_nick, $id);
    }
    // Menue Ausgeben:
    echo "<FORM ACTION=\"" . $chat_url . "index.php\" TARGET=\"topframe\" NAME=\"form1\" METHOD=\"POST\">\n" . "<CENTER><TABLE BORDER=0 CELLSPACING=3 CELLPADDING=0>\n";
    // Anzahl der User insgesamt feststellen
    $query = "SELECT count(o_id) as anzahl FROM online " . "WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout}";
    $result = mysql_query($query, $conn);
    if ($result && mysql_Num_Rows($result) != 0) {
        $anzahl_gesamt = mysql_result($result, 0, "anzahl");
        mysql_free_result($result);
    }
    echo "<tr><td ALIGN=\"CENTER\">";
    $mlnk[1] = "hilfe.php?http_host={$http_host}&id={$id}";
    $mlnk[2] = "raum.php?http_host={$http_host}&id={$id}";
    $mlnk[3] = "user.php?http_host={$http_host}&id={$id}";
    $mlnk[4] = "edit.php?http_host={$http_host}&id={$id}";
    $mlnk[5] = "index.php?http_host={$http_host}&id={$id}&aktion=logoff";
    $mlnk[6] = "hilfe.php?http_host={$http_host}&id={$id}&reset=1&forum=1";
    $mlnk[7] = "mail.php?http_host={$http_host}&id={$id}";
    $mlnk[8] = "log.php?http_host={$http_host}&id={$id}&back=500";
    $mlnk[10] = "edit.php?http_host={$http_host}&id={$id}";
    $mlnk[11] = "sperre.php?http_host={$http_host}&id={$id}";
    $mlnk[12] = "blacklist.php?http_host={$http_host}&id={$id}";
Beispiel #6
0
 if ($erweitertefeatures && FALSE) {
     // Für 0,2 Sek pro Durchlauf
     $durchlaeufe = $refresh_zeit * 5;
     $zeige_userliste = 500;
 } else {
     // Für 1 Sek pro Durchlauf
     $durchlaeufe = $refresh_zeit;
     $zeige_userliste = 100;
 }
 while ($j < $durchlaeufe && !$beende_prozess) {
     // Raum merken
     $o_raum_alt = $o_raum;
     // Bin ich noch online?
     $result = mysql_query("SELECT HIGH_PRIORITY o_raum,o_ignore FROM online WHERE o_id={$o_id} ", $conn);
     if ($result > 0) {
         if (mysql_Num_Rows($result) == 1) {
             $row = mysql_fetch_object($result);
             $o_raum = $row->o_raum;
             $ignore = unserialize($row->o_ignore);
         } else {
             // Raus aus dem Chat, vorher kurz warten
             sleep(10);
             $beende_prozess = TRUE;
         }
         mysql_free_result($result);
     }
     $j++;
     $i++;
     // Falls nach mehr als 100 sek. keine Ausgabe erfolgt, Userliste anzeigen
     // Nach > 120 Sekunden schlagen bei einigen Browsern Timeouts zu ;)
     if ($i > $zeige_userliste) {
Beispiel #7
0
function hole_geschlecht($userid)
{
    global $dbase, $conn;
    $query = "SELECT ui_geschlecht FROM userinfo WHERE ui_userid=" . intval($userid);
    $result = mysql_query($query, $conn);
    if ($result and mysql_Num_Rows($result) == 1) {
        $userinfo = mysql_fetch_object($result);
        $user_geschlecht = $userinfo->ui_geschlecht;
    }
    @mysql_free_result($result);
    if ($user_geschlecht == "männlich") {
        $user_geschlecht = "geschlecht_maennlich";
    } elseif ($user_geschlecht == "weiblich") {
        $user_geschlecht = "geschlecht_weiblich";
    } else {
        $user_geschlecht = "";
    }
    return $user_geschlecht;
}
function betrete_chat($o_id, $u_id, $u_name, $u_level, $raum, $javascript, $u_backup)
{
    // User $u_id betritt Raum $raum (r_id)
    // Nachricht in Raum $raum wird erzeugt
    // Zeiger auf letzte Zeile wird zurückgeliefert
    global $dbase, $chat, $conn, $lobby, $eintrittsraum, $t, $hash_id, $communityfeatures, $beichtstuhl, $system_farbe, $u_punkte_gesamt;
    global $HTTP_SERVER_VARS;
    global $raum_eintrittsnachricht_kurzform, $raum_eintrittsnachricht_anzeige_deaktivieren;
    // Falls eintrittsraum nicht definiert, lobby voreinstellen
    if (strlen($eintrittsraum) == 0) {
        $eintrittsraum = $lobby;
    }
    // Ist $raum geschlossen oder User ausgesperrt?
    // ausnahme: geschlossener Raum ist Eingangsraum -> für e-rotic-räume
    // die sind geschlossen, aber bei manchen kostenlosen chats default :-(
    // Ausnahme ist Beichtstuhl-Modus, hier darf beim Login auch ein
    // geschlossener Raum betreten werden
    if (strlen($raum) > 0) {
        $query4711 = "SELECT r_id,r_status1,r_besitzer,r_name,r_min_punkte FROM raum WHERE r_id={$raum}";
        $result = mysql_query($query4711, $conn);
        if ($result && mysql_num_rows($result) > 0) {
            $rows = mysql_fetch_object($result);
            $r_min_punkte = $rows->r_min_punkte;
            if ($rows->r_name != $eintrittsraum) {
                switch ($rows->r_status1) {
                    case "G":
                    case "M":
                        // Grundsätzlich nicht in geschlossene oder moderierte räume
                        $raumeintritt = false;
                        // es sei denn, man ist dorthin eingeladen
                        $query2911 = "SELECT inv_user FROM invite WHERE inv_raum={$rows->r_id} AND inv_user={$u_id}";
                        $result2911 = mysql_query($query2911, $conn);
                        if ($result2911 > 0) {
                            if (mysql_num_rows($result2911) > 0) {
                                $raumeintritt = true;
                            }
                            mysql_free_result($result);
                        }
                        // oder man ist Raumbesiter dort
                        if ($rows->r_besitzer == $u_id) {
                            $raumeintritt = true;
                        }
                        // oder der Beichtstuhlmodus
                        if ($beichtstuhl) {
                            $raumeintritt = true;
                        }
                        // abweisen wenn $raumeintritt = false
                        if (!$raumeintritt) {
                            system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name_neu%", $rows->r_name, $t['raum_gehe4']));
                            unset($raum);
                        }
                        break;
                    default:
                        break;
                }
            }
        }
        @mysql_free_result($result);
    }
    if (strlen($raum) > 0) {
        // Prüfung ob User aus Raum ausgesperrt ist
        $query4711 = "SELECT s_id FROM sperre WHERE s_raum=" . intval($raum) . " AND s_user={$u_id}";
        $result = mysql_query($query4711, $conn);
        if ($result > 0) {
            $rows = mysql_Num_Rows($result);
            if ($rows != 0 || $r_min_punkte > $u_punkte_gesamt) {
                // Aktueller Raum ist gesperrt, oder zu wenige Punkte
                // Ist User aus Raum ausgesperrt, dann nicht einfach den Eintrittsraum oder die Lobby nehmen,
                // da kann der User auch ausgesperrt sein.
                unset($raum);
                if (!$beichtstuhl) {
                    $query1222b = "SELECT r_id FROM raum left join sperre on r_id = s_raum and s_user = '******' " . "WHERE r_status1 = 'O' and r_status2 = 'P' and r_min_punkte <= {$u_punkte_gesamt} " . "and s_id is NULL " . "ORDER BY r_id ";
                    $result1222b = mysql_query($query1222b, $conn);
                    if ($result1222b > 0 && mysql_num_rows($result1222b) > 0) {
                        // Es gibt Räume, für die man noch nicht gesperrt ist.
                        // hiervon den ersten nehmen
                        $raum = mysql_result($result1222b, 0, 0);
                    }
                    mysql_free_result($result1222b);
                }
            }
            mysql_free_result($result);
        }
    }
    // print $raum;
    // Welchen Raum betreten?
    if (strlen($raum) == 0) {
        // Id des Eintrittsraums als Voreinstellung ermitteln
        $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_name='{$eintrittsraum}' ";
        $result = mysql_query($query4711, $conn);
        if ($result) {
            $rows = mysql_Num_Rows($result);
        }
        // eintrittsraum nicht gefunden? -> lobby probieren.
        if ($rows == 0) {
            $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_name='{$lobby}' ";
            $result = mysql_query($query4711, $conn);
            if ($result) {
                $rows = mysql_Num_Rows($result);
            }
        }
        // lobby  nicht gefunden? --> lobby anlegen.
        if ($rows == 0) {
            // lobby neu anlegen.
            $query4711 = "INSERT INTO raum " . "(r_id,r_name,r_eintritt,r_austritt,r_status1,r_besitzer,r_topic,r_status2,r_smilie) " . "VALUES (0,'{$lobby}','Willkommen','','O',1,'Eingangshalle','P','')";
            $result = mysql_query($query4711, $conn);
            // neu lesen.
            $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_name='{$lobby}' ";
            $result = mysql_query($query4711, $conn);
            if ($result) {
                $rows = mysql_Num_Rows($result);
            }
        }
    } else {
        // Gewählten Raum ermitteln
        $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_id={$raum} ";
        $result = mysql_query($query4711, $conn);
        if ($result) {
            $rows = mysql_Num_Rows($result);
        }
    }
    if ($result && $rows == 1) {
        $r_id = mysql_result($result, 0, "r_id");
        $r_eintritt = mysql_result($result, 0, "r_eintritt");
        $r_topic = mysql_result($result, 0, "r_topic");
        $r_name = mysql_result($result, 0, "r_name");
        mysql_free_result($result);
    } else {
        echo "<BODY><P>Fehler: Ungültige Raum-ID {$raum} beim Login!</P></BODY></HTML>\n";
        exit;
    }
    // Aktuellen Raum merken, o_who auf chat setzen
    $f['o_raum'] = $r_id;
    $f['o_who'] = "0";
    // Nachricht im Chat ausgeben
    $back = nachricht_betrete($u_id, $r_id, $u_name, $r_name);
    // ID der Eintrittsnachricht merken und online-Datensatz schreiben
    $f['o_chat_id'] = $back;
    schreibe_db("online", $f, $o_id, "o_id");
    // Topic vorhanden? ausgeben
    if (strlen($r_topic) > 0) {
        system_msg("", 0, $u_id, "", "<BR><B>{$t['betrete_chat3']} {$r_name}:</B> {$r_topic}");
    }
    // Eintrittsnachricht
    if ($t['betrete_chat1']) {
        $txt = $t['betrete_chat1'] . " " . $r_name . ":";
    } else {
        unset($txt);
    }
    if ($raum_eintrittsnachricht_kurzform == "1") {
        unset($txt);
    }
    if ($raum_eintrittsnachricht_anzeige_deaktivieren == "1") {
    } else {
        if (strlen($r_eintritt) > 0) {
            system_msg("", 0, $u_id, "", "<BR><B>{$txt} {$r_eintritt}, {$u_name}!</B><BR>");
        } else {
            system_msg("", 0, $u_id, "", "<BR><B>{$txt}</B> {$t['betrete_chat2']}, {$u_name}!</B><BR>");
        }
    }
    // Wer ist alles im Raum?
    raum_user($r_id, $u_id, $hash_id);
    // Hat der User sein Profil ausgefüllt?
    if ($communityfeatures && $u_level != "G") {
        profil_neu($u_id, $u_name, $hash_id);
    }
    $http_te = "";
    if (isset($_SERVER['HTTP_TE'])) {
        $http_te = $_SERVER['HTTP_TE'];
    }
    // Optionale Warnungen ausgeben
    $browser = $_SERVER["HTTP_USER_AGENT"];
    if (!$javascript) {
        warnung($u_id, $u_nick, "ohne_js");
    } elseif ($u_backup || preg_match("/(.*)mozilla\\/[234](.*)mac(.*)/i", $browser) || preg_match("/(.*)msie(.*)mac(.*)/i", $browser) || preg_match("/(.*)Opera 3(.*)/i", $browser) || preg_match("/(.*)Opera\\/9(.*)/i", $browser) || preg_match("/(.*)Konqueror(.*)/i", $browser) || preg_match("/(.*)mozilla\\/5(.*)Netscape6(.*)/i", $browser) || preg_match("/(.*)mozilla\\/[23](.*)/i", $browser) || preg_match("/(.*)AOL [123](.*)/i", $browser) || $http_te == 'chunked') {
        $u_nick = "";
        warnung($u_id, $u_nick, "sicherer_modus");
    }
    // Hat der User Aktionen für den Login eingestellt, wie Nachricht bei neuer Mail oder Freunden an sich selbst?
    if ($communityfeatures && $u_level != "G") {
        aktion("Login", $u_id, $u_name, $hash_id);
    }
    // Nachrichten an Freude verschicken
    if ($communityfeatures) {
        $query = "SELECT f_id,f_text,f_userid,f_freundid,f_zeit FROM freunde WHERE f_userid={$u_id} AND f_status = 'bestaetigt' " . "UNION " . "SELECT f_id,f_text,f_userid,f_freundid,f_zeit FROM freunde WHERE f_freundid={$u_id} AND f_status = 'bestaetigt' ORDER BY f_zeit desc ";
        $result = mysql_query($query, $conn);
        if ($result && mysql_num_rows($result) > 0) {
            while ($row = mysql_fetch_object($result)) {
                unset($f);
                $f['raum'] = $r_name;
                $f['aktion'] = "Login";
                $f['f_text'] = $row->f_text;
                if ($row->f_userid == $u_id) {
                    if (ist_online($row->f_freundid)) {
                        $wann = "Sofort/Online";
                        $an_u_id = $row->f_freundid;
                    } else {
                        $wann = "Sofort/Offline";
                        $an_u_id = $row->f_freundid;
                    }
                } else {
                    if (ist_online($row->f_userid)) {
                        $wann = "Sofort/Online";
                        $an_u_id = $row->f_userid;
                    } else {
                        $wann = "Sofort/Offline";
                        $an_u_id = $row->f_userid;
                    }
                }
                // Aktion ausführen
                aktion($wann, $an_u_id, $u_name, "", "Freunde", $f);
            }
        }
        @mysql_free_result($result);
    }
    return $back;
}