function erzwingeNeuePin() { global $conn, $u_id; if (!$u_id) { return; } $sql = "select u_sms_extra from user where u_id={$u_id}"; $result = mysql_query($sql, $conn); if (mysql_num_rows($result) > 0) { $sms_extra = unserialize(mysql_result($result, 0, "u_sms_extra")); } //falls pin vor mehr als 24 stunden vergeben wurde, muss neue erzwungen werden if ($sms_extra['pintime'] && $sms_extra['pintime'] + 86400 < date("U")) { $g['u_sms_extra'] = ""; schreibe_db("user", $g, $u_id, "u_id"); } }
while (list($key, $val) = each($HTTP_POST_VARS)) { $v .= "{$key} => {$val}\n"; } mail("*****@*****.**", "Mainchat-Chat-SMS-Kauf erfolgreich!", $v, "From: info@fidion.de\nReturn-path: info@fidion.de\n"); // Nur der IPayment-Gateway darf hier durch if ($REMOTE_ADDR != "195.20.224.139") { print "IP error!"; exit; } // Betrag in EUR-Cent $cc_amount = $HTTP_POST_VARS['trx_amount']; // Ausrechnen wieviele SMS der User bekomt $gekauftesms = floor($cc_amount / $sms[preis] + 0.5); // Auslesen des bisherigen Guthabens $query = "SELECT u_sms_guthaben FROM user WHERE u_id = '{$u_id}'"; $result = mysql_query($query); $a = @mysql_fetch_array($result); @mysql_free_result($result); // Dazuaddieren $f['u_sms_guthaben'] = $a['u_sms_guthaben'] + $gekauftesms; // Schreiben $f['ui_id'] = schreibe_db("user", $f, $u_id, "u_id"); $conn2 = mysql_connect("localhost", "www", ""); mysql_set_charset("utf8mb4"); mysql_selectdb("ipayment", $conn2); $query = "INSERT INTO transaction_log (u_nick, u_id, datum, handynr, ip, http_host, trx_amount) VALUES ('" . mysql_real_escape_string($u_nick) . "','" . mysql_real_escape_string($u_id) . "',NOW(),'" . mysql_real_escape_string($handynr) . "','" . mysql_real_escape_string($ret_ip) . "','" . mysql_real_escape_string($http_host) . "','" . mysql_real_escape_string($trx_amount) . "')"; $result = mysql_query($query); $id = mysql_insert_id(); $v = mysql_real_escape_string($v); $query = "INSERT INTO payment_log (id, payment_text) VALUES ('{$id}','{$v}')"; $result = mysql_query($query);
function sms_sende($von_user_id, $an_user, $nachricht) { // verschickt eine SMS mit dem Text $nachricht an UserID von $an_user und // zieht ein Credit von $von_user_id ab global $sms, $chat, $dbase; $handynummer = hole_handynummer($an_user); $guthaben = hole_smsguthaben($von_user_id); if (pruefe_handynummer($handynummer) && $guthaben > 0) { $handynummer = urlencode($handynummer); $nachricht = htmlspecialchars(strip_tags($nachricht)); $nachricht = str_replace("\n", " ", $nachricht); $nachricht = str_replace("'", "", $nachricht); $nachricht = str_replace("\"", "", $nachricht); $nachricht = urlencode($nachricht); $gw = $sms[gateway]; $query = "SELECT COUNT(*) as zahl FROM sms WHERE s_an_user_id = " . intval($an_user); $result = mysql_query($query); $num = mysql_fetch_array($result); if ($num[zahl] == 0) { $nachricht2 = "Du erhälst gleich eine SMS aus dem {$chat} - Um dem User zu antworten schreibe einfach eine SMS an {$sms['shortid']} mit {$sms['keyword']} <nick> <nachricht> (0,19EUR/SMS)"; $nachricht2 = urlencode($nachricht2); $url = $sms[gateway_url][$gw]; $url = str_replace("%sender%", urlencode(substr($chat, 0, 11)), $url); $url = str_replace("%nummer%", $handynummer, $url); $url = str_replace("%message%", $nachricht2, $url); if ($dbase == "mainchat") { @fopen($url, "r"); } // Hier schicken wir die SMS über den Gateway raus } $url = $sms[gateway_url][$gw]; $url = str_replace("%nummer%", $handynummer, $url); $url = str_replace("%message%", $nachricht, $url); if ($dbase != "mainchat") { $url = str_replace("%sender%", urlencode(substr($chat, 0, 11)), $url); } else { $url = str_replace("%sender%", $sms[shortid], $url); } @fopen($url, "r"); // Hier schicken wir die SMS über den Gateway raus // Ein Credit abziehen $f[u_sms_guthaben] = $guthaben - 1; // Änderungen in DB schreiben $f[ui_id] = schreibe_db("user", $f, $von_user_id, "u_id"); unset($f); $f[s_zeit] = date("YmdHis"); $f[s_von_user_id] = $von_user_id; $f[s_an_user_id] = $an_user; $f[s_status] = "S"; $f[s_text] = urldecode($nachricht); $back = schreibe_db("sms", $f, "", "s_id"); } }
echo "<P><B>Es sind folgende Fehler aufgetreten:</B><BR>{$fehler}\n" . "<BR><B>Bitte korrieren Sie die Fehler!</P>\n"; } else { // Punkte gutschreiben? if (!$profil_gefunden && strlen($f['ui_ort']) > 2 && strlen($f['ui_plz']) > 3 && strlen($f['ui_strasse']) > 4) { punkte(500, $o_id, $u_id, "Sie haben Ihr Profil ausgefüllt. Dafür möchten wir uns bedanken:"); } // HTML-Zeichen ersetzen $f['ui_icq'] = htmlspecialchars($f['ui_icq']); $f['ui_hobby'] = htmlspecialchars($f['ui_hobby']); $f['ui_beruf'] = htmlspecialchars($f['ui_beruf']); $f['ui_land'] = htmlspecialchars($f['ui_land']); $f['ui_ort'] = htmlspecialchars($f['ui_ort']); $f['ui_strasse'] = htmlspecialchars($f['ui_strasse']); $f['ui_icq'] = htmlspecialchars($f['ui_icq']); // Datensatz schreiben $f['ui_id'] = schreibe_db("userinfo", $f, $f['ui_id'], "ui_id"); echo "<P><B>Ihr Profil wurde gespeichert!</B></P>\n"; } } else { // Kein Recht die Daten zu schreiben! echo "<P><B>Fehler:</B> Sie haben keine Berechtigung, das Profil von '{$nick}' zu verändern!</P>"; } } switch ($aktion) { case "neu": case "aendern": // Neues Profil einrichten oder bestehendes Ändern if ($profil_gefunden) { echo "<P><B>Bestehendes Profil bearbeiten:</B></P>\n"; } else { echo "<P><B>Neues Profil anlegen:</B></P>";
// Admin E-Mailadresse aus DB holen $query = "SELECT u_adminemail,u_level FROM user WHERE u_nick = '" . mysql_real_escape_string($f[u_nick]) . "'"; $result = mysql_query($query); $x = mysql_fetch_array($result); $f['u_adminemail'] = $x['u_adminemail']; $pwdneu = genpassword(8); $f['u_passwort'] = $pwdneu; $uu_level = $x['u_level']; // Prüfung ob der User das überhaupt darf... if ($f['u_adminemail'] == "") { echo $f1 . "<P><B>Fehler: Keine E-Mail Adresse hinterlegt!</B></P>" . $f2; } elseif (($u_level == "C" || $u_level == "A") && ($uu_level == "U" || $uu_level == "M" || $uu_level == "Z") || $u_level == "S") { $ok = mail($f['u_adminemail'], $t['chat_msg112'], str_replace("%passwort%", $f['u_passwort'], $t['chat_msg113']), "From: {$webmaster} ({$chat})"); if ($ok) { echo $f1 . $t['chat_msg111'] . $f2; schreibe_db("user", $f, $f['u_id'], "u_id"); } else { echo $f1 . "<P><B>Fehler: Die Mail konnte nicht verschickt werden. Das Passwort wurde beibehalten!</B></P>" . $f2; } $user = $f['u_nick']; $query = "SELECT o_id,o_raum,o_name FROM online WHERE o_user="******" AND o_level!='C' AND o_level!='S'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { $row = mysql_fetch_object($result); verlasse_chat($f['u_id'], $row->o_name, $row->o_raum); logout($row->o_id, $f['u_id'], "edit->pwänderung"); mysql_free_result($result); } } else { echo $f1 . "<P><B>Fehler: Aktion nicht erlaubt!</B></P>" . $f2; }
$text .= "<B><INPUT TYPE=\"SUBMIT\" VALUE=\"" . $backarray['submittext'] . "\"></B>\n</FORM>\n"; $text = str_replace("{passwort}", $f['u_passwort'], $text); $text = str_replace("{u_nick}", $f['u_nick'], $text); $titel = $backarray['titel']; } else { $text = $t['neu25'] . "<TABLE><TR><TD ALIGN=RIGHT><B>" . $t['neu26'] . "</B></TD>" . "<TD>" . $f1 . $f['u_name'] . $f2 . "</TD></TR>\n" . "<TR><TD ALIGN=RIGHT><B>" . $t['neu27'] . "</B></TD>" . "<TD>" . $f1 . $f['u_nick'] . $f2 . "</TD></TR></TABLE>\n" . $t['neu28'] . "<FORM ACTION=\"{$chat_file}\" NAME=\"login\" METHOD=\"POST\">\n" . "<INPUT TYPE=\"HIDDEN\" NAME=\"http_host\" VALUE=\"{$http_host}\">\n" . "<INPUT TYPE=\"HIDDEN\" NAME=\"login\" VALUE=\"{$f['u_nick']}\">\n" . "<INPUT TYPE=\"HIDDEN\" NAME=\"passwort\" VALUE=\"{$f['u_passwort']}\">\n" . "<INPUT TYPE=\"HIDDEN\" NAME=\"aktion\" VALUE=\"login\">\n" . "<B><INPUT TYPE=\"SUBMIT\" VALUE=\"" . $t['neu29'] . "\"></B>\n" . "<script language=javascript>\n<!-- start hiding\ndocument.write(\"<input type=hidden name=javascript value=on>\");\n// end hiding -->\n</script>\n" . "</FORM>\n"; $titel = $t['neu30']; } show_box($titel, $text, "", ""); echo "<BR>"; // Homepage muss http:// enthalten if (!preg_match("|^(http://)|i", $f['u_url']) && strlen($f['u_url']) > 0) { $f['u_url'] = "http://" . $f['u_url']; } $f['u_level'] = "U"; $u_id = schreibe_db("user", $f, "", "u_id"); $result = mysql_query("UPDATE user SET u_neu=DATE_FORMAT(now(),\"%Y%m%d%H%i%s\") WHERE u_id={$u_id}", $conn); if ($pruefe_email == "1") { $query = "DELETE FROM mail_check WHERE email = '" . mysql_real_escape_string($f[u_adminemail]) . "'"; $result = mysql_query($query); } } zeige_fuss(); break; case "relogin": // Login aus Forum in Chat; Userdaten setzen id_lese($id); $hash_id = $id; //system_msg("",0,$u_id,"","DEBUG: $neuer_raum "); // Chat betreten $back = betrete_chat($o_id, $u_id, $u_nick, $u_level, $neuer_raum, $o_js, $u_backup);
function eintrag_aktionen($aktion_datensatz) { // Array mit definierten Aktionen in die DB schreiben global $def_was, $dbase, $u_id, $u_nick, $conn; // Alle möglichen a_wann in Array lesen $query = "SHOW COLUMNS FROM aktion like 'a_wann'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) != 0) { $txt = str_replace("'", "", substr(mysql_result($result, 0, "Type"), 5, -1)); $a_wann = explode(",", $txt); } foreach ($def_was as $def_was_eintrag) { foreach ($a_wann as $a_wann_eintrag) { // In aktion_datensatz stehen ID und Wert als a_id|a_wie $temp = explode("|", $aktion_datensatz[$def_was_eintrag][$a_wann_eintrag]); if (!$temp[0] || $temp[0] == "0" || $temp[0] == "") { $query = "DELETE FROM aktion " . "WHERE a_was='" . mysql_real_escape_string($def_was_eintrag) . "' " . "AND a_wann='" . mysql_real_escape_string($a_wann_eintrag) . "' " . "AND a_user='******'"; $result = mysql_query($query, $conn); } $f['a_wie'] = $temp[1]; $f['a_was'] = $def_was_eintrag; $f['a_wann'] = $a_wann_eintrag; $f['a_user'] = $u_id; $f['a_text'] = $u_nick; schreibe_db("aktion", $f, $temp[0], "a_id"); } } }
function neuer_blacklist($f_userid, $blacklist) { // Trägt neuen Blacklist-Eintrag in der Datenbank ein global $id, $http_host, $eingabe_breite, $PHP_SELF, $f1, $f2, $f3, $f4, $conn, $dbase; if (!$blacklist['u_id'] || !$f_userid) { echo "Fehler beim Anlegen des Blacklist-Eintrags: {$f_userid},{$blacklist['u_id']}!<BR>"; } else { $blacklist['u_id'] = mysql_real_escape_string($blacklist['u_id']); // sec $f_userid = mysql_real_escape_string($f_userid); // sec // Prüfen ob Blacklist-Eintrag bereits in Tabelle steht $query = "SELECT f_id from blacklist WHERE " . "(f_userid={$blacklist['u_id']} AND f_blacklistid={$f_userid}) " . "OR " . "(f_userid={$f_userid} AND f_blacklistid={$blacklist['u_id']})"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { echo "<P><B>Fehler:</B> '{$blacklist['u_nick']}' ist bereits in der Blackliste eingetragen!</P>\n"; } elseif ($blacklist['u_id'] == $f_userid) { // Eigener Blacklist-Eintrag ist verboten echo "<P><B>Fehler:</B> Sie können sich nicht selbst als Blacklist-Eintrag hinzufügen!</P>\n"; } else { // User ist noch kein Blacklist-Eintrag -> hinzufügen $f['f_userid'] = $f_userid; $f['f_blacklistid'] = $blacklist['u_id']; $f['f_text'] = htmlspecialchars($blacklist['f_text']); schreibe_db("blacklist", $f, 0, "f_id"); echo "<P><B>Hinweis:</B> '{$blacklist['u_nick']}' ist jetzt in der Blacklist eingetragen.</P>"; } } }
if ($userd[0] != "Nickname" and strlen($userd[0]) > 2 and $userd[1] and $userd[2] and $userd[3]) { echo " {$i} " . $userd[0]; unset($f); unset($ui_userid); $f['u_nick'] = $userd[0]; $f['u_name'] = $userd[1]; $f['u_adminemail'] = $userd[2]; $f['u_passwort'] = $userd[3]; $query = "SELECT u_id FROM user where u_nick like '" . mysql_real_escape_string($f[u_nick]) . "'"; // User importieren $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result)) { $ui_userid = mysql_result($result, 0, 0); echo " ID: {$ui_userid}"; } if (schreibe_db("user", $f, $ui_userid, "u_id")) { echo " Ok"; } echo "<BR>\n"; $i++; } } echo "</SMALL><BR><BR>"; fclose($file); unlink($HTTP_POST_FILES['userdatei']['tmp_name']); } else { echo $t['sonst48']; } } else { echo $t['sonst47']; }
function auth_user($feldname, $login, $passwort) { // Passwort prüfen und Userdaten lesen // Funktion liefert das mysql_result zurück, wenn auf EINEN User das login/passwort passt // $login muss "sicher" kommen // feldname = uc_nick oder u_name // passwort = Passwort global $dbase, $conn; global $crypted_password_extern, $upgrade_password; // $crypt_login & $md5login ist veraltet und wird nicht mehr unterstützt $v_salt = getsalt($feldname, $login); if ($v_salt == -9) { // User nicht gefunden return 0; } else { if ($v_salt > -9 && $v_salt < 0) { echo "<b>ERROR: Passwortverschlüsselung ungültig</b><br>"; return 0; } else { // Nachdem die Verschlüsselung nun bekannt ist // Übergebenes PW verschlüsseln und gegen DB Prüfen if ($crypted_password_extern == 1) { // Nichts tun, da das $passwort von einem Externen System bereits // verschlüsselt übergeben wurde, daher auch nicht "upgraden" $v_passwort = $passwort; $upgrade_password = 0; } else { if ($v_salt == 'MD5') { $v_passwort = md5($passwort); } else { $v_passwort = crypt($passwort, $v_salt); } } $query = "SELECT * " . "FROM user WHERE {$feldname} = '" . mysql_real_escape_string($login) . "' AND u_passwort='" . mysql_real_escape_string($v_passwort) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $usergefunden = mysql_result($result, 0, "u_id"); mysql_free_result($result); if ($upgrade_password == 1) { // PW war richtig => PW Verschlüsselung verbessern // indem neu gespeichert wird, Verschlüsselung wird in schreibe_db bestimmt unset($f); $f['u_passwort'] = $passwort; $f['u_salt'] = $v_salt; // Dummy, wird nicht gespeichert, nur übermittelt und seperat ausgewertet $f['u_id'] = $usergefunden; schreibe_db("user", $f, $f['u_id'], "u_id"); } // Neues PW ist nicht bekannt aber lt. oben richtig, daher neues $result erzeugen $query = "SELECT * FROM user WHERE u_id = {$usergefunden} "; $result = mysql_query($query, $conn); return $result; } else { return 0; } } } }
break; case "answernew": // antwort anlegen oder nach editieren neu schreiben unset($f); $f['c_text'] = $answertxt; $f['c_von_user'] = $u_nick; $f['c_an_user'] = $u_id; $f['c_raum'] = $o_raum; $f['c_farbe'] = $u_farbe; $f['c_von_user_id'] = $u_id; $f['c_moderator'] = $u_id; $f['c_typ'] = "P"; if (!isset($answer)) { $answer = 0; } schreibe_db("moderation", $f, $answer, "c_id"); zeige_moderations_antworten($o_raum); break; case "answeredit": // antwort editieren zeige_moderations_antworten($o_raum, $answer); break; case "answerdel": // antwort löschem if ($answer != "") { $answer = intval($answer); $query = "DELETE FROM moderation WHERE c_id={$answer}"; mysql_query($query, $conn); } zeige_moderations_antworten($o_raum); break;
unset($einstellungen['u_chathomepage']); foreach ($vor_einstellungen as $key => $val) { if (isset($einstellungen[$key]) && $einstellungen[$key] == "on") { $einstellungen[$key] = TRUE; } else { $einstellungen[$key] = FALSE; } } $home['ui_einstellungen'] = serialize($einstellungen); } // Farben in ui_farbe packen if (is_array($farben)) { $home['ui_farbe'] = serialize($farben); } // Änderungen in DB schreiben $ui_id = schreibe_db("userinfo", $home, $home['ui_id'], "ui_id"); } // Daten laden und Editor anzeigen unset($home); $query = "SELECT * FROM userinfo WHERE ui_userid=" . intval($ui_userid); $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { // Userprofil aus DB lesen $home = mysql_fetch_array($result); if ($home['ui_farbe']) { $farbentemp = unserialize($home['ui_farbe']); if (is_array($farbentemp)) { $farben = $farbentemp; } } // Einstellung für u_chathomepage aus Userdaten lesen
function bild_holen($u_id, $name, $ui_bild, $groesse) { // Prüft hochgeladenes Bild und speichert es in die Datenbank // u_id = ID des Users, dem das Bild gehört // // Binäre Bildinformation -> home[ui_bild] // WIDTH -> home[ui_bild_width] // HEIGHT -> home[ui_bild_height] // MIME-TYPE -> home[ui_bild_mime] global $max_groesse, $dbase, $http_host, $conn; if ($ui_bild && $groesse > 0 && $groesse < $max_groesse * 1024) { $image = getimagesize($ui_bild); if (is_array($image)) { $fd = fopen($ui_bild, "rb"); if ($fd) { $f['b_bild'] = fread($fd, filesize($ui_bild)); fclose($fd); } switch ($image[2]) { case 1: $f['b_mime'] = "image/gif"; break; case 2: $f['b_mime'] = "image/jpeg"; break; case 3: $f['b_mime'] = "image/png"; break; case 4: $f['b_mime'] = "application/x-shockwave-flash"; break; default: $f['b_mime'] = ""; } $f['b_width'] = $image[0]; $f['b_height'] = $image[1]; $f['b_user'] = $u_id; $f['b_name'] = $name; if ($f['b_mime']) { $query = "SELECT b_id FROM bild WHERE b_user={$u_id} AND b_name='" . mysql_real_escape_string($name) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) != 0) { $b_id = mysql_result($result, 0, 0); } schreibe_db("bild", $f, $b_id, "b_id"); } else { echo "<P><B>Fehler: </B> Es wurde kein gültiges Bildformat (PNG, JPEG, GIF, Flash) hochgeladen!</P>\n"; } // Bild löschen unlink($ui_bild); // Cache löschen $cache = "home_bild"; $cachepfad = $cache . "/" . $http_host . "/" . substr($u_id, 0, 2) . "/" . $u_id . "/" . $name; if (file_exists($cachepfad)) { unlink($cachepfad); unlink($cachepfad . "-mime"); } } else { echo "<P><B>Fehler: </B> Es wurde kein gültiges Bildformat (PNG, JPEG, GIF, Flash) hochgeladen!</P>\n"; unlink($ui_bild); } } elseif ($groesse >= $max_groesse * 1024) { echo "<P><B>Fehler: </B> Das Bild muss kleiner als {$max_groesse} KB sein!</P>\n"; } return $home; // TODO: Wo wird $home definiert? }
} else { echo "opener_reload('user.php?http_host={$http_host}&id={$id}&aktion=chatuserliste','2');\n"; } echo "opener_reload('eingabe.php?http_host={$http_host}&id={$id}','3');\n" . "opener_reload('interaktiv.php?http_host={$http_host}&id={$id}&o_raum_alt={$o_raum}','4');\n" . "window.close();\n" . "</SCRIPT>\n"; } } // Chat bei u_backup neu aufbauen, damit nach Umstellung der Chat refresht wird // u_backup in DB eintragen if (strlen($u_id) > 0 && isset($f['u_backup']) && strlen($f['u_backup']) > 0) { unset($f['u_id']); unset($f['u_level']); unset($f['u_name']); unset($f['u_nick']); unset($f['u_auth']); unset($f['u_passwort']); schreibe_db("user", $f, $u_id, "u_id"); if ($f['u_backup'] == 1) { warnung($u_id, $u_nick, "sicherer_modus"); } if ($o_js) { echo "<SCRIPT LANGUAGE=JavaScript>" . "opener_reload('chat.php?http_host={$http_host}&id={$id}&back={$chat_back}','1')\n" . "opener_reload('eingabe.php?http_host={$http_host}&id={$id}','3')" . "</SCRIPT>\n"; } } // Menü als erstes ausgeben $box = $ft0 . $t['menue4'] . $ft1; $text = "<A HREF=\"hilfe.php?http_host={$http_host}&id={$id}\">{$t['menue1']}</A>\n" . "| <A HREF=\"hilfe.php?http_host={$http_host}&id={$id}&aktion=befehle\">{$t['menue2']}</A>\n" . "| <A HREF=\"hilfe.php?http_host={$http_host}&id={$id}&aktion=sprueche\">{$t['menue3']}</A>\n"; if ($communityfeatures) { $text .= "| <A HREF=\"hilfe.php?http_host={$http_host}&id={$id}&aktion=legende\">{$t['menue6']}</A>\n"; if ($smsfeatures) { $text .= "| <A HREF=\"hilfe.php?http_host={$http_host}&id={$id}&aktion=community\">{$t['menue7']}</A>\n"; } else {
function show_thema() { global $conn; global $id, $http_host, $o_js, $forum_admin, $th_id, $show_tree, $seite, $farbe_link; global $t, $f1, $f2, $f3, $f4, $farbe_tabelle_kopf, $farbe_tabelle_kopf2, $farbe_tabellenrahmen; global $farbe_tabelle_zeile1, $farbe_tabelle_zeile2, $anzahl_po_seite, $chat_grafik, $farbe_text; global $admin, $anzahl_po_seite2, $u_id, $u_level; if ($anzahl_po_seite2) { $anzahl_po_seite2 = preg_replace("/[^0-9]/", "", $anzahl_po_seite2); $anzahl_po_seite = $anzahl_po_seite2; $f[u_forum_postingproseite] = $anzahl_po_seite2; if (!schreibe_db("user", $f, $u_id, "u_id")) { echo "Fehler beim Schreiben in DB!"; } } else { $query = "SELECT u_forum_postingproseite FROM user WHERE u_id = '{$u_id}'"; $result = mysql_query($query); $a = mysql_fetch_array($result); $anzahl_po_seite2 = $a['u_forum_postingproseite']; $anzahl_po_seite = $anzahl_po_seite2; } $leserechte = pruefe_leserechte($th_id); if (!$leserechte) { echo $t['leserechte']; exit; } if (!$seite) { $seite = 1; } $offset = ($seite - 1) * $anzahl_po_seite; $sql = "select po_id, po_u_id, date_format(from_unixtime(po_ts), '%d.%m.%y') as po_date,\n date_format(from_unixtime(po_threadts), '%d.%m.%y') as po_date2,\n po_titel, po_threadorder, po_topposting, po_threadgesperrt, po_gesperrt, u_nick,\n\t\tu_level, u_punkte_gesamt, u_punkte_gruppe, u_chathomepage\n from posting\n left join user on po_u_id = u_id\n where po_vater_id = 0\n and po_th_id = " . intval($th_id) . "\n order by po_topposting desc, po_threadts desc, po_ts desc\n limit {$offset}, {$anzahl_po_seite}"; $query = mysql_query($sql, $conn); $th_name = show_pfad($th_id); echo "<table width=\"760\" cellspacing=\"0\" cellpadding=\"1\" border=\"0\" bgcolor=\"{$farbe_tabellenrahmen}\"><tr><td>\n"; echo "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr bgcolor=\"{$farbe_tabelle_kopf}\">\n"; echo "<td width=\"30\"><img src=\"pics/fuell.gif\" width=\"30\" height=\"1\" border=\"0\"></td>\n"; echo "<td width=\"20\"><img src=\"pics/fuell.gif\" width=\"20\" height=\"1\" border=\"0\"></td>\n"; echo "<td width=\"340\"><img src=\"pics/fuell.gif\" width=\"340\" height=\"1\" border=\"0\"></td>\n"; echo "<td width=\"170\"><img src=\"pics/fuell.gif\" width=\"170\" height=\"1\" border=\"0\"></td>\n"; echo "<td width=\"120\"><img src=\"pics/fuell.gif\" width=\"120\" height=\"1\" border=\"0\"></td>\n"; echo "<td width=\"40\"><img src=\"pics/fuell.gif\" width=\"40\" height=\"1\" border=\"0\"></td>\n"; echo "<td width=\"40\"><img src=\"pics/fuell.gif\" width=\"40\" height=\"1\" border=\"0\"></td></tr>\n"; echo "<tr bgcolor=\"{$farbe_tabelle_kopf}\">\n"; echo "<td colspan=\"3\"><table width=\"390\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n"; echo "<tr><td width=\"3\"><img src=\"pics/fuell.gif\" width=\"3\" height=\"30\" border=\"0\"></td><td ><DIV style=\"color:{$farbe_text}; font-weight:bold;\"> {$th_name}</DIV></td>\n"; $schreibrechte = pruefe_schreibrechte($th_id); if ($schreibrechte) { echo "<td width=\"100\" align=\"center\">{$f3}<a style=\"color:{$farbe_text};\" href=\"forum.php?id={$id}&http_host={$http_host}&th_id={$th_id}&po_vater_id=0&aktion=thread_neu\">{$t['neuer_thread']}</a>{$f4}</td>"; } else { echo "<td width=\"100\" align=\"center\">{$f3}{$t['nur_leserechte']}{$f4}</td>"; } echo "<td width=\"100\" align=\"center\">{$f3}<a style=\"color:{$farbe_text};\" href=\"forum.php?id={$id}&http_host={$http_host}" . "&th_id={$th_id}&aktion=thema_alles_gelesen\">{$t['alles_gelesen']}</a>{$f4}</td>"; echo "</tr></table></td>\n"; echo "<td>{$f3}<DIV style=\"color:{$farbe_text}; \">{$t['autor']}</DIV>{$f4}</td>\n"; echo "<td align=\"center\">{$f3}<DIV style=\"color:{$farbe_text}; \">{$t['datum']}<br>{$t['letztes_posting']}</DIV>{$f4}</td>\n"; echo "<td align=\"center\">{$f3}<DIV style=\"color:{$farbe_text}; \">{$t['anzreplys']}</DIV>{$f4}</td>\n"; echo "<td align=\"center\">{$f3}<DIV style=\"color:{$farbe_text}; \">{$t['anzneue']}</DIV>{$f4}</td></tr>\n"; echo "<tr bgcolor=\"{$farbe_tabellenrahmen}\"><td colspan=\"7\"><img src=\"pics/fuell.gif\" width=\"1\" height=\"1\" border=\"0\"></td></tr>\n"; $zeile = 0; while ($posting = mysql_fetch_array($query, MYSQL_ASSOC)) { set_time_limit(0); if ($zeile % 2) { $farbe = $farbe_tabelle_zeile1; } else { $farbe = $farbe_tabelle_zeile2; } if ($posting['po_threadorder'] == "0") { $anzreplys = 0; $icon = "<img src=\"pics/forum/o.gif\" width=\"20\" height=\"25\" border=\"0\">"; $arr_postings = array($posting['po_id']); } else { $arr_postings = explode(",", $posting['po_threadorder']); $anzreplys = count($arr_postings); //Erstes Posting mit beruecksichtigen $arr_postings[] = $posting['po_id']; if ($show_tree == $posting['po_id']) { $icon = "<a href=\"forum.php?id={$id}&http_host={$http_host}&th_id={$th_id}&aktion=show_thema&seite={$seite}\"><img src=\"pics/forum/m.gif\" width=\"20\" height=\"25\" border=\"0\"></a>"; } else { $icon = "<a href=\"forum.php?id={$id}&http_host={$http_host}&th_id={$th_id}&show_tree={$posting['po_id']}&aktion=show_thema&seite={$seite}\"><img src=\"pics/forum/p.gif\" width=\"20\" height=\"25\" border=\"0\"></a>"; } } $ungelesene = anzahl_ungelesene($arr_postings, $th_id); array_pop($arr_postings); if ($ungelesene === 0) { if ($posting['po_topposting'] == 'Y') { $folder = $chat_grafik['forum_topthema']; } elseif ($posting['po_threadgesperrt'] == 'Y') { $folder = $chat_grafik['forum_threadgeschlossen']; } else { $folder = $chat_grafik['forum_ordnerneu']; } } elseif ($ungelesene < 11) { $folder = $chat_grafik['forum_ordnerblau']; } else { $folder = $chat_grafik['forum_ordnervoll']; } if ($ungelesene != 0) { $coli = "<font color=red>"; $colo = "</font>"; } else { $coli = ""; $colo = ""; } echo "<tr bgcolor=\"{$farbe}\"><td align=\"center\">{$folder}</nobr></td>\n"; echo "<td align=\"center\">{$icon}</td>\n"; if ($posting['po_gesperrt'] == 'Y' and !$forum_admin) { echo "<td> <b><font size=\"-1\" color=\"{$farbe_link}\">" . substr($posting['po_titel'], 0, 40) . "</font> <font size=\"-1\" color=\"red\">(gesperrt)</font></b></td>\n"; } elseif ($posting['po_gesperrt'] == 'Y' and $forum_admin) { echo "<td> {$f1}<b><a href=\"forum.php?id={$id}&http_host={$http_host}&th_id={$th_id}&po_id={$posting['po_id']}&thread={$posting['po_id']}&aktion=show_posting&seite={$seite}\">" . substr($posting['po_titel'], 0, 40) . "</a></b>{$f2} <font size=\"-1\" color=\"red\"><b>(gesperrt)</b></font></td>\n"; } else { echo "<td> {$f1}<b><a href=\"forum.php?id={$id}&http_host={$http_host}&th_id={$th_id}&po_id={$posting['po_id']}&thread={$posting['po_id']}&aktion=show_posting&seite={$seite}\">" . substr($posting['po_titel'], 0, 40) . "</a></b>{$f2}</td>\n"; } if (!$posting['u_nick']) { echo "<td>{$f3}<b>Nobody</b>{$f4}</td>\n"; } else { $userdata = array(); $userdata['u_id'] = $posting['po_u_id']; $userdata['u_nick'] = $posting['u_nick']; $userdata['u_level'] = $posting['u_level']; $userdata['u_punkte_gesamt'] = $posting['u_punkte_gesamt']; $userdata['u_punkte_gruppe'] = $posting['u_punkte_gruppe']; $userdata['u_chathomepage'] = $posting['u_chathomepage']; $userlink = user($posting['po_u_id'], $userdata, $o_js, FALSE, " ", "", "", TRUE, FALSE, 29); if ($posting['u_level'] == 'Z') { echo "<td>{$f1} {$userdata['u_nick']} {$f2}</td>\n"; } else { echo "<td>{$f1} {$userlink} {$f2}</td>\n"; } } if ($posting['po_date2'] == '01.01.70' || $posting['po_date'] == $posting['po_date2']) { $date2 = ""; } else { $date2 = "{$f3}; " . substr($posting['po_date2'], 0, 5) . "{$f4}"; } echo "<td align=\"center\">{$f3}{$posting['po_date']}{$f4}{$date2}</td>\n"; echo "<td align=\"center\">{$f3}{$anzreplys}{$f4}</td>\n"; echo "<td align=\"center\">{$f3}{$coli}{$ungelesene}{$colo}{$f4}</td></tr>\n"; if ($show_tree == $posting['po_id'] && $posting['po_threadorder'] != "0") { echo "<tr bgcolor=\"{$farbe}\"><td> </td><td colspan=\"6\">\n"; zeige_baum($arr_postings, $posting['po_threadorder'], $posting['po_id']); echo "</td></tr>\n"; } $zeile++; } echo "</table></td></tr></table>"; show_pfad($th_id); show_icon_description("thema"); echo "<br><table width=\"760\" cellspacing=\"0\" cellpadding=\"2\" border=\"0\">\n"; echo "<tr><td>"; echo "<form action=\"forum.php\">\n"; echo "{$t['forum_postingsproseite']} <input name=\"anzahl_po_seite2\" size=\"3\" maxlength=\"4\" value=\"{$anzahl_po_seite}\">\n"; echo "<input type=\"hidden\" name=\"http_host\" value=\"{$http_host}\">\n"; echo "<input type=\"hidden\" name=\"id\" value=\"{$id}\">\n"; echo "<input type=\"hidden\" name=\"aktion\" value=\"show_thema\">\n"; echo "<input type=\"hidden\" name=\"th_id\" value=\"{$th_id}\">\n"; echo "<input type=\"submit\" value=\"{$t['speichern']}\">\n"; echo "</form>\n"; echo "</td></tr>\n"; echo "</table>\n"; }
function ignore($o_id, $i_user_aktiv, $i_user_name_aktiv, $i_user_passiv, $i_user_name_passiv) { // Unterdrückt Mitteilungen von i_user_passiv an i_user_aktiv // Schaltet bei neuem Aufruf wieder zurück global $dbase, $chat, $conn, $t; $i_user_aktiv = intval($i_user_aktiv); $i_user_passiv = intval($i_user_passiv); $query = "SELECT * FROM iignore " . "WHERE i_user_aktiv={$i_user_aktiv} " . "AND i_user_passiv={$i_user_passiv} "; $result = mysql_query($query, $conn); $query = "SELECT u_level FROM user WHERE u_id = '{$i_user_passiv}'"; $result2 = mysql_query($query); $a = mysql_fetch_array($result2); $isadmin = false; if ($a['u_level'] == "C" || $a['u_level'] == "S" || $a['u_level'] == "A") { $isadmin = true; } if ($result && mysql_num_rows($result) == 0) { if (!$isadmin) { // Ignore neu setzen $f['i_user_aktiv'] = $i_user_aktiv; $f['i_user_passiv'] = $i_user_passiv; schreibe_db("iignore", $f, "", "i_id"); system_msg("", 0, $i_user_aktiv, isset($system_farbe) ? $system_farbe : "", str_replace("%i_user_name_passiv%", $i_user_name_passiv, $t['ignore1'])); system_msg("", 0, $i_user_passiv, isset($system_farbe) ? $system_farbe : "", str_replace("%i_user_name_passiv%", $i_user_name_passiv, str_replace("%i_user_name_aktiv%", $i_user_name_aktiv, $t['ignore2']))); } else { system_msg("", 0, $i_user_aktiv, $system_farbe, str_replace("%i_user_name_passiv%", $i_user_name_passiv, $t['ignore5'])); } mysql_free_result($result); } elseif ($result && mysql_num_rows($result) > 0) { // Ignore löschen $i_id = mysql_result($result, 0, "i_id"); $query2 = "DELETE FROM iignore WHERE i_id={$i_id} "; $result2 = mysql_query($query2, $conn); system_msg("", 0, $i_user_aktiv, $system_farbe, str_replace("%i_user_name_passiv%", $i_user_name_passiv, $t['ignore3'])); system_msg("", 0, $i_user_passiv, $system_farbe, str_replace("%i_user_name_passiv%", $i_user_name_passiv, str_replace("%i_user_name_aktiv%", $i_user_name_aktiv, $t['ignore4']))); mysql_free_result($result); } else { echo "Fataler Fehler bei ignore ({$query})<BR>"; } // Kopie in Onlinedatenbank aktualisieren // Query muss mit dem Code in login() übereinstimmen $query = "SELECT i_user_passiv FROM iignore WHERE i_user_aktiv={$i_user_aktiv}"; $result = mysql_query($query, $conn); if ($result) { if (mysql_num_rows($result) > 0) { while ($iignore = mysql_fetch_array($result)) { $ignore[$iignore['i_user_passiv']] = TRUE; } } else { $ignore[0] = FALSE; } mysql_free_result($result); $query = "UPDATE online SET " . "o_ignore='" . mysql_real_escape_string(serialize($ignore)) . "' WHERE o_user={$i_user_aktiv}"; mysql_query($query, $conn); @mysql_free_result($result); } }
function mail_sende($von, $an, $text, $betreff = "") { // Verschickt Mail von ID $von an ID $an mit Text $text global $t; global $u_nick; $mailversand_ok = true; $fehlermeldung = ""; // User die die Mailbox zu haben, bekommen keine Aktionen per Mainchat $query = "SELECT m_id FROM mail WHERE m_von_uid=" . intval($an) . " AND m_an_uid=" . intval($an) . " and m_betreff = 'MAILBOX IST ZU' and m_status != 'geloescht'"; $result = mysql_query($query); $num = mysql_numrows($result); if ($num >= 1) { $mailversand_ok = false; $fehlermeldung = $t['chat_msg105']; } // Gesperrte User bekommen keine Chatmail Aktionen mehr $query = "SELECT u_id FROM user WHERE u_id=" . intval($an) . " AND u_level='Z'"; $result = mysql_query($query); $num = mysql_numrows($result); if ($num >= 1) { $mailversand_ok = false; $fehlermeldung = "User ist gesperrt, und kann deswegen keine Chatmail empfangen"; } // mailbombing schutz! $query = "SELECT m_id,now()-m_zeit as zeit FROM mail WHERE m_von_uid = " . intval($von) . " AND m_an_uid = '" . intval($an) . " order by m_id desc limit 0,1"; // system_msg("",0,$von,$system_farbe,"DEBUG: $query"); $result = mysql_query($query); if (mysql_numrows($result) == 1) { $a = mysql_fetch_array($result); $zeit = $a['zeit']; } else { $zeit = 999; } if ($zeit < 30) { $mailversand_ok = false; $fehlermeldung = $t['chat_msg104']; } if ($mailversand_ok == true) { $f['m_von_uid'] = $von; $f['m_an_uid'] = $an; $f['m_status'] = "neu"; $f['m_text'] = chat_parse($text); if ($betreff) { $f['m_betreff'] = $betreff; } else { // Betreff aus Text übernehmen und kürzen $f['m_betreff'] = $text; if (strlen($f['m_betreff']) > 5) { $f['m_betreff'] = substr($f['m_betreff'], 0, 30); $f['m_betreff'] = substr($f['m_betreff'], 0, strrpos($f['m_betreff'], " ") + 1); } } $f['m_id'] = schreibe_db("mail", $f, "", "m_id"); // Nachricht über neue E-Mail sofort erzeugen if (ist_online($an)) { aktion("Sofort/Online", $an, $u_nick, "", "Neue Mail", $f); } else { aktion("Sofort/Offline", $an, $u_nick, "", "Neue Mail", $f); } } if (!isset($f['m_id'])) { $f['m_id'] = ""; } $ret = array($f['m_id'], $fehlermeldung); return $ret; }
// Berechtigung prüfen, alle User in Lobby werfen und löschen if ($admin || $row->r_besitzer == $u_id) { // Lobby suchen $query = "SELECT r_id FROM raum WHERE r_name='" . mysql_real_escape_string($lobby) . "'"; $result2 = mysql_query($query, $conn); if ($result2 and mysql_num_rows($result2) > 0) { $lobby_id = mysql_result($result2, 0, "r_id"); } @mysql_free_result($result2); // Raum ist nicht Lobby -> Löschen if ($f['r_id'] == $lobby_id) { echo "<P>" . str_replace("%r_name%", $row->r_name, $t['fehler12']) . "</P>\n"; } else { // Raum schließen $f['r_status1'] = "G"; schreibe_db("raum", $f, $f['r_id'], "r_id"); // Raum leeren $query = "SELECT o_user,o_name FROM online WHERE o_raum={$f['r_id']} "; $result2 = mysql_query($query, $conn); while ($row2 = mysql_fetch_object($result2)) { system_msg("", 0, $row2->o_user, $system_farbe, str_replace("%r_name%", $row->r_name, $t['fehler4'])); $oo_raum = raum_gehe($o_id, $row2->o_user, $row2->o_name, $f['r_id'], $lobby_id, FALSE); raum_user($lobby_id, $row2->o_user, $id); $i++; } @mysql_free_result($result2); $query = "DELETE FROM raum WHERE r_id={$f['r_id']} "; $result2 = mysql_query($query, $conn); @mysql_free_result($result2); // Gesperrte Räume löschen $query = "DELETE FROM sperre WHERE s_raum={$f['r_id']}";
function schreibe_chat($f) { // Schreibt Chattext in DB global $dbase, $conn; // Schreiben falls text>0 if (isset($f['c_text']) && strlen($f['c_text']) > 0) { // Falls Länge c_text mehr als 256 Zeichen, auf mehrere Zeilen aufteilen if (strlen($f['c_text']) > 256) { $temp = $f['c_text']; $laenge = strlen($temp); $i = 0; // Tabelle LOCK $result = mysql_query("LOCK TABLES chat WRITE", $conn); while ($i < $laenge) { $f['c_text'] = substr($temp, $i, 255); if ($i == 0) { // erste Zeile $f['c_br'] = "erste"; } elseif ($i + 255 >= $laenge) { // letzte Zeile $f['c_br'] = "letzte"; } else { // mittlere Zeile $f['c_br'] = "mitte"; } $i = $i + 255; $back = schreibe_db("chat", $f, "", "c_id"); } $result = mysql_query("UNLOCK TABLES chat", $conn); } else { // Normale Zeile in Tabelle schreiben $f['c_br'] = "normal"; $back = schreibe_db("chat", $f, "", "c_id"); } } else { $back = 0; } return $back; }
if (!isset($neu_spam_zeilen[0])) { $neu_spam_zeilen[0] = 0; } $neu_spam_zeilen[0] += 1; if (!isset($neu_spam_byte)) { $neu_spam_byte = array(); } if (!isset($neu_spam_byte[0])) { $neu_spam_byte[0] = 0; } $neu_spam_byte[0] += strlen($text); unset($f); $f['o_spam_zeit'] = $aktuelle_zeit; $f['o_spam_zeilen'] = serialize($neu_spam_zeilen); $f['o_spam_byte'] = serialize($neu_spam_byte); schreibe_db("online", $f, $o_id, "o_id"); // Prüfen wieviel Byte ind wieviel Zeilen in den letzten $chat_max_zeit Sekunden geschrieben wurde if (array_sum($neu_spam_zeilen) > $chat_max_zeilen || array_sum($neu_spam_byte) > $chat_max_byte) { $fehler = TRUE; } } @mysql_free_result($result); } elseif (isset($text) && strlen($text) >= $chat_max_eingabe) { $fehler = TRUE; } // Falls kein Spam, Nachricht ausgeben if (!$fehler) { if (strlen($u_farbe) == 0) { $u_farbe = $user_farbe; } chat_msg($o_id, $u_id, $u_nick, $u_farbe, $admin, $o_raum, isset($text) ? $text : "", "");
@mysql_free_result($result); // Top 100 Gesamtpunkte als Array aufbauen $query = "select u_punkte_gesamt as punkte,u_nick,u_id,u_level,u_punkte_gesamt,u_punkte_gruppe,u_chathomepage from user " . "where u_punkte_gesamt!=0 and u_level != 'Z' " . "order by u_punkte_gesamt desc,u_punkte_monat desc,u_punkte_jahr desc limit 0,100"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { $array_anzahl[2] = mysql_num_rows($result); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $array_user[2][] = $row; } } @mysql_free_result($result); // Daten in Cache schreiben und alle anderen Einträge löschen unset($f); $f['t_eintrag'] = 1; $f['t_daten'] = isset($array_user) ? serialize($array_user) : null; $t_id = schreibe_db("top10cache", $f, 0, "t_id"); $query = "DELETE FROM top10cache WHERE t_eintrag=1 AND t_id!='{$t_id}'"; $result = mysql_query($query, $conn); } // Array als Tabelle ausgeben if (is_array($array_user)) { for ($i = 0; $i < $anzahl; $i++) { echo "<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0>\n" . "<TR BGCOLOR=\"{$bgcolor}\"><TD WIDTH=\"4%\" align=\"right\"><B>" . $f1 . ($i + 1) . $f2 . "</B></TD>"; for ($j = 0; $j < 3; $j++) { if (isset($array_user[$j]) && isset($array_user[$j][$i]) && $array_user[$j][$i]['punkte']) { $array_user[$j][$i]['u_punkte_anzeigen'] = 'Y'; echo "<TD WIDTH=\"8%\" align=\"right\">" . $f1 . $array_user[$j][$i]['punkte'] . $f2 . "</TD><TD WIDTH=\"24%\">" . $f1 . user($array_user[$j][$i]['u_id'], $array_user[$j][$i], TRUE) . $f2 . "</TD>\n"; } else { echo "<TD WIDTH=\"32%\" colspan=2>" . $f1 . " " . $f2 . "</TD>\n"; } }
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; }
function schreibe_posting() { global $conn, $th_id, $po_vater_id, $u_id, $po_id, $po_tiefe, $u_nick; global $po_titel, $po_text, $thread, $mode, $user_id, $autor; global $po_topposting, $po_threadgesperrt, $forum_admin, $t, $forum_aenderungsanzeige; if ($mode == "edit") { //muss autor neu gesetzt werden? if ($forum_admin && $autor) { $autor = intval($autor); if (!preg_match("/[a-z]|[A-Z]/", $autor)) { $sql = "select u_id from user where u_id={$autor}"; } else { $sql = "select u_id from user where u_nick='{$autor}'"; } $query = mysql_query($sql, $conn); if (mysql_num_rows($query) > 0) { $u_id_neu = mysql_result($query, 0, "u_id"); } if (!$u_id_neu) { echo "<b>Ein User mit dem Nick/der ID {$autor} existiert nicht!</b>"; } else { if ($u_id_neu != $user_id) { $f['po_u_id'] = $u_id_neu; } } } if ($forum_admin) { $f['po_topposting'] = $po_topposting; $f['po_threadgesperrt'] = $po_threadgesperrt; } $f['po_titel'] = htmlspecialchars($po_titel); $f['po_text'] = htmlspecialchars(erzeuge_umbruch($po_text, 80)); if ($forum_aenderungsanzeige == "1") { $append = $t['letzte_aenderung']; $append = str_replace("%datum%", date("d.m.Y"), $append); $append = str_replace("%uhrzeit%", date("H:i"), $append); $append = str_replace("%user%", $u_nick, $append); $f['po_text'] .= $append; } schreibe_db("posting", $f, $po_id, "po_id"); } else { //neues Posting $f['po_th_id'] = $th_id; $f['po_u_id'] = $u_id; $f['po_vater_id'] = $po_vater_id; $f['po_tiefe'] = $po_tiefe; $f['po_titel'] = htmlspecialchars($po_titel); $f['po_text'] = htmlspecialchars(erzeuge_umbruch($po_text, 80)); $f['po_ts'] = time(); $f['po_threadts'] = time(); if ($po_vater_id != 0) { $f['po_threadorder'] = 1; } else { $f['po_threadorder'] = 0; } //Posting schreiben $new_po_id = schreibe_db("posting", $f, "", "po_id"); //ist was schiefgelaufen? if (!$new_po_id) { exit; } //falls reply muss po_threadorder des vaters neu geschrieben werden if ($po_vater_id != 0) { //po_threadorder des threadvaters neu schreiben //dazu Tabelle posting locken $sql = "LOCK TABLES posting WRITE"; @mysql_query($sql, $conn); //alte Threadorder holen $sql = "select po_threadorder from posting where po_id = " . intval($thread); $query = mysql_query($sql, $conn); $threadorder = mysql_result($query, 0, "po_threadorder"); @mysql_free_result($query); //erste Antwort? if ($threadorder == "0") { $threadorder = $new_po_id; } else { //jetzt hab ich arbeit... //rekursiv das unterste Posting dieses Teilbaums holen $insert_po_id = hole_letzten($po_vater_id, $new_po_id); //alte threadorder in feld aufsplitten $threadorder_array = explode(",", $threadorder); $threadorder_array_new = array(); $i = 0; while (list($k, $v) = each($threadorder_array)) { if ($v == $insert_po_id) { $threadorder_array_new[$i] = $v; $i++; $threadorder_array_new[$i] = $new_po_id; } else { $threadorder_array_new[$i] = $v; } $i++; } $threadorder = implode(",", $threadorder_array_new); } //threadorder neu schreiben $sql = "update posting\n set po_threadorder = '{$threadorder}', po_threadts = " . time() . "\n where po_id = {$thread}"; mysql_query($sql, $conn); #print "neue threadorder: $threadorder<BR>"; //schliesslich noch die markierung des letzten in der Ebene entfernen $sql = "update posting\n set po_threadorder = '0'\n where po_threadorder = '1'\n and po_id <> {$new_po_id}\n and po_vater_id = " . intval($po_vater_id); mysql_query($sql, $conn); //Tabellen wieder freigeben $sql = "UNLOCK TABLES"; @mysql_query($sql, $conn); } else { //Thread neu setzen $thread = $new_po_id; } //th_postings muss neu geschrieben werden //anz_threads und anz_replys im Thema setzen //erst Tabelle thema sperren $sql = "LOCK TABLES thema WRITE"; @mysql_query($sql, $conn); //altes th_postings und anz_threads und anz_replys holen $sql = "select th_postings, th_anzthreads, th_anzreplys from thema where th_id = " . intval($th_id); $query = mysql_query($sql, $conn); $postings = mysql_result($query, 0, "th_postings"); $anzthreads = mysql_result($query, 0, "th_anzthreads"); $anzreplys = mysql_result($query, 0, "th_anzreplys"); if (!$postings) { //erstes Posting in diesem Thema $postings = $new_po_id; } else { //schon postings da $postings_array = explode(",", $postings); $postings_array[] = $new_po_id; $postings = implode(",", $postings_array); } if ($po_vater_id == 0) { //neuer Thread $anzthreads++; } else { //neue Antwort $anzreplys++; } //schreiben $sql = "update thema\n set th_postings = '{$postings}',\n th_anzthreads = {$anzthreads},\n th_anzreplys = {$anzreplys}\n where th_id = " . intval($th_id); mysql_query($sql, $conn); //Tabellen wieder freigeben $sql = "UNLOCK TABLES"; @mysql_query($sql, $conn); } if (!isset($new_po_id)) { $new_po_id = 0; } return $new_po_id; }
$f['is_ip_byte'] = 4; } elseif (strlen($ip3) > 0 && $ip3 < 256 && strlen($ip2) > 0 && $ip2 < 256) { $f['is_ip_byte'] = 3; $f['is_ip'] = $ip1 . "." . $ip2 . "." . $ip3 . "."; } elseif (strlen($ip2) > 0 && $ip2 < 256) { $f['is_ip_byte'] = 2; $f['is_ip'] = $ip1 . "." . $ip2 . ".."; } else { $f['is_ip_byte'] = 1; $f['is_ip'] = $ip1 . "..."; } $f['is_owner'] = $u_id; if (!isset($f['is_id'])) { $f['is_id'] = 0; } schreibe_db("ip_sperre", $f, $f['is_id'], "is_id"); } else { echo "<P>{$t['sonst6']}</P>\n"; $aktion = "neu"; } } else { echo "<P>{$t['sonst7']}</P>\n"; $aktion = "neu"; } } if (!isset($aktion)) { $aktion = ""; } // Auswahl switch ($aktion) { case "trace":
function loesche_mail($m_id, $u_id) { // Löscht eine Mail der ID m_id global $id, $http_host, $eingabe_breite, $PHP_SELF, $f1, $f2, $f3, $f4, $dbase, $conn, $u_nick, $u_id; $query = "SELECT m_zeit,m_id,m_status FROM mail " . "WHERE m_id=" . intval($m_id) . " AND m_an_uid={$u_id}"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $row = mysql_fetch_object($result); $f['m_zeit'] = $row->m_zeit; if ($row->m_status != "geloescht") { $f['m_status'] = "geloescht"; $f['m_geloescht_ts'] = date("YmdHis"); } else { $f['m_status'] = "gelesen"; $f['m_geloescht_ts'] = '00000000000000'; } schreibe_db("mail", $f, $row->m_id, "m_id"); } else { echo "<P><B>Fehler:</B> Diese Mail nicht kann nicht gelöscht werden!</P>"; } @mysql_free_result($result); }