Folgende Warnungen sind aufgetreten:
Warning [2] Undefined property: MyLanguage::$archive_pages - Line: 2 - File: printthread.php(287) : eval()'d code PHP 8.2.25 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/printthread.php(287) : eval()'d code 2 errorHandler->error_callback
/printthread.php 287 eval
/printthread.php 117 printthread_multipage



net-board.net Archiv
Bedankomat/thx-bot - Druckversion

+- net-board.net Archiv (https://net-board.net)
+-- Forum: Deine eigene Homepage (https://net-board.net/forumdisplay.php?fid=26)
+--- Forum: Communitysysteme (https://net-board.net/forumdisplay.php?fid=25)
+---- Forum: wBB Support (Fragen und News) (https://net-board.net/forumdisplay.php?fid=8)
+---- Thema: Bedankomat/thx-bot (/showthread.php?tid=4145)

Seiten: 1 2


- pattex - 02.06.2004

Ich habe den Hide Hack auch nicht richtig verstanden. Man kann glaube ich einen Bereich in seinem Beitrag definieren [hide]test[/hide]

der erst sichtbar ist, wenn man auf den beitrag geantwortet hat.

für downloads gut weil man dann vorher erstmal was schreiben muss


- SunSonic - 02.06.2004

Zitat:Original von pattex
[...]
der erst sichtbar ist, wenn man auf den beitrag geantwortet hat.
[...]

ähh... sehr seltsam... Big Grin hört sich irgendwie merkwürdig an... ich glaube, beizeiten werde ich mir den Hack mal irgendwo ansehen. Kann mir noch nix konkretes drunter vorstellen. Wenn jemand nen URL hat, wo man mehr darüber erfahren kann, bitte hier posten!


- pattex - 02.06.2004

hier:
http://www.mywbb.de/board/thread.php?threadid=36227&sid=&hilight=Bedankomat


- SunSonic - 02.06.2004

Zitat:Original von pattex
hier:
http://www.mywbb.de/board/thread.php?threadid=36227&sid=&hilight=Bedankomat

Ähem... ich bezog mich auf den "Hide" - Hack... Big Grin


- headshoot - 02.06.2004

ja also das mit dem Hide hack versteh ich aber was soll ich denn mit dem Bot?

Hb das Backup wieder eingespielt läuft jetzt wieder alles!

g* headshoot


- pattex - 02.06.2004

Du wolltest doch einen Bot? Und dieser Bot kann sich glaube ich auch bedanken. :bitte:


- headshoot - 04.06.2004

hi bin gerade dabei den hide hack einzubauen aber jetzt komm ich da nicht draus!

Also:

PHP-Code:
3suche:  ---  $out nl2br($out);  ---    davor einfügen:  ---          // wenn User kein Gast, auf Posting geantwortet, oder Moderatoren sind wird der Text angezeigt          if ( $user_id != "0" && $selfposted || $userdata[ismod]) {              $search="/\[hide](.*)\[\/hide\]/siU";              $replace="<font color=yellow><i>Hidden Text:</i></font> $1";              $out = preg_replace($search, $replace, $out);              $out = str_replace("\'", "'", $out);          } else {              // sonst nix anzeigen              $searcharray[]="/\[hide](.*)\[\/hide\]/siU";              $replacearray[]="<font color=yellow><i>Hidden Text (nur sichtbar nach Antwort)</i></font>";              $out = preg_replace($searcharray, $replacearray, $out);              $out = str_replace("\'", "'", $out);          } 


jetzt hab ich das problem das es dreii Mal vorkommt!!

bei welchem muss ich das jetzt einfügen?

hier meine _functions.php!!

[PHP]<?php /** * @return result bool * @param varname string * @desc Registriert die Variable ${$varname} in einer Session. * Dank einem Bug in php4 sind wir gezwungen, je nach Konfiguration session_register() * oder $HTTP_SESSION_VARS/$_SESSION zu verwenden. */ function wbb_session_register($varname) { global $register_globals, $HTTP_SESSION_VARS, ${$varname}; $done = false; if($register_globals) { $done = session_register("$varname"); } else { if($HTTP_SESSION_VARS[$varname] = ${$varname}) $done=true; if($_SESSION[$varname] =${$varname}) $done=true; } return $done; } /** * @return result bool * @param varname string * @desc Löscht die Variable ${$varname} aus einer Session. * Dank einem Bug in php4 sind wir gezwungen, je nach Konfiguration session_unregister() * oder $HTTP_SESSION_VARS/$_SESSION zu verwenden. */ function wbb_session_unregister($varname) { global $register_globals, $HTTP_SESSION_VARS, ${$varname}; $done = false; if($register_globals) { $done = session_unregister("$varname"); } else { unset($HTTP_SESSION_VARS[$varname]); unset($_SESSION[$varname]); $done=true; } return $done; } /** * @return out string * @param boardid int * @param depth=1 int * @desc Diese Funktion erstellt eine <option> Liste aller Boards. * Die Struktur wird dabei rekursiv erstellt.. */ function makeboardjumpbit2($bid,$depth=1) { global $boardcache, $boardid, $permissioncache; if(!isset($boardcache[$bid])) { return; } $out = ""; while (list($key1,$val1) = each($boardcache[$bid])) { while(list($key2,$boards) = each($val1)) { if($boards['invisible'] && !$permissioncache[$boards['boardid']]) continue; $out .= "<OPTION value=\"".$boards['boardid']."\""; if($boardid == $boards['boardid']) $out .= " selected"; if($depth>1) $out .= ">".str_repeat("--",$depth-1)." ".$boards['boardname']."</option>"; else $out .= ">".$boards['boardname']."</option>"; $out.=makeboardjumpbit2($boards['boardid'],$depth+1); } } unset($boardcache[$bid]); return $out; } /** * @return out string * @param boardid int * @param depth=1 int * @desc Diese Funktion erstellt eine <option> Liste speziell für die Forenauswahl in der Suche. * Die Stuktur wird auch hier rekursiv erstellt. */ function makeboardsearchbit($bid,$depth=1) { global $boardcache, $permissioncache; if ( !isset($boardcache[$bid]) ) { return; } if(!isset($out)) $out=""; while ( list($key1,$val1)=each($boardcache[$bid]) ) { while ( list($key2,$boards)=each($val1) ) { if($boards['invisible'] && !$permissioncache[$boards['boardid']]) continue; $out .= "<OPTION value=\"+".$boards['boardid']."\""; if($depth>1) $out .= ">".str_repeat("--",$depth-1)." ".$boards['boardname']."</option>"; else $out .= ">".$boards['boardname']."</option>"; $out.=makeboardsearchbit($boards['boardid'],$depth+1); } } unset($boardcache[$bid]); return $out; } /** * @return void * @desc Diese Funktion füllt die Arrays $_REQUEST $_POST $_GET $_COOKIE usw. * mit den Daten aus dem equivalenten Arrays aus PHP Versionen vor 4.10 */ function get_vars_old() { global $HTTP_COOKIE_VARS, $HTTP_POST_FILES, $HTTP_POST_VARS, $HTTP_GET_VARS, $HTTP_SERVER_VARS,$HTTP_ENV_VARS, $HTTP_SESSION_VARS, $_REQUEST, $_COOKIE, $_POST, $_GET, $_SERVER, $_FILES,$_ENV,$_SESSION; if(is_array($HTTP_COOKIE_VARS)) { while(list($key,$val)=each($HTTP_COOKIE_VARS)) { $_REQUEST[$key]=$val; $_COOKIE[$key]=$val; } } if(is_array($HTTP_POST_VARS)) { while(list($key,$val)=each($HTTP_POST_VARS)) { $_REQUEST[$key]=$val; $_POST[$key]=$val; } } if(is_array($HTTP_GET_VARS)) { while(list($key,$val)=each($HTTP_GET_VARS)) { $_REQUEST[$key]=$val; $_GET[$key]=$val; } } if(is_array($HTTP_POST_FILES)) { while(list($key,$val)=each($HTTP_POST_FILES)){ $_FILES[$key]=$val; } } if(is_array($HTTP_SERVER_VARS)) { while(list($key,$val)=each($HTTP_SERVER_VARS)) { $_SERVER[$key]=$val; } } if(is_array($HTTP_ENV_VARS)) { while(list($key,$val)=each($HTTP_ENV_VARS)) { $_ENV[$key]=$val; } } if(is_array($HTTP_SESSION_VARS)) { while(list($key,$val)=each($HTTP_SESSION_VARS)) { $_SESSION[$key]=$val; } } } /** * @return array array * @param array array * @desc Diese Funktion wendet die Funktion stripslashes() * auf alle Elemente eines Arrays (auch mehrdimensional) an. */ function stripslashes_array(&$array) { reset($array); while(list($key,$val)=each($array)) { if(is_string($val)) { $array[$key]=stripslashes($val); } elseif(is_array($val)) { /* rekursiver Aufruf bei mehrdimensionalem Array */ $array[$key]=stripslashes_array($val); } } return $array; } /** * @return array array * @param array array * @desc Diese Funktion wendet die Funktion htmlspecialchars() * auf alle Elemente eines Arrays (auch mehrdimensional) an. */ function htmlspecialchars_array(&$array) { reset($array); while(list($key,$val)=each($array)) { if(is_string($val)) { $array[$key]=htmlspecialchars($val); } elseif(is_array($val)) { /* rekursiver Aufruf bei mehrdimensionalem Array */ $array[$key]=htmlspecialchars_array($val); } } return $array; } /** * @return text string * @param text string * @desc rehtmlspecialchars() macht die Funktin htmlspecialchars() rückgängig. */ function rehtmlspecialchars($text) { $text = str_replace("&lt;","<",$text); $text = str_replace("&gt;",">",$text); $text = str_replace("&quot;","\"",$text); $text = str_replace("&amp;","&",$text); return $text; } # -------- user funktionen /** * @return username string * @param userid int * @desc getUserid() ermittelt die Userid anhand des Benutzernamen */ function getUserid($usernick) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT userid FROM bb".$n."_user_table WHERE username='".addslashes($usernick)."'"); return $result['userid']; } /** * @return userid int * @param username string * @desc getUsername() ermittelt den usernamen anhand der userid */ function getUsername($userid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT username FROM bb".$n."_user_table WHERE userid='$userid'"); return ($result['username']); } /** * @return userid int * @param email string * @desc getUserEmail() ermittelt die eMail Adresse anhand der userid */ function getUserEmail($userid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT useremail FROM bb".$n."_user_table WHERE userid='$userid'"); return $result['useremail']; } /** * @return count int * @param userid int * @param password string * @desc check_userdata() prüft, ob userid und passwort richtig sind. * Der Rückgabewert ist 0, wenn das passwort nicht stimmt und größer 0, * wenn die Daten korrekt sind. */ function check_userdata($userid,$password) { global $n, $db_zugriff; $result = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE userid='$userid' AND userpassword = '".addslashes($password)."' AND activation = 1"); return $result[0]; } /** * @return check string * @param username string * @param password string * @desc checkUser() prüft die kombination von benutzername und passwort. * der Rückgabewert ist 0, wenn der Benutzer nicht existiert und 2, wenn * die Daten korrekt sind und 1, wenn das Passwort falsch ist. */ function checkUser($username,$password) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT userpassword FROM bb".$n."_user_table WHERE username='".addslashes($username)."' && activation='1'"); if(!$result['userpassword']) return 0; elseif($result['userpassword']==$password) return 2; else return 1; } /** * @return password string * @param userid int * @desc getUserPW() gibt das verschlüsselte Passwort des Benutzers zurück. */ function getUserPW($userid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT userpassword FROM bb".$n."_user_table WHERE userid='$userid'"); return $result['userpassword']; } /** * @return rank string * @param posts int * @param groupid int * @desc Diese Funktion ermittelt den Benutzerrang anhand der Beitragszahl und der Benutzergruppe. */ function getUserrang($posts,$groupid) { global $n,$db_zugriff; $rank = $db_zugriff->query_first("SELECT rank FROM bb".$n."_ranks WHERE groupid = $groupid AND posts<='$posts' ORDER by posts DESC"); return $rank['rank']; } # -------- beitrags erstellung /** * @return valid int * @param text string * @desc Diese Funktion überprüft die IMG Tags in einem Beitrag. * Wird die maximale Zahl an Bildern überschritten oder taucht eine * unerlaubte Dateiendung auf oder kommt javascript:, vbscript: oder about: * vor, so wird 1 (ungültig) zurückgegeben. Andernfalls 0 (gültig). */ function check_posts($text) { global $image, $image_ext, $maximage; $extension_array = @explode("\r\n",trim(strtolower($image_ext))); $count=0; if(preg_match("/\[img].*(javascript:|vbscript:|aboutSmile.*\[\/img\]/siU",$text)) { return 1; } else { do { $extension=""; preg_match("/\[img]([^\"]*)\[\/img\]/siU",$text,$exp); if(!isset($exp[0])) $exp[0]=""; if(!$exp[0]) break; $text = str_replace($exp[0],"",$text); $extension = strtolower(substr(strrchr($exp[1],"."),1)); if(!in_array($extension, $extension_array)) { return 1; break; } $count++; } while($exp[0]!="" && $count<=$maximage); if($count>$maximage) return 1; } } /** * @return valid int * @param text string * @desc Diese Funktion überprüft die IMG Tags in einem Beitrag. * Wird die maximale Zahl an Bildern überschritten oder taucht eine * unerlaubte Dateiendung auf oder kommt javascript:, vbscript: oder about: * vor, so wird 1 (ungültig) zurückgegeben. Andernfalls 0 (gültig). */ function check_signature($text) { global $image, $image_ext, $maximage; $extension_array = @explode("\r\n",trim(strtolower($image_ext))); $count=0; if(preg_match("/\[img].*(javascript:|vbscript:|aboutSmile.*\[\/img\]/siU",$text)) { return 1; } else { do { $extension=""; preg_match("/\[img]([^\"]*)\[\/img\]/siU",$text,$exp); if(!isset($exp[0])) $exp[0]=""; if(!$exp[0]) break; $text = str_replace($exp[0],"",$text); $extension = strtolower(substr(strrchr($exp[1],"."),1)); if(!in_array($extension, $extension_array)) { return 1; break; } $count++; } while($exp[0]!="" && $count<=$maximage); if($count>$maximage) return 1; } } // Kopie von check_signature // function check_signature2($text) { global $sigimage, $sigimage_ext, $sigmaximage; $image_ext = explode("\r\n",trim($sigimage_ext)); $count=0; if(preg_match("/\[img].*javascript.*\[\/img\]/siU",$text)) { return 1; } else { do { $exp=array(); preg_match("/\[img]([^\"]*)\[\/img\]/siU",$text,$exp); if(!isset($exp[0])) $exp[0]=""; if(!$exp[0]) break; $text = str_replace($exp[0],"",$text); $extension = trim(strtolower(substr(strrchr($exp[1],"."),1))); if(!in_array($extension, $image_ext)) { return 1; break; } $count++; } while($exp[0]!="" && $count<=$sigmaximage); if($count>$sigmaximage) return 1; } } /* wird nicht mehr benötig * (durch das Auskommentieren finden wir auch Fehler, * wo diese Funktion noch benutzt wird. */ /*function editPostdata($data) { $data = str_replace("'","&acute;", $data); $data = str_replace("\"","&quot;", $data); return $data; }*/ /** * @return text string * @param text string * @desc Diese Funktion ersetzt Urls und email Adressen ohne BBCode durch die Adresse MIT bbcode. * http://link wird zu http://link.. falls der URL Tag schon vorhanden ist, wird nichts ersetzt. */ function parseURL($out) { $urlsearch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si"; $urlsearch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si"; $urlreplace[]="\\1http://\\2\\4"; $urlreplace[]="http://\\1\\3"; $emailsearch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si"; $emailsearch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si"; $emailreplace[]="\\1[EMAIL]\\2[/EMAIL]"; $emailreplace[]="[EMAIL]\\0[/EMAIL]"; $out = preg_replace($urlsearch, $urlreplace, $out); if (strpos($out, "@")) $out = preg_replace($emailsearch, $emailreplace, $out); return $out; } # -------- beitrags anzeige /* wird nicht mehr benötig * (durch das Auskommentieren finden wir auch Fehler, * wo diese Funktion noch benutzt wird. */ /*function editDBdata($data) { $data = str_replace("&acute;","'", $data); $data = str_replace("&quot;","\"", $data); return $data; }*/ /** * @return expression string * @param expression string * @desc escaped einen String für die Benutzung in einem regulären Ausdruck. */ function wbb_preg_quote($expression) { $expression=preg_quote($expression); $expression = str_replace("/","\/",$expression); return $expression; } /** * @return text string * @param text string * @desc Diese Funktion zensiert einen Beitrag. */ function censor($out) { global $cover,$badwords; reset($badwords); if(count($badwords)) { while (list($key, $val) = each($badwords)) { $val = trim($val); if(!$val) continue; if(preg_match("/\{(.+)\}/si", $val, $exp)) { $val = $exp[1]; $position = strpos($val, "="); if($position===false) { $searcharray[] = "/([\s]{1})".wbb_preg_quote($val)."([\s]{1})/si"; $replacearray[] = "\\1".str_repeat($cover, strlen($val))."\\2"; $searcharray[] = "/^".wbb_preg_quote($val)."([\s]{1})/si"; $replacearray[] = str_repeat($cover, strlen($val))."\\1"; $searcharray[] = "/([\s]{1})".wbb_preg_quote($val)."$/si"; $replacearray[] = "\\1".str_repeat($cover, strlen($val)); } else { $pcover = substr($val, $position+1); $val = substr($val, 0, $position); $searcharray[] = "/([\s]{1})".wbb_preg_quote($val)."([\s]{1})/si"; $replacearray[] = "\\1".$pcover."\\2"; $searcharray[] = "/^".wbb_preg_quote($val)."([\s]{1})/si"; $replacearray[] = $pcover."\\1"; $searcharray[] = "/([\s]{1})".wbb_preg_quote($val)."$/si"; $replacearray[] = "\\1".$pcover; } } else { $position = strpos($val, "="); if($position===false) { $out = eregi_replace("$val","".str_repeat($cover, strlen($val))."", $out); $searcharray[] = "/".wbb_preg_quote($val)."/si"; $replacearray[] = str_repeat($cover, strlen($val)); } else { $pcover = substr($val, $position+1); $val = substr($val, 0, $position); $searcharray[] = "/".wbb_preg_quote($val)."/si"; $replacearray[] = $pcover; } } } } // Bug: "Empty regular Expression" bei fehlender Zensurfunktion... if(!isset($searcharray)) $searcharray=array(); if(!isset($replacearray)) $replacearray=array(); return ifelse(count($searcharray) && count($replacearray),preg_replace($searcharray, $replacearray, $out),$out); } /** * @return text string * @param text string * @desc Diese Funktion ersetzt Smiliecodes in einem Text durch die Smiliebilder. */ function smilies($out) { global $smiliecache; if(!count($smiliecache)) $smiliecache = getsmilies(); for($i = 0; $i < count($smiliecache); $i++) $out=str_replace ($smiliecache[$i]['text'], "<img src=".$smiliecache[$i]['path']." border=0>", $out); return $out; } /** * @return smiliecache array * @desc Diese Funktion lädt alle Smiliecodes und Pfade in einen Array (cache). */ function getsmilies() { global $db_zugriff, $n; $result = $db_zugriff->query("SELECT smiliespath as path, smiliestext as text FROM bb".$n."_smilies"); $count = 0; while($row = $db_zugriff->fetch_array($result)) { $smiliecache[$count] = $row; $count++; } return $smiliecache; } /** * @return text string * @param text string * @param disablesmilies=0 int * @desc Diese Funktion ersetzt bearbeitet einen Beitrag zur Anzeige in einem Thema. * HTML wird (wenn eingestellt) zensiert. Smilies werden (wenn eingestellt) ersetzt. * Ferner wird die Zensur (wenn eingestellt) angewendet und BBCode (wenn eingestellt) wird ersetzt. */ function editPost($out,$disable_smilies=0,$selfposted=0) { global $bbcode,$html,$smilies,$badwords,$n,$db_zugriff,$userdata; $nlreplace=substr(md5(uniqid(microtime())),0,6); if(!$html) { #$out = str_replace("&lt;","&amp;lt;",$out); #$out = str_replace("&gt;","&amp;gt;",$out); #$out = str_replace("<","&lt;",$out); #$out = str_replace(">","&gt;",$out); $out = htmlspecialchars($out); } // <script> ist generell verboten... else $out = preg_replace("/<script[^>]*>/i","&lt;script\\1&gt;",$out); #$out = str_replace("\r\n",$nlreplace,$out); #$out = str_replace($nlreplace,"\r\n",$out); if($smilies && !$disable_smilies) $out = smilies($out); if($bbcode) $out = prepare_code($out); #$out = nl2br($out); $out = str_replace("\n","<br />",$out); $out = censor($out); $out = nt_wordwrap($out); return $out; } /** * @return text string * @param text string * @param disablesmilies=0 int * @desc Diese Funktion bearbeitet eine Signatur für die Anzeige in einem Thema. * HTML wird ersetzt, Smilies und BBCode werden ersetzt und die Zensur angewendet. */ function editSignatur($out,$disable_smilies=0) { global $sigbbcode,$sightml,$sigsmilies,$badwords; #$out = editDBdata($out); $nlreplace=substr(md5(uniqid(microtime())),0,6); if(!$sightml) { #$out = str_replace("&lt;","&amp;lt;",$out); #$out = str_replace("&gt;","&amp;gt;",$out); #$out = str_replace("<","&lt;",$out); #$out = str_replace(">","&gt;",$out); $out = htmlspecialchars($out); } else $out = preg_replace("/<script[^>]*>/i","&lt;script\\1&gt;",$out); $out = str_replace("\r\n",$nlreplace,$out); $out = str_replace($nlreplace,"\n",$out); if($sigsmilies && !$disable_smilies) $out = smilies($out); if($sigbbcode) $out = prepare_code($out); #$out = nl2br($out); $out = str_replace("\n","<br />",$out); /*$out = nl2br($out); if($sigsmilies && !$disable_smilies) $out = smilies($out); if($sigbbcode) $out = prepare_code($out); */ $out = censor($out); $out = nt_wordwrap($out); return $out; } /** * @return return mixed * @param expression boolean * @param returntrue mixed * @param returnfalse=null mixed * @desc Diese Funktion gibt returntrue zurück, wenn expression true ergibt. Andernfalls wird returnfalse zurückgegeben. */ function ifelse($expression,$returntrue,$returnfalse="") { #if (!$expression) return $returnfalse; #else return $returntrue; return ($expression ? $returntrue : $returnfalse); } /** * @return code string * @param code string * @desc Diese Funktion formatiert Code mit dem <pre> Tag */ function formatcodetag($code) { #$code = str_replace("<br>","",$code); #$code = str_replace("<br />","",$code); $code = str_replace("\\\"","\"",$code); return "<blockquote><pre><font size=1>code:</font><hr><p>".$code."</p><hr></pre></blockquote>"; } /** * @return link string * @param url string * @param title=null string * @param maxwidth=60 int * @param width1=40 int * @param width2=-15 int * @desc Diese Funktion gibt einen Link zu url mit dem Titel title zurück. * Ist der Titel länger als maxwidth und kommt kein IMG Tag darin vor, wird er "abgeschnitten". */ function formaturl($url, $title="", $maxwidth=60, $width1=40, $width2=-15) { if(!trim($title)) $title=$url; if(!preg_match("/[a-z]:\/\//si", $url)) $url = "http://$url"; if(strlen($title)>$maxwidth && !stristr($title,"[img]")) $title = substr($title,0,$width1)."...".substr($title,$width2); return "<a href=\"$url\" target=\"_blank\">".str_replace("\\\"", "\"", $title)."</a>"; } /** * @return list string * @param list string * @param listtype=null string * @desc Diese Funktion formatiert eine Liste... */ function formatlist($list, $listtype="") { $listtype = ifelse(!trim($listtype), "", " type=\"$listtype\""); $list = str_replace("\\\"","\"",$list); if ($listtype) return "<ol$listtype>".str_replace("[*]","<li>", $list)."</ol>"; else return "<ul>".str_replace("[*]","<li>", $list)."</ul>"; } /** * @return highlighted_code string * @param code string * @desc Diese Funktion formatiert einen Code innerhalb eines PHP Tags mit highlight_string() */ function phphighlite($code) { #$code = str_replace("\\\"","\"",$code); $code = rehtmlspecialchars($code); #$code = str_replace("&gt;", ">", $code); #$code = str_replace("&lt;", "<", $code); #$code = str_replace("&amp;", "&", $code); #$code = str_replace('$', '\$', $code); #$code = str_replace('\n', '\\\\n', $code); #$code = str_replace('\r', '\\\\r', $code); #$code = str_replace('\t', '\\\\t', $code); #$code = str_replace("<br>", "", $code); #$code = str_replace("<br />", "", $code); $code = stripslashes($code); if(!strpos($code,"<?") && substr($code,0,2)!="<?") $code="<?php\n".trim($code)."\n?>"; $code = trim($code); ob_start(); $oldlevel=error_reporting(0); highlight_string($code); error_reporting($oldlevel); $buffer = ob_get_contents(); ob_end_clean(); #$buffer = str_replace("<br />", "",$buffer); #$buffer = str_replace("&quot;", "\"", $buffer); #echo nl2br(htmlspecialchars($buffer))."<hr>"; return "<blockquote><pre><font size=1>php:</font><hr><p>$buffer</p><hr></pre></blockquote>"; } /** * @return out string * @param out string * @desc .. */ function prepare_quote($out) { global $zensur; #$out = editDBdata($out); if($zensur == 1) $out = censor($out); return $out; } /** * @return topic string * @param topic string * @desc Diese Funktion zensiert HTML in einem String.. */ function prepare_topic($out) { #return htmlspecialchars(nt_wordwrap(editDBdata($out),40)); return htmlspecialchars(nt_wordwrap($out,45)); } // Kopie von prepare_topic() // function prepare_topic2($out) { #return htmlspecialchars(nt_wordwrap(editDBdata($out),40)); return htmlspecialchars(stripslashes(nt_wordwrap($out,40))); } # -------- sonstige /** * @return mods string * @param boardid int * @desc Gibt eine Liste mit den Moderatoren eines Forums zurück. */ function getMod($id) { global $boardid,$styleid,$session,$db_zugriff,$n; $result = $db_zugriff->query("SELECT objectid,username FROM bb".$n."_object2board LEFT JOIN bb".$n."_user_table ON bb".$n."_user_table.userid=bb".$n."_object2board.objectid WHERE boardid = '$id' AND mod = 1"); $mods = ""; while($row = $db_zugriff->fetch_array($result)) { if($mods) $mods .= ", "; $mods .= "<a href=\"members.php?mode=profile&userid=".$row['objectid']."&boardid=".$boardid."&styleid=".$styleid.$session."\">".($row['username'])."</a>"; } return $mods; } /*function getMod($id) { global $boardid,$styleid,$session,$db_zugriff,$n; $result = $db_zugriff->query("SELECT objectid FROM bb".$n."_object2board WHERE boardid = '$id' AND mod = 1"); $mods = ""; while($row = $db_zugriff->fetch_array($result)) { if($mods) $mods .= ", "; $mods .= "<a href=\"members.php?mode=profile&userid=".$row['objectid']."&boardid=".$boardid."&styleid=".$styleid.$session."\">".getUsername($row['objectid'])."</a>"; } return $mods; }*/ /** * @return lastauthor string * @param threadid int * @desc Gibt den letzten Autor in einem Thema zurück... (mit Link zum profil). */ function getLastAuthor($threadid) { global $boardid,$n,$db_zugriff,$session; $result = $db_zugriff->query_first("SELECT userid FROM bb".$n."_posts WHERE threadparentid='$threadid' ORDER by posttime DESC LIMIT 1"); return "<a href=\"members.php?mode=profile&userid=$result[userid]&boardid=$boardid$session\">".getUsername($result['userid'])."</a>"; } /** * @return flag int * @param threadid int * @desc Gibt den/die/das (*gg*) Flag eines thread zurück. 1 entspricht geschlossen, 0 entspricht offen. * Damit überprüft man also, ob ein Thread geschlossen ist oder nicht. */ function getThreadflag($threadid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT flags FROM bb".$n."_threads WHERE threadid='$threadid'"); return $result['flags']; } /** * @return highlighted_code string * @param code string * @desc Diese Funktion formatiert einen Code innerhalb eines PHP Tags mit highlight_string() */ function getBoardname($boardid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT boardname FROM bb".$n."_boards WHERE boardid='$boardid'"); return prepare_topic($result['boardname']); } /** * @return threadname string * @param threadid int * @desc Ermittelt den Namen eines Themas anhand der ID und gibt ihn zurück.. */ function getThreadname($threadid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT threadname FROM bb".$n."_threads WHERE threadid='$threadid'"); return prepare_topic($result['threadname']); } /** * @return url string * @param id int * @param nr int * @desc Ermittelt die URL zum letzten Beitrag 1) eines Themas 2) eines Forums 3) eines Benutzers */ function getLastPost($id,$nr) { global $eproseite, $n, $db_zugriff, $session, $longdateformat, $postorder, $sid, $styleid; if($nr==1) { $result = $db_zugriff->query_first("SELECT threadid,replies FROM bb".$n."_threads WHERE boardparentid='$id' ORDER by timelastreply DESC LIMIT 1"); $threadid = $result['threadid']; if($postorder) return "thread.php?threadid=".$threadid."&boardid=".$id."$session&page=1#1"; else { $posts = $result['replies']+1; $pages=(int)($posts/$eproseite); if(($posts/$eproseite)-$pages>0) $pages++; return "thread.php?threadid=".$threadid."&boardid=".$id."$session&page=".$pages."#".$posts; } } if($nr==2) { $result = $db_zugriff->query_first("SELECT boardparentid,replies FROM bb".$n."_threads WHERE threadid='$id' LIMIT 1"); $boardid = $result['boardparentid']; if($postorder) return "thread.php?threadid=".$id."&boardid=".$boardid."$session&page=1#1"; else { $posts = $result['replies']+1; $pages=(int)($posts/$eproseite); if(($posts/$eproseite)-$pages>0) $pages++; return "thread.php?threadid=".$id."&boardid=".$boardid."$session&page=".$pages."#".$posts; } } if($nr==4) { $result = $db_zugriff->query_first("SELECT threadparentid, boardparentid FROM bb".$n."_posts WHERE userid='$id' ORDER by posttime DESC LIMIT 1"); $threadid = $result['threadparentid']; if($postorder) return "thread.php?threadid=".$threadid."&boardid=".$result['boardparentid']."$session&page=1#1"; else { $result = $db_zugriff->query_first("SELECT boardparentid,replies FROM bb".$n."_threads WHERE threadid='$threadid'"); $posts = $result['replies']+1; $pages=(int)($posts/$eproseite); if(($posts/$eproseite)-$pages>0) $pages++; return "thread.php?threadid=".$threadid."&boardid=".$result['boardparentid']."&styleid=$styleid$session&page=".$pages."#".$posts; } } if($nr==5) { $result = $db_zugriff->query_first("SELECT threadparentid, boardparentid FROM bb".$n."_posts WHERE userid='$id' ORDER by posttime DESC LIMIT 1"); $threadid = $result['threadparentid']; if($postorder) return "thread.php?threadid=".$threadid."&boardid=".$result['boardparentid']."$session&page=1#1"; else { $result = $db_zugriff->query_first("SELECT boardparentid,replies FROM bb".$n."_threads WHERE threadid='$threadid'"); $posts = $result['replies']+1; $pages=(int)($posts/$eproseite); if(($posts/$eproseite)-$pages>0) $pages++; return "thread.php?threadid=".$threadid."&boardid=".$result['boardparentid']."&styleid=$styleid$session&page=".$pages."#".$posts; } } } /** * @return url string * @param threadid int * @param time int * @desc Ermittelt die URL des ersten neuen Beitrags in einem Themas. */ function firstnewPost($threadid,$time) { global $eproseite,$n,$db_zugriff,$styleid,$session, $postorder; $sthreadname = "sthread_".$threadid; global $$sthreadname; if($$sthreadname > $time) $time = $$sthreadname+1; $thread = $db_zugriff->query_first("SELECT boardparentid, replies FROM bb".$n."_threads WHERE threadid='$threadid' ORDER by timelastreply DESC"); $posts = $thread['replies']+1; $result = $db_zugriff->query("SELECT posttime FROM bb".$n."_posts WHERE threadparentid='$threadid' ORDER by posttime ".ifelse($postorder,"DESC","ASC")); $i=1; while($row = $db_zugriff->fetch_array($result)) { if($time<=$row['posttime']) break; $i++; } $db_zugriff->free_result($result); $j=(int)($i/$eproseite); if(($i/$eproseite)-$j>0) $j++; return "thread.php?threadid=".$threadid."&boardid=".$thread[boardparentid]."&styleid=$styleid$session&page=".$j."#".$i; } /** * @return isonline int * @param userid int * @desc Überprüft, ob ein Benutzer online ist. Gibt 1 zurück, wenn er online ist, andernfalls 0. */ function checkuseronline($userid) { global $n,$db_zugriff, $timeout; $user = $db_zugriff->query_first("SELECT COUNT(userid) as anzahl FROM bb".$n."_user_table WHERE userid='$userid' AND invisible='0'"); if($user['anzahl']) $anzahl = $db_zugriff->query_first("SELECT COUNT(zeit)as anzahl FROM bb".$n."_useronline WHERE userid='$userid' AND zeit>='".(time()-60*$timeout)."'"); return $anzahl['anzahl']; } /** * @return result int * @param postid int * @param threadid int * @param boardid int * @desc Löscht einen Beitrag in einem Thema. Sind keine Antworten mehr in einem Thema, wird auch das Thema gelöscht. * Wird nur ein Beitrag gelöscht, wird 1 zurückgegeben. Wenn auch das Thema gelöscht wird, wird 2 zurückgegeben. */ function delPost($postid,$threadid,$boardid) { global $n,$db_zugriff; $threadinfo = $db_zugriff->query_first("SELECT replies FROM bb".$n."_threads WHERE threadid = '$threadid'"); if(!$threadinfo['replies']) { // keine Antworten mehr => Thema auch löschen. $author = $db_zugriff->query_first("SELECT userid FROM bb".$n."_posts WHERE postid = '$postid'"); delUserposts($author[0]); $db_zugriff->query("DELETE FROM bb".$n."_threads WHERE threadid='$threadid'"); $db_zugriff->query("DELETE FROM bb".$n."_posts WHERE postid='$postid'"); $pinfo = $db_zugriff->query_first("SELECT postid, posttime, userid FROM bb".$n."_posts WHERE boardparentid = '$boardid' ORDER BY posttime DESC LIMIT 1"); $db_zugriff->query("UPDATE bb".$n."_boards SET threads=threads-1, posts=posts-1, lastposttime = '$pinfo[posttime]', lastpostid = '$pinfo[postid]' WHERE boardid = '$boardid'"); $db_zugriff->query("DELETE FROM bb".$n."_notify WHERE threadid='$threadid'"); $db_zugriff->query("DELETE FROM bb".$n."_poll WHERE threadid='$threadid'"); $db_zugriff->query("DELETE FROM bb".$n."_vote WHERE threadid='$threadid'"); $db_zugriff->query("DELETE FROM bb".$n."_object2user WHERE objectid='$threadid' AND favthreads = 1"); return 2; } else { // nur beitrag löschen.. $author = $db_zugriff->query_first("SELECT userid FROM bb".$n."_posts WHERE postid = '$postid'"); delUserposts($author[0]); $db_zugriff->query("DELETE FROM bb".$n."_posts WHERE postid='$postid'"); $tinfo=$db_zugriff->query_first("SELECT userid, posttime FROM bb".$n."_posts WHERE threadparentid='$threadid' ORDER BY posttime DESC"); $db_zugriff->query("UPDATE bb".$n."_threads SET replies=replies-1, timelastreply='$tinfo[posttime]', lastposterid='$tinfo[userid]' WHERE threadid = '$threadid'"); $pinfo = $db_zugriff->query_first("SELECT postid, posttime FROM bb".$n."_posts WHERE boardparentid = '$boardid' ORDER BY posttime DESC LIMIT 1"); $db_zugriff->query("UPDATE bb".$n."_boards SET posts=posts-1, lastposttime = '$pinfo[posttime]', lastpostid = '$pinfo[postid]' WHERE boardid = '$boardid'"); return 1; } } /** * @return void * @param userid int * @desc Verringert die Beitragszahl des Benutzers um 1. (wenn ein Beitrag gelöscht wird). */ function delUserposts($userid) { global $n,$db_zugriff; $db_zugriff->query("UPDATE bb".$n."_user_table SET userposts=userposts-1 WHERE userid='$userid'"); } /** * @return date string * @param time int * @param format string * @param replacetoday=0 int * @desc Gibt die Zeit time formatiert nach format zurück. * Ist replacetoday=1, wird das heutige Datum durch "heute" ersetzt. */ function formatdate($time,$format,$replacetoday=0) { global $db_zugriff, $n, $timetype, $timeoffset, $today; $time = $time+(3600*$timeoffset); if(date("dmY", time()+(3600*$timeoffset))==date("dmY", $time) && $replacetoday) { // heute ersetzen. $position = strpos($today, "="); if($position!==false) { $pcover = substr($today, $position+1); $val = substr($today, 0, $position); $format = str_replace($val,$pcover, $format); } } $out = str_replace("DD",date("d", $time), $format); $out = str_replace("MM",date("m", $time), $out); $out = str_replace("YYYY",date("Y", $time), $out); $out = str_replace("YY",date("y", $time), $out); $out = str_replace("MN",get_month_name(date("n", $time)), $out); if($timetype) { #12 Stunden $out = str_replace("II","II ".date("A", $time), $out); $out = str_replace("HH",date("h", $time), $out); } else $out = str_replace("HH",date("H", $time), $out); $out = str_replace("II",date("i", $time), $out); return $out; } /** * @return template string * @param templatename string * @param extension='htm' string * @desc gibt den Inhalt der Template template zurück. Benutzt einen Cache.. */ function gettemplate($template,$endung="htm") { global $templatefolder,$templatecache; // noch nicht im Cache if(!isset($templatecache[$template])) { if(!$templatefolder) $templatefolder = "templates"; $templatecache[$template] = implode("",file($templatefolder."/".$template.".".$endung)); } return str_replace("\"","\\\"",$templatecache[$template]); } /** * @return void * @param template string * @desc Ersetzt in template einige Codewörter zur Formatierung und gibt template dann auf dem Bildschirm aus. */ function dooutput($template) { global $_SESSION, $_COOKIE, $db_zugriff,$bgcolor, $tablebg, $tableb, $tablec, $tabled, $tablea, $font, $fontcolor, $fontcolorsec, $fontcolorthi, $fontcolorfour, $bgfixed, $bgimage, $imagefolder; $template = str_replace("{pagebgcolor}","$bgcolor",$template); $template = str_replace("{tablebordercolor}","$tablebg",$template); $template = str_replace("{tablea}","$tablea",$template); $template = str_replace("{tableb}","$tableb",$template); $template = str_replace("{tablec}","$tablec",$template); $template = str_replace("{tabled}","$tabled",$template); $template = str_replace("{font}","$font",$template); $template = str_replace("{fontcolorfirst}","$fontcolor",$template); $template = str_replace("{fontcolorsecond}","$fontcolorsec",$template); $template = str_replace("{fontcolorthird}","$fontcolorthi",$template); $template = str_replace("{fontcolorfourth}","$fontcolorfour",$template); $template = str_replace("{imagefolder}","$imagefolder",$template); if($bgimage) $hgpicture = " background=\"$bgimage\""; if(isset($hgpicture)) $template = str_replace("{hgpicture}","$hgpicture",$template); if($bgfixed) $template = str_replace("{bgproperties}"," bgproperties=fixed",$template); else $template = str_replace("{bgproperties}","",$template); echo $template; } // ########################## Neuen Post einfügen * ######################################################## /** * @return result int * @param boardid int * @param threadid int * @param userid int * @param subject string * @param message string * @param posticon int * @param parseurl int * @param email int * @param disablesmilies int * @param signature int * @param close int * @desc erstellt einen neuen Beitrag im Thema mit der id threadid und dem board mit der id boardid * mit dem Inhalt subject und message. Ausserdem gibt es einige Parameter. * Gibt 4 zurück, wenn der Beitrag erstellt wurde. Wenn der Beitrag nicht erstellt werden konnte, weil das Thema * schon geschlossen ist, wird 2 zurückgegben. */ function newPost($boardid,$threadid,$userid,$subject,$message,$posticon,$parseurl,$email,$disablesmilies,$signature,$close) { global $n,$db_zugriff,$REMOTE_ADDR,$timeoffset; $thread_info = $db_zugriff->query_first("SELECT boardparentid,flags FROM bb".$n."_threads WHERE threadid='$threadid'"); if($thread_info['flags']==1) return 2; // Thema schon geschlossen.. else // Beitrag speichern. { $time = time(); if($parseurl) $message = parseURL($message); if($disablesmilies!=1) $disablesmilies=0; if($signature!=1) $signature=0; $db_zugriff->query("UPDATE bb".$n."_user_table SET userposts=userposts+1 WHERE userid='$userid'"); $db_zugriff->query("UPDATE bb".$n."_threads SET replies=replies+1, lastposterid='$userid', timelastreply='$time' WHERE threadid='$threadid'"); $db_zugriff->query("INSERT INTO bb".$n."_posts (boardparentid,threadparentid,userid,posttime,posttopic,message,posticon,disable_smilies,signature,ip) VALUES ('$boardid','$threadid','$userid','$time','$subject','$message','$posticon','$disablesmilies','$signature','$REMOTE_ADDR')"); $postid = $db_zugriff->insert_id(); $db_zugriff->query("UPDATE bb".$n."_boards SET posts=posts+1, lastposttime = '$time', lastpostid = '$postid' WHERE boardid = '$boardid'"); $curtime = time(); $curtime = $curtime+($timeoffset*3600); $date_today = getdate($curtime); $time_today=mktime(0,0,0,$date_today[mon],$date_today[mday],$date_today[year]); $res1 = $db_zugriff->query("UPDATE bb".$n."_stat SET newposts = newposts+1 where time = '$time_today'"); sendEmail($userid,getLastPost($userid,5),$threadid,$boardid); if($email && $userid) // eMail Benachrichtigung einfügen. { $check = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_notify WHERE threadid = '$threadid' AND userid = '$userid'"); if(!$check[0]) $db_zugriff->query("INSERT INTO bb".$n."_notify (threadid,userid) VALUES ($threadid,$userid)"); } // Thema auch gleich schliessen if($close) $db_zugriff->query("UPDATE bb".$n."_threads SET flags = 1 WHERE threadid = '$threadid'"); return 4; } } // ########################## Useronline * ######################################################## /** * @return void * @param user_id int * @desc diese Funktion wird bei jedem Seitenaufruf aufgerufen und trägt den Benutzer * in die useronlineliste ein bzw. aktualisiert seinen Eintrag. */ function useronline($user_id) { global $useronlinelastemptied,$timeout,$n,$db_zugriff,$rekord,$sid,$REMOTE_ADDR; $deltime = time()-($timeout*60); // Registrierter Benutzer .. keine ip if($user_id) { $db_zugriff->query("REPLACE INTO bb".$n."_useronline (sid,zeit,ip,userid) VALUES ('$sid','".time()."','','$user_id')"); $db_zugriff->query("DELETE FROM bb".$n."_useronline WHERE userid=$user_id AND sid<>'$sid'"); } // Gast, identifizierung anhand der ip.. else { $db_zugriff->query("REPLACE INTO bb".$n."_useronline (sid,zeit,ip,userid) VALUES ('$sid','".time()."','$REMOTE_ADDR','')"); } // Wenn die letzte "Löschung" mehr als timeout Minuten zurückliegt, // ist es Zeit für die nächste Wink if((time()-$timeout*60)>$useronlinelastemptied) { $db_zugriff->query("DELETE FROM bb".$n."_useronline WHERE zeit<'$deltime'"); $db_zugriff->query("UPDATE bb".$n."_config SET useronlinelastemptied='".time()."'"); } // Useronline Rekord aktualisieren.. $user = $db_zugriff->query_first("SELECT COUNT(zeit) as anzahl FROM bb".$n."_useronline"); if($user['anzahl']>$rekord) $db_zugriff->query("UPDATE bb".$n."_config set rekord='".$user['anzahl']."', rekordtime='".time()."'"); } /** * @return void * @param userid int * @param link string * @param threadid int * @param boardid int * @desc Wenn jemand die Email Benachrichtigung zum Thema mit der id threadid aktiviert hat, * wird eine Benachrichtigung per email gesendet, dass der benutzer (mit der id userid) einen neuen * Beitrag im Thema (mit der Id threadid - im Board mit der id boardid) geschrieben hat. * link ist die direkte URL zu diesem Beitrag. */ function sendEmail($userid,$link,$threadid,$boardid) { global $boardid, $master_email, $php_path, $db_zugriff, $n; $result = $db_zugriff->query("SELECT * FROM bb".$n."_notify WHERE threadid = '$threadid'"); if($db_zugriff->num_rows($result)) { $boardname = getBoardname($boardid); $threadname = getThreadname($threadid); if($userid) $authorname = getUsername($userid); else eval ("\$authorname = \"".gettemplate("lg_anonymous")."\";"); eval ("\$inhalt = \"".gettemplate("notify_inhalt")."\";"); eval ("\$betreff = \"".gettemplate("notify_betreff")."\";"); while($row = $db_zugriff->fetch_array($result)) { if($row['userid']==$userid) continue; $email = getUserEmail($row['userid']); mail($email,$betreff,$inhalt.$row['userid'],"From: ".$master_email); } } } // ########################## activation * ######################################################## /** * @return result int * @param userid int * @param code int * @desc Aktiviert den Benutzeraccount mit der id userid, * wenn der code mit dem in der Datenbank übereinstimmt (der bei der Registrierung versendet wurde). * Gibt bei Erfolg 0 zurück; wenn der Benutzeraccount nicht exisiert, wird 1 zurückgegen. * Ist der Benutzeraccount schon aktiviert, wird 2 zurückgegeben. Wenn der Code falsch ist, wird 3 zurückgegeben. */ function activat($userid,$code) { global $n,$db_zugriff; $anzahluser = $db_zugriff->query_first("SELECT COUNT(userid)as anzahl FROM bb".$n."_user_table WHERE userid='$userid'"); if($anzahluser['anzahl']==0) return 1; // kein Benutzer gefunden. else { $result = $db_zugriff->query("SELECT activation FROM bb".$n."_user_table WHERE userid='$userid' && activation!='1'"); $anzahluser = $db_zugriff->num_rows($result); if($anzahluser==0) return 2; // Benutzeraccount ist schon aktiviert. else { $result = $db_zugriff->fetch_array($result); if($code==$result['activation']) $db_zugriff->query("UPDATE bb".$n."_user_table SET activation='1' WHERE userid='$userid'"); else return 3; // falscher Code } } } /** * @return output string * @param userid int * @param id int * @param b_or_t string * @desc Fügt ein Board/Thema zu den Favoriten des Benutzers userid hinzu. */ function subscripe($userid,$id,$b_or_t) { global $n,$db_zugriff,$favboards,$favthreads; $output=""; if($b_or_t == "b") $max = $favboards; else $max = $favthreads; $field = "fav".$b_or_t; if(!check_userobject($userid,$id,$field)) { $count = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_object2user WHERE userid = '$userid' AND $field = 1"); if($count[0] >= $max) eval ("\$output = \"".gettemplate("error24")."\";"); else $db_zugriff->query("INSERT INTO bb".$n."_object2user (userid,objectid,$field) VALUES ('$userid','$id','1')"); } return $output; } /** * @return color string * @param zeilennr int * @desc Gibt abwechselnd 'tableb'/'tablec' zurück. */ function rowcolor($zeile) { if (($zeile/2) != floor($zeile/2)) $color="tableb"; else $color="tablec"; return $color; } /** * @return boardid int * @param threadid int * @desc gibt die id des Forums zurück. */ function getBoardparent($threadid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT boardparentid FROM bb".$n."_threads WHERE threadid='$threadid'"); return $result['boardparentid']; } /** * @return void * @param id int * @param userid int * @param b_or_t string * @desc Entfernt ein Board/Thema aus den Favoriten des Benutzers userid */ function unsubscripe($id,$userid,$b_or_t) { global $n,$db_zugriff; $field = "fav".$b_or_t; $db_zugriff->query("DELETE FROM bb".$n."_object2user WHERE userid = '$userid' AND objectid = '$id' AND $field = 1"); } /** * @return userstars string * @param posts int * @param groupid int * @desc gibt einen String mit den Bildern des Ranges zurück, der mit posts und groupid ermittelt wird. */ function getUserStars($posts,$groupid) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT id, rank, grafik, mal FROM bb".$n."_ranks WHERE groupid = $groupid AND posts<='$posts' ORDER by posts DESC"); # for($i = 0; $i<$result[mal]; $i++) { # $out .= "<img src=\"".$result['grafik']."\" border=\"0\">"; #} $out = str_repeat("<img src=\"".$result['grafik']."\" border=\"0\">",$result['mal']); return "<a href=\"javascript:rank($result[id])\" title=\"Informationen zum Rang $result[rank]\">".$out."</a>"; } /** * @return void * @param absender string * @param message string * @param betreff string * @useremail string * @desc Schickt über das Board eine email an useremail mit dem Absender absender und dem Inhalt betreff und message */ function formmail($absender,$message,$betreff,$useremail) { global $master_board_name, $php_path; $useremail = trim($useremail); #$message .= "\n\n_________________________________________________________________\nPowered by: ".$master_board_name." - ".$php_path; eval ("\$message = \"".gettemplate("formmail_message2")."\";"); $absender = "From: ".$absender; mail($useremail,$betreff,$message,$absender); } /** * @return void * @param userid int * @param postid int * @param boardid int * @param threadid int * @desc Schickt eine eMail an den moderator des Forums boardid und meldet den Beitrag mit der id postid. */ function report($userid,$postid,$boardid,$threadid) { global $master_board_name, $php_path, $master_email, $db_zugriff, $n, $eproseite; $mod = $db_zugriff->query_first("SELECT bb".$n."_object2board.objectid, useremail FROM bb".$n."_object2board LEFT JOIN bb".$n."_user_table ON (bb".$n."_object2board.objectid=bb".$n."_user_table.userid) WHERE boardid='$boardid' AND mod=1"); if(!$mod['useremail']) $mod = $db_zugriff->query_first("SELECT bb".$n."_object2board.objectid, useremail FROM bb".$n."_object2board LEFT JOIN bb".$n."_user_table ON (bb".$n."_object2board.objectid=bb".$n."_user_table.userid) WHERE mod=1"); if(!$mod['useremail']) $mod = $db_zugriff->query_first("SELECT bb".$n."_groups.id, useremail FROM bb".$n."_groups LEFT JOIN bb".$n."_user_table ON (bb".$n."_groups.id=bb".$n."_user_table.groupid) WHERE ismod=1 OR issupermod=1 ORDER BY ismod DESC"); $posts = $db_zugriff->query("SELECT postid,userid FROM bb".$n."_posts WHERE threadparentid='".$threadid."' ORDER BY posttime ASC"); $i=0; while($post=$db_zugriff->fetch_array($posts)) { $i++; if($post['postid']==$postid) break; } $page=ceil($i/$eproseite); $authorname = getUsername($post['userid']); $username = getUsername($userid); eval ("\$betreff = \"".gettemplate("report_betreff")."\";"); eval ("\$message = \"".gettemplate("report_mail")."\";"); mail(trim($mod['useremail']),$betreff,$message,"From: ".$master_email); } // ###################### Get Code Buttons ####################### /** * @return bbcode_buttons string * @desc lädt die Templates für die bbcode buttons und gibt den inhalt zurück. */ function getcodebuttons() { $modechecked[0] = "CHECKED"; $modechecked[1] = ""; eval ("\$bbcode_sizebits = \"".gettemplate("bbcode_sizebits")."\";"); eval ("\$bbcode_fontbits = \"".gettemplate("bbcode_fontbits")."\";"); eval ("\$bbcode_colorbits = \"".gettemplate("bbcode_colorbits")."\";"); eval ("\$bbcode_alignbits = \"".gettemplate("bbcode_alignbits")."\";"); eval ("\$bbcode_buttons = \"".gettemplate("bbcode_buttons")."\";"); return $bbcode_buttons; } // ###################### Get Clicky Smilies ####################### /** * @return bbcodesmilies string * @param tableColumns=3 int * @param maxSmilies=-1 int * @desc generiert eine HTML Tabelle mit allen Smilies (die man anklicken kann - zum einfügen in beiträge). * tableColumns Smilies pro Reihe. */ function getclickysmilies ($tableColumns=3,$maxSmilies=-1) { global $session,$boardid,$styleid, $db_zugriff, $n, $sid; $result = $db_zugriff->query("SELECT * FROM bb".$n."_smilies"); $totalSmilies = $db_zugriff->num_rows($result); if (($maxSmilies == -1) || ($maxSmilies >= $totalSmilies)) $maxSmilies = $totalSmilies; elseif ($maxSmilies < $totalSmilies) eval ("\$bbcode_smilies_getmore = \"".gettemplate("bbcode_smilies_getmore")."\";"); $i=0; while($row = $db_zugriff->fetch_array($result)) { eval ("\$smilieArray[\"".$i."\"] = \"".gettemplate("bbcode_smiliebit")."\";"); $i++; } $tableRows = ceil($maxSmilies/$tableColumns); $count = 0; $smiliebits = ""; for ($i=0; $i<$tableRows; $i++) { $smiliebits .= "\t<tr bgcolor=\"{tableb}\">\n"; for ($j=0; $j<$tableColumns; $j++) { $smiliebits .= "\t<td align=\"center\">".$smilieArray[$count]."&nbsp;</td>\n"; $count++; } $smiliebits .= "\t</tr>\n"; } eval ("\$bbcode_smilies = \"".gettemplate("bbcode_smilies")."\";"); return $bbcode_smilies; } /** * @return userposts int * @param username string * @desc ermittelt die Beitragszahl des Benutzers username und gibt sie zurück. */ function getUserposts($name) { global $db_zugriff, $n; // Ich bin nicht sicher, wie die Funktion aufgerufen wird (habs net gefunden). // also ob addslashes() und htmlspecialchars() schon auf den Benutzername angewendet wurden oder nicht. $result = $db_zugriff->query_first("SELECT userposts FROM bb".$n."_user_table WHERE username='".addslashes(htmlspecialchars($name))."'"); #$result = $db_zugriff->query_first("SELECT userposts FROM bb".$n."_user_table WHERE username='".$name."'"); return $result['userposts']; } /** * @return result int * @param boardid int * @param objectid int * @param field string * @desc Überprüft, ob man Zugriff auf ein Forum hat, ob man moderator ist etc. * Rückgabewert: bei Erfolg 1, ansonsten 0. */ function check_boardobject($boardid,$objectid,$field) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_object2board WHERE boardid = '$boardid' AND objectid = '$objectid' AND $field = 1"); return $result[0]; } /** * @return result int * @param userid int * @param objectid in * @param field string * @desc überprüft, ob man jemanden in der buddy- oder ignoreliste hat oder ob man ein board oder thread in den favoriten hat. * Rückgabewert: bei Erfolg 1, ansonsten 0. */ function check_userobject($userid,$objectid,$field) { global $n,$db_zugriff; $result = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_object2user WHERE userid = '$userid' AND objectid = '$objectid' AND $field = 1"); return $result[0]; } /** * @return result int * @param email string * @param db=0 int * @desc Überprüft, ob eine eMail Adresse gültig ist. * Rückgabewert: 1 wenn die Email Adresse ungültig ist. Wenn sie gültig ist, dann kein Rückgabewert. * Der Parameter db gibt an, ob überprüft werden soll, ob die eMail Adresse schon in der Datenbank eingetragen ist. */ function checkemail($email, $db=0) { global $db_zugriff, $n, $multi_email, $banemail; if(!substr_count($email,"@") || substr_count($email,"@")>1) return 1; $position1 = strrpos($email,"@"); if(!$position1) return 1; $position2 = strrpos($email,"."); if(!$position2) return 1; if(strlen(substr($email, $position2)) < 3)return 1; if(strlen(substr($email, $position1,$position2-$position1-1))<2) return 1; if(!$multi_email && !$db) { $check = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE useremail = '$email'"); if($check[0]) return 1; } $banemail = @explode("\n",$banemail); for($i = 0; $i < count($banemail); $i++) { if(!trim($banemail[$i])) continue; if(ereg("\*", $banemail[$i])) { $banemail[$i] = str_replace("*",".*", trim($banemail[$i])); if(eregi("$banemail[$i]", $email)) return 1; break; } elseif(strtolower($email)==strtolower(trim($banemail[$i]))) { return 1; break; } } } /** * @return result int * @param name string * @desc Überprüft einen Benutzernamen auf seine Gültigkeit. * Wenn der Benutzername verboten ist oder schon in Benutzun ist, wird 1 zurückgegeben. * Ansonsten ist der Rückgabewert 0 */ function checkname($name) { global $db_zugriff, $n, $banname; $bannames = explode("\r\n", trim($banname)); for($i=0;$i<count($bannames);$i++) { $bannames[$i] = trim($bannames[$i]); if(!$bannames[$i]) continue; if($name==$bannames[$i]) return 1; } $check = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE username = '".addslashes(htmlspecialchars($name))."'"); return $check[0]; } /** * @return result int * @param userid int * @param password string * @desc Überprüft die gültigkeit einer userid-passwort kombination. * Wenn die Daten korrekt sind, wird 1 zurückgegeben, ansonsten 0 */ function checkpw($userid,$password) { global $db_zugriff, $n; $check = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE userid = '$userid' AND userpassword = '$password'"); return $check[0]; } /** * @return avatar string * @param avatarid int * @desc Gibt den Pfad zu dem Avatar mit der Id id zurück. */ function getAvatar($id) { global $db_zugriff, $n; $result = $db_zugriff->query_first("SELECT extension FROM bb".$n."_avatars WHERE id = '$id'"); return "images/avatars/avatar-".$id.".".$result['extension']; } /** * @return text string * @param text string * @param width=75 int * @desc fügt nach width Zeichen einen Zeilenumbruch in text ein. */ function nt_wordwrap($text, $width = 75) { if($text) return preg_replace("/([^\n\r ?&\.\/<>\"\\-]{".$width."})/i"," \\1\n",$text); } /** * @return page_link string * @param link string * @param page int * @param pages int * @desc Generiert Links zu weiteren Seiten eines Themas. */ function makepagelink($link, $page, $pages) { $page_link = "<b>["; if($page!=1) $page_link .= "&nbsp;&nbsp;<a href=\"$link&page=1\">&laquo;</a>&nbsp;&nbsp;<a href=\"$link&page=".($page-1)."\">‹</a>"; if($page>=6) $page_link .= "&nbsp;&nbsp;<a href=\"$link&page=".($page-5)."\">...</a>"; if($page+4>=$pages) $pagex=$pages; else $pagex=$page+4; for($i=$page-4 ; $i<=$pagex ; $i++) { if($i<=0) $i=1; if($i==$page) $page_link .= "&nbsp;&nbsp;$i"; else $page_link .= "&nbsp;&nbsp;<a href=\"$link&page=$i\">$i</a>"; } if(($pages-$page)>=5) $page_link .= "&nbsp;&nbsp;<a href=\"$link&page=".($page+5)."\">...</a>"; if($page!=$pages) $page_link .= "&nbsp;&nbsp;<a href=\"$link&page=".($page+1)."\">›</a>&nbsp;&nbsp;<a href=\"$link&page=".$pages."\">&raquo;</a>"; $page_link .= "&nbsp;&nbsp;]</b>"; return $page_link; } /** * @return result int * @param user_id int * @desc Überprüft, ob ein Benutzer innerhalb der Floodcontrol Zeit schon einen Beitrag erstellt hat. * Wenn ja ist der Rückgabewert größer 0. Ansonsten 0. */ function floodcontrol($user_id) { global $fctime, $db_zugriff, $n; $check_time = time()-$fctime; $result = $db_zugriff->query_first("SELECT COUNT(postid) FROM bb".$n."_posts WHERE userid = '$user_id' AND posttime > '$check_time'"); return $result[0]; } /** * @return out string * @param boardid int * @param depth=1 int * @param subscripe=0 int * @desc Generiert für die Startseite bzw. die unterforen in der board.php die Boardzeilen. * ziemlich kompliziert das ganze Wink */ function makeforumbit($boardid,$depth=1,$subscripe=0) { global $db_zugriff, $n, $show_subboards, $boardcache, $permissioncache, $modcache, $forumhomedepth, $session, $old_time, $user_group, $longdateformat; if ( !isset($boardcache[$boardid]) ) { return; } $out = ""; while ( list($key1,$val1)=each($boardcache[$boardid]) ) { while ( list($key2,$boards)=each($val1) ) { $delboard = ""; if($subscripe) eval ("\$delboard = \"".gettemplate("profile_subscripe_delboard")."\";"); if($boards['invisible'] && !$permissioncache[$boards['boardid']]) continue; if($boards['isboard']) { //board if($depth==2 && $show_subboards==1) { $subboards=getSubboards($boards['boardid']); if($subboards) $subboards=ifelse($boards['descriptiontext'],"<br>","")."Inklusive: ".substr($subboards, 0, -2); } #$boards['descriptiontext'] = editDBdata($boards['descriptiontext']); #$boards[boardname] = editDBdata($boards[boardname]); if($old_time <= $boards['lastposttime']) eval ("\$on_or_off = \"".gettemplate("main_newposts")."\";"); else eval ("\$on_or_off = \"".gettemplate("main_nonewposts")."\";"); if($boards['lastpostid']) { $lastposttime = formatdate($boards['posttime'],$longdateformat,1); if($boards['userid']) $lastauthor = "<a href=\"members.php?mode=profile&userid=".$boards['userid'].$session."\">".($boards['username'])."</a>"; else eval ("\$lastauthor = \"".gettemplate("lg_anonymous")."\";"); $boards['threadname'] = prepare_topic($boards['threadname']); if (!$boards['topicicon']) $ViewPosticon = "<img src=\"images/icons/noicon.gif\">"; else $ViewPosticon = "<img src=\"$boards[topicicon]\">"; if (isset($permissioncache[$boards['boardid']]) && $permissioncache[$boards['boardid']]) $template="main_lastpost"; else $template="main_lastpost2"; if (strlen($boards['threadname']) > '30') $ViewThreadname = substr($boards['threadname'], 0, 27)."..."; else $ViewThreadname = $boards['threadname']; eval ("\$last_post = \"".gettemplate("$template")."\";"); } else $last_post = "&nbsp;"; $moderators = ""; if(isset($modcache[$boards['boardid']])) { while (list($mkey,$moderator)=each($modcache[$boards['boardid']])) { if ($moderators) $moderators .= ", "; $moderators .= "<a href=\"members.php?mode=profile&userid=".$moderator['userid'].$session."\">".($moderator['username'])."</a>"; } } eval ("\$out .= \"".gettemplate("main_boardbit$depth")."\";"); unset($moderators); } else { //cat if($depth==2 && $show_subboards==1) { $subboards=getSubboards($boards['boardid']); if($subboards) $subboards=ifelse($boards['descriptiontext'],"<br>","")."Inklusive: ".substr($subboards, 0, -2); } #$boards['descriptiontext'] = editDBdata($boards['descriptiontext']); #$boards['boardname'] = editDBdata($boards['boardname']); eval ("\$out .= \"".gettemplate("main_catbit$depth")."\";"); } if ($depth<2) { $out.=makeforu...


- pattex - 04.06.2004

Ich würde es so probieren.

zuerst vor alle, wenn das nicht geht nur vor das erste. Dann nur vor das 2. und wenn gar nichts hilft beim Hack ersteller fragen. :dumdidumm: