Aufzeichnen was der USer macht

  • Themenstarter Themenstarter kleine_Lilly
  • Beginndatum Beginndatum
Du musst noch angeben, wie der Dateiname lautet und das Attribut, wie mit der Datei umgegangen werden soll.

PHP:
 <?php 
function user($text, $user) { 
$fp=fopen("datei.txt", "a"); 
$text=$text."|".$user.date("r"); 
fwrite($fp, $text); 
} 
?>
 
Ich habe gerade jeden Tag ca. 5000 User auf der Seite mit 20000 reg. User.
Bei sovielen User, die gleichzeitig Bewegungen ausführen, würde ich dir in jedem Fall empfehlen, eine Datenbank zu benutzen. Das sollte wesentlich performanter sein.

Vom Prinzip her müsstest du die Funktion user, die ich anders bennenen würde, so umschreiben.
Exemplarisch findest du unten den Mysql-Query mit anderen Datenbanken geht es anders, vor allem dürfte die Funktion (mysql_query()) zu ändern sein.
Allerdings auch die Query-Struktur, da sie eine besondere Erweiterung von SQL
ist, die nur von Mysql angeboten wird.
Die Namen der Spalten, der Tabelle und die Benutzung der Escape-Funktion
kannst du natürlich ändern.
Solltest du dich für diese Möglichkeit entscheiden, empfehle ich dir, dir ein
Mysql-Tutorial anzusehen

PHP:
function user($besuchteSeite, $Benutzer)
{

    mysql_query("INSERT INTO  `Benutzer_Log`  SET    `Datum`      = NOW(), `Seite`       = ".mysql_real_escape_string($besuchteSeite).",  `Benutzer` = ".mysql_real_escape_string($Benutzer).";");

           
}
 
Zuletzt bearbeitet:
Hallo Leute!

Wie kann man einen User am besten überwachen?

Meine art der PHP Programmierung ist die, echo und print garnicht zu verwenden. Alles läuft wie im Puffer in eine Variable die zum Schluss mittels echo übertzragen wird. So diese variable enthält semmtlichen Quellcode, den ich einfach in der DB speicher. So kann ich per klick genau die Seite sehen, die mein User zu gesicht bekommen hat. Mit sammt den Einstellungen und Auflistungen.

Speichern wir den ganzen Quellcode immer in der DB ab, und löschen einfach gestrige Einträge. Das ganze ergänzen wir mit IP Referer usw.. - die Sache ist prefekt. Wir können gar ermitteln welche Seite er zuerst geladen hat, wann er sich eingeloggt hat. Ob sein Passwort falsch getippt wurde. Vor allem aber alles schön übersichtlich!


Neben bei lässt sich gar ermitteln ob der User zwischendurch eine andere Seite abgerufen hat.

mittels eine <hr> Tags getrennt, können wir alle Vorgänge ausgeben und sehen einfach von oben nach unten wie der User sich verhalten hat. Welche Fehlermeldungen er zu gesicht bekam. Was für Programmierfehler oder Fehlermeldungen seitens PHP sich einschlichen.

Aber das wichtigste dabei, wir erkennen wie unsere Seite auf Schwachpunkte reagiert hat, und lernen daraus was zu verbessern ist

das ganze ist einfach mit einem einzigen
mysql_query("INSERT INTO..."); realisiert!
Was hält ihr davon?

Ps.

ich mach das ganze einfach in dem ich eine Index.php habe. Die einzubindenen seiten laufen durch eine Funktion. Diese includet die Seite und lädt alle weiteren include() vor an die richtige stelle. echo und print werden mittels preg_replace in $rueckgabe .= dem Rückgabewert der Variable erstzt. Dann das ganze durch den eval. Macht keine Mucken und faxen. Den die funktion lade ich in der index.php in die Ausgabevariable. So mach ich das ganze auch mit Navigationen. Dopplungen von Variablen sind schnee von gestern, da alles immer wieder durch die Funktion läuft. Header Send by Output hat neben bei keine Chanche mehr, da nur ein einziges echo auftaucht. Alles ander wird ja ersetzt. Nebenbei ist es schnell und stabil. Mittels eines include() in der Funktion, lade ich eine php in der gloabl Variablen vordeffiniert sind, die später wichtig sind.

(index.php)
technisches
ermitteln der seite Z.B
-> $naviagtion - laden der Navigationen durch die Funktion (Coprozässer)
-> $seintenihnalt - laden der eigentlichen Seite (Coprozässor)
Zusammenfassen der Daten ($ausgabe durch $navigation und $seinteninhalt)
Ausgabe. echo $ausgabe

Fertig!
PHP:
function get_seite($site) {
 if(!file_exists($site)) { 
 return "error: Fehler $site kann nicht geladen werden";
 } else {
 include ("global.php");
 $a = @file_get_contents($site);
 //preg_replace("","",$a) - echo und print durch $rueckgabe;
 //eben so exit durch return ' ';
 eval($a);
 return $rueckgabe;
 }
}

Wer es noch perfektionieren möchte, der geht her am Ende und erstzt so alle HTML Tags durch nichts! Er erhält so blanken Text. Diesen kann er in ein Array_unique laufen lassen um dopplungen zu meiden. Danach einfach perfekt als Keywords und immer aktuell ausgeben.

Ich kann versichern, diese Methode macht gar keine Probleme. Läuft sauber zu stande. Ausch Objekte machen 0 faxen. Neben bei ist es A einfacher und B schneller. Bracuht man Beispielweise ein Javascript mach man sich in der index.php eine javascript Buffer Variable. Diese wird dann in die global.php eingetragen. Braucht man mal einen Javascript schickt man den einfach in den Buffer und verarbeitet diesen am ende in den Quelltext.

Vorteil - keine Externe Javascriptdatei (Ladezeit) und immer nur der Script der aktuell gebraucht wird. Neben bei, wie die Überwachung zum schluss, welche Javascript wurde an meinen User gejagt, und wie reagiert er auf die aktuelle Seite!

Noch ein Vorteil lassen wir alle PHP Seiten die durch die Funktion gehen mit einem
PHP:
<?php exit; ?>
<?
//Quellcode
?>
beginnen.

ein Abrufen dieser Seite ist so unerwünscht unmöglich. Wir können aber in der Funktion get_site den ersten exit; Befehl löschen bzw. durch nichts ersetzen.


Ähnlich so kann man prüfen (in der Funktion) ob die Seite überhaupt authentifiziert ist. (kein einbinden unerwünschter Dateien) und wir können auch an Hand einer Session Zugriffsrechte für jede Siete versehen. Einfach in dem man prüft ob die Seite in der DB registriert ist und welches leserecht dafür vorgesehen ist. unset($rueckgabe); + return; dient uns ein schlichtes exit; und wir können in einer geschmacklichen Form der Ausgabe darauf reagieren.

Wichtig zu verstehen ist man kann so die includeten Seiten ganz normal und ohne einschränkungen programmieren. Das übersetzten der Seite in die richtige Form übernimmt ja unsere Funktion. Andere Funktionen machen ja bekanntlich auch keine Probleme aus eine Funktion aus abgerufen zu werden. Wir tippen da einfach unser exit; und unsere Funktion mach später unset($rueckgabe); return; daraus. Durch den eval() passiert nichts anderes. $rueckgabe wird zurückgestzt, und die funktion beendet. Im code stheht aber trotzdem nur ein exit. Genau das gleiche mit echo. Ich tippe echo "hallo"; und die Funktion macht eine $rueckgabe .= "hallo"; daraus. Ich muss mich also garnicht auf irgendwas umstellen. Nur einzig die Variable $rueckgabe sollte nich berührt werden!

Ruft ein User meine Datei via URL auf, die nicht dazu bestimmt ist alleinig abgerufen zu werden. Stolpert er über das <? exit; ?> und das wars.

Falls es mal jemanden interessiert, ich verfasse gerne ein Tuto, das das ganze dokumentiert.
 
Zuletzt bearbeitet von einem Moderator:
Ich hab mir nicht alles genau durchgelesen, aber...

Lukasz hat gesagt.:
Was hält ihr davon?
Riesige Speicherplatz- und Rechenzeitverschwendung, wenn man sowas im Produktivbetrieb einsetzt...

(index.php)
technisches
ermitteln der seite Z.B
-> $naviagtion - laden der Navigationen durch die Funktion (Coprozässer)
-> $seintenihnalt - laden der eigentlichen Seite (Coprozässor)
Zusammenfassen der Daten ($ausgabe durch $navigation und $seinteninhalt)
Ausgabe. echo $ausgabe
Was hat der Coprozessor (falls du den meintest) mit PHP zu tun?

Ich kann versichern, diese Methode macht gar keine Probleme. Läuft sauber zu stande. Ausch Objekte machen 0 faxen. Neben bei ist es A einfacher und B schneller.
Was daran einfacher sein soll, geht mir nicht in den Sinn... und schneller ist es auf keinen Fall (wie sollte es auch?).

Vorteil - keine Externe Javascriptdatei (Ladezeit) und immer nur der Script der aktuell gebraucht wird.
Andersrum wird ein Schuh draus - durch verwenden externer Javascriptdateien wird die Ladezeit bei nachfolgenden Seitenaufrufen verringert, da der Browser sich selbige einfach aus seinem lokalen Cache fischt.

Noch ein Vorteil lassen wir alle PHP Seiten die durch die Funktion gehen mit einem
PHP:
<?php exit; ?>
<?
//Quellcode
?>
beginnen.

ein Abrufen dieser Seite ist so unerwünscht unmöglich. Wir können aber in der Funktion get_site den ersten exit; Befehl löschen bzw. durch nichts ersetzen.
Das geht auch einfacher...
PHP:
// eingebundene Datei
if (!defined('IN_MYAPP')) die ('Nothing to see here.');
PHP:
// einbindende Datei
define('IN_MYAPP', 1);
include('foo.php');
 
Hi also define frist da erst einmal Arbeitsspeicher! Aber das ist schon ok was du schreibst.

Coprozässor -> Damit meine ich ausserhalb Globaler Variablen!

Sicher frist meine Methode etwas Datenbank auf. Was macht das schon. Am nächsten Tag werden so alle Inhalte wieder gelöscht. Und nebenbei, ist es ja kein Inhalt auf den 10.000 mal zugegriffen wird, sondern wenn es den Webmaster interessiert.

Aber alles im ganze finde ich es in jedem Fall wesentlich praktischer. Es ist zwar etwas lachhaft, oder aber ungewöhnlich. Aber mein Forum besteht zum Beispiel aus einer einzigen Datei mit ca. 1400 Codezeilen.

Dieses ist einfach ein komplettes Objekt. Ein Forum ein Objekt. Ein Gästebuch ein Objekt... usw..

Jedenfalls tu ich mir das ganze leichter, da ich das Objekt erzeuge, und einfach je nach action wer

if
else if
else if
else if
else ...

Auf eigenschaften und Funktionen des Forums zugreife.
Hier mal ein kleines Beispiel dafür:
Das Objekt habe ich bei //Objekt mal raus!
PHP:
<?
include("forum/object.php");
//#####################################################################
//## Objekt (C R Lukasz Cglarski) forum erzeugen und berechnen!      ##
//#####################################################################
$forum = new forum;

//#####################################################################
//## Verarbeitung nach Daten                                         ##
//#####################################################################
$aaction = $_POST['aaction'];
if (!isset($aaction) or strlen($aaction) == 0){ $aaction = $_GET['aaction']; }

$forum->forumkopf(); // jedes mal zeigen
echo $forum->Forumkopf;
echo "<br>";
//======================================================
if ($aaction == "forum") {
if (!isset($forum->GetSeiteTh)) { $forum->GetSeiteTh(); }
echo $forum->GetSeiteTh;
if (!isset($forum->Thlist)) { $forum->Thlist(); }
echo $forum->Thlist;
echo "<br>";
echo $forum->GetSeiteTh;
echo "<br>";
}


elseif ($aaction =="newthread") {
	$forum->forum_wright();
	if ($forum->forum_wright > $_SESSION['user_rang']) { $fehler_kopf = "Kein Recht um in das Forum zu schreiben."; $fehler_msg="Sie verfügen nicht über die notwendigen Schreibrechte, um in dieses Forum schreiben zu können. Vermutlich sind Sie nicht eingeloggt, oder das Forum ist nicht für das Schreiben mit ihrem Mitgliederrang bestimmt."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
	else { $smileys = getsmileys('smiley_useinforum'); $bbcodes = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("bbcodes")); echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/new_thread"))."<br>"; }
}



elseif ($aaction =="newthreadenter") {
	$forum->forum_wright();
	if ($forum->forum_wright > $_SESSION['user_rang']) { $fehler_kopf = "Kein Recht um in das Forum zu schreiben."; $fehler_msg="Sie verfügen nicht über die notwendigen Schreibrechte, um in dieses Forum schreiben zu können. Vermutlich sind Sie nicht eingeloggt, oder das Forum ist nicht für das Schreiben mit ihrem Mitgliederrang bestimmt."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
	else {
		$forum->pruf_titel_text();
        if ($forum->pruf_titel_text != 1) { $textarea = stripslashes($_POST['textarea']); $thread_name = stripslashes($_POST['thread_name']); $fehler_kopf = "Flasche oder fehlende Angaben."; $fehler_msg=" Sie haben vergessen entweder ein Feld auszufüllen!."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; $smileys = getsmileys('smiley_useinforum'); $bbcodes = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("bbcodes")); echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/new_thread"))."<br>"; }
        else {
            ignore_user_abort();
			$forum->insert_newthread_todb();
        }
	}
	
}


elseif ($aaction == "thread") {
$forum->Getthreadicon();
$forum->GetSeitePo();
$forum->OutPo();
echo $forum->GetSeitePo;
echo "<br>";
echo $forum->OutPo;
echo "<br>";
}


elseif ($aaction == "answer") {
$forum->Getthreadicon();
$forum->AnswerTh_info();
	if ($forum->Answer_status == 0 or $forum->Answer_status == 3) { $fehler_kopf = "Thread Status gestattet keine neuen Beiträge."; $fehler_msg="Vermutlich ist der Thread geschlossen oder fixiert geschlossen. Threads die den Status geschlossen tragen sind nur zum lesen bestimmt."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
	else {
			if ($forum->Answer_wright > $_SESSION['user_rang']) { $fehler_kopf = "Kein Recht um Beitrag zu schreiben."; $fehler_msg="Sie haben nicht die notwendigen Rechte um in diesem Thread einen Beitrag zu schreiben. Vermutlich müssen Sie sich erst registrieren!"; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
			else {
			    $quote = stripslashes($_POST['quote']); $smileys = getsmileys('smiley_useinforum'); $bbcodes = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("bbcodes")); echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/answer_thread"))."<br>";
				}
		}
}



elseif ($aaction == "insertanswer") {
$forum->Getthreadicon();
$forum->AnswerTh_info();
	if ($forum->Answer_status == 0 or $forum->Answer_status == 3) { $fehler_kopf = "Thread Status gestattet keine neuen Beiträge."; $fehler_msg="Vermutlich ist der Thread geschlossen oder fixiert geschlossen. Threads die den Status geschlossen tragen sind nur zum lesen bestimmt."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
	else {
			if ($forum->Answer_wright > $_SESSION['user_rang']) { $fehler_kopf = "Kein Recht um Beitrag zu schreiben."; $fehler_msg="Sie haben nicht die notwendigen Rechte um in diesem Thread einen Beitrag zu schreiben. Vermutlich müssen Sie sich erst registrieren!"; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
			elseif (strlen($_POST['textarea']) < 10) { $fehler_kopf = "Zu wenig Text!"; $fehler_msg="Sie sollten schon ein wenig Text schreiben, damit der Beitrag gespeichert werden kann!"; $textarea = stripslashes($_POST['textarea']); echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; $smileys = getsmileys('smiley_useinforum'); $bbcodes = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("bbcodes")); echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/answer_thread"))."<br>"; }
			else {
                    $forum->Po_neu();
				}
		}
}




elseif ($aaction == "gotopost") {
$forum->gotopost();
}



elseif ($aaction == "editpost") {
$forum->caneditpost();
	if (eregi("Gast",$_SESSION['user_name'])) { $fehler_kopf = "Funktion nicht für Gäste!"; $fehler_msg="Diese Funktion kann nur von registrierten Mitgliedern genutzt werden."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
	else {
	    if ($forum->is_postautor == 0) { $fehler_kopf = "Änderung am Beitrag nur vom Verfasser möglich!"; $fehler_msg="Sie sind nicht der Verfasser dieses Beitrags und können daher keine Änderung vornehmen."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
        elseif ($forum->is_editablestatus == 0) { $fehler_kopf = "Ändern auf Grund Threadstatus nicht möglich!"; $fehler_msg="Der Thread ist entweder geschlossen oder fixiert geschlossen, und lässt daher keine Änderung von Beiträgen zu!"; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
        elseif ($forum->is_editablewr == 0) { $fehler_kopf = "Kein Schreibrecht!"; $fehler_msg="Sie haben für dieses Forum kein Schreibrecht! Vermutlich wurde das Schreibrecht nachträglich geändert."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
		else { echo $forum->editpost_text; }
		}
}



elseif ($aaction == "inserteditpost") {
$forum->caneditpost();
	if (eregi("Gast",$_SESSION['user_name'])) { $fehler_kopf = "Funktion nicht für Gäste!"; $fehler_msg="Diese Funktion kann nur von registrierten Mitgliedern genutzt werden."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
	else {
	    if ($forum->is_postautor == 0) { $fehler_kopf = "Änderung am Beitrag nur vom Verfasser möglich!"; $fehler_msg="Sie sind nicht der Verfasser dieses Beitrags und können daher keine Änderung vornehmen."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
        elseif ($forum->is_editablestatus == 0) { $fehler_kopf = "Ändern auf Grund Threadstatus nicht möglich!"; $fehler_msg="Der Thread ist entweder geschlossen oder fixiert geschlossen, und lässt daher keine Änderung von Beiträgen zu!"; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
        elseif ($forum->is_editablewr == 0) { $fehler_kopf = "Kein Schreibrecht!"; $fehler_msg="Sie haben für dieses Forum kein Schreibrecht! Vermutlich wurde das Schreibrecht nachträglich geändert."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; }
		elseif ($forum->canedit_insert == 0)  { $fehler_kopf = "Zu wenig Text!"; $fehler_msg="Mindestens wenige Worte sollten Sie schon verfassen, damit es sich lohnt ein Beitrag zu speichern."; echo preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("error"))."<br>"; echo $forum->editpost_text; }
		else { $forum->inserteditpost(); }
		}
}


elseif ($aaction == "adminthread") {
$forum->adminthread();
echo $forum->adminthread;
echo "<br>";
}



elseif ($aaction == "setadminthread") {
$forum->setadminthread();
}



elseif ($aaction == "adminpost") {
$forum->adminpost();
echo $forum->adminpost;
echo "<br>";
}



elseif ($aaction == "insertadminpost") {
$forum->insertadminpost();
}


elseif ($aaction == "suche") {
$forum->suche();
echo $forum->suche;
echo "<br>";
}


elseif ($aaction == "runsuche") {
$forum->runsuche();
}

elseif ($aaction == "showsuche") {
$forum->showsuche();
echo $forum->showsuche;
echo "<br>";
}

else {
$forum->forumdaten();
echo $forum->Forumdaten;
echo "<br>";
}
//============================================================


$forum->letzteaktionen(); //jedes mal zeigen
echo $forum->Letzte_Aktionen;
echo "<br>";
?>
 
Hier mal das Objekt:

PHP:
//#######################################################################
//##   Objekt (C R Lukasz Cglarski) forum:                             ##
//#######################################################################
class forum
{
var $Forumkopf;
var $Forumdaten;
var $AnzForen;
var $Letzte_Aktionen;
var $Getforum;
var $AnzThreads;
var $GetSeiteTh;
var $ThStartlimiter;
var $ThMaxproseite;
var $Thlist;
var $forum_wright;
var $pruf_titel_text;
var $Getthread;
var $Getthreadicon;
var $PoStartlimiter;
var $PoMaxproseite;
var $GetSeitePo;
var $OutPo;
var $Answer_rright;
var $Answer_wright;
var $Answer_mright;
var $Answer_status;
var $Answer_Thname;
var $Answer_Thforumid;
var $GetPost;
var $is_postautor;
var $is_editablestatus;
var $editpost_text;
var $is_editablewr;
var $adminthread;
var $adminpost;
var $suche;
var $runsuche;
var $showsuche;

function forumkopf(){
include("key/global.inc.php");
if(is_numeric($_GET['forum'])) { $forum_id = $_GET['forum']; }
if(is_numeric($_GET['thread'])) { $thread_id = $_GET['thread']; }
if (isset($forum_id)) {
	$result=mysql_query("SELECT forum_name FROM lgckit_forum WHERE forum_id = '$forum_id' AND forum_rright <= '".$_SESSION['user_name']."' LIMIT 1");
	while($row=mysql_fetch_assoc($result)){
	$indexleiste = "<a href=\"$lgckit_domainpath/index.php?modul=forum&aaction=forum&forum=$forum_id\" class=\"$lgckit_style_tablefont_ukopf\"><img src=\"$lgckit_style_path/forumicons/forum.gif\" border=\"0\" align=\"absmiddle\"> ".$row['forum_name']."</a>";
    global $lgckit_metatitel;
	$lgckit_metatitel = $row['forum_name']." - ".$lgckit_domainpath;
	}
}
elseif(isset($thread_id)){
    global $lgckit_metatitel;
	$result = mysql_query("SELECT thread_status,thread_forumid,thread_name FROM lgckit_thread WHERE thread_id = '$thread_id' AND thread_rright <= '".$_SESSION['user_name']."' LIMIT 1");
	while($row=mysql_fetch_assoc($result)){
	    if($row['thread_status'] == 0) { $indexleiste = " - <a href=\"$lgckit_domainpath/index.php?modul=forum&aaction=thread&thread=$thread_id\" class=\"$lgckit_style_tablefont_ukopf\"><img src=\"$lgckit_style_path/forumicons/thread_close.gif\" border=\"0\" align=\"absmiddle\"> ".$row['thread_name']."</a>"; }
	    elseif($row['thread_status'] == 1) { $indexleiste = " - <a href=\"$lgckit_domainpath/index.php?modul=forum&aaction=thread&thread=$thread_id\" class=\"$lgckit_style_tablefont_ukopf\"><img src=\"$lgckit_style_path/forumicons/thread.gif\" border=\"0\" align=\"absmiddle\"> ".$row['thread_name']."</a>"; }
	    elseif($row['thread_status'] == 2) { $indexleiste = " - <a href=\"$lgckit_domainpath/index.php?modul=forum&aaction=thread&thread=$thread_id\" class=\"$lgckit_style_tablefont_ukopf\"><img src=\"$lgckit_style_path/forumicons/thread_fix.gif\" border=\"0\" align=\"absmiddle\"> ".$row['thread_name']."</a>"; }
        else { $indexleiste = " - <a href=\"$lgckit_domainpath/index.php?modul=forum&aaction=thread&thread=$thread_id\" class=\"$lgckit_style_tablefont_ukopf\"><img src=\"$lgckit_style_path/forumicons/thread_fixclose.gif\" border=\"0\" align=\"absmiddle\"> ".$row['thread_name']."</a>"; }
	$forum_id = $row['thread_forumid'];
	$lgckit_metatitel = $row['thread_name']." - ";
	}
	$result=mysql_query("SELECT forum_name FROM lgckit_forum WHERE forum_id = '$forum_id' AND forum_rright <= '".$_SESSION['user_name']."' LIMIT 1");
	while($row=mysql_fetch_assoc($result)){
	$indexleiste = "<a href=\"$lgckit_domainpath/index.php?modul=forum&aaction=forum&forum=$forum_id\" class=\"$lgckit_style_tablefont_ukopf\"><img src=\"$lgckit_style_path/forumicons/forum.gif\" border=\"0\" align=\"absmiddle\"> ".$row['forum_name']."</a>".$indexleiste;
	$lgckit_metatitel .= $row['forum_name']." - ".$lgckit_domainpath;
	}
	
}


$this->Forumkopf = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/kopf"));
}

function anzforen(){
$result = mysql_query("SELECT COUNT(*) FROM lgckit_forum WHERE forum_rright <= '".$_SESSION['user_rang']."'");
while($row = mysql_fetch_array($result)){
$this->AnzForen = $row[0];
unset($row);
}
unset($result);
}

function forumdaten(){
include("key/global.inc.php");
if (!isset($this->AnzForen)) { $this->anzforen(); }
if($this->AnzForen > 0) {
$result = mysql_query("SELECT forum_id,forum_name,forum_info,forum_countthemes,forum_countposts,forum_lastpostid,forum_lastautor,forum_lastthidname,forum_lastwtime FROM lgckit_forum WHERE forum_rright <= '".$_SESSION['user_rang']."' ORDER BY forum_name ASC");
while($row=mysql_fetch_assoc($result)){
$row['forum_lastwtime'] = recallsqldatumausgabe($row['forum_lastwtime']);
$this->Forumdaten .= preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/forenlisting"));
unset($row);
}
global $lgckit_metatitel;
$lgckit_metatitel = "Forum Index- ".$lgckit_domainpath;
$forenlisting = $this->Forumdaten;
$this->Forumdaten = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/main"));
} else { $this->Forumdaten = "Keine Daten Nach Leserecht"; }
}

function letzteaktionen(){
include("key/global.inc.php");
$result = mysql_query("SELECT post_time,post_id,post_threadname FROM lgckit_post WHERE post_rright <= '".$_SESSION['user_rang']."' ORDER BY post_time DESC LIMIT 5");
while($row=mysql_fetch_assoc($result)){
$row['post_time'] = recallsqldatumausgabe($row['post_time']);
$this->Letzte_Aktionen .= preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/neubeitr_spalte"));
unset($row);
}
$inhalt_neu = $this->Letzte_Aktionen;
$this->Letzte_Aktionen = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/neubeitr_main"));
}

function getforum(){
include("key/global.inc.php");
$this->Getforum = $_GET['forum'];
if (!isset($this->Getforum) or eregi("[[:alpha:]]",$this->Getforum) or eregi("[[:punct:]]",$this->Getforum)) { unset($this->Getforum); header("Location: $lgckit_domainpath/index.php?modul=forum&action=main"); exit;}
}

function anzthreads(){
if (!isset($this->Getforum)){ $this->getforum(); }
$result = mysql_query("SELECT COUNT(*) FROM lgckit_thread WHERE thread_forumid = '".$this->Getforum."' AND thread_rright <= '".$_SESSION[user_rang]."'");
while($row=mysql_fetch_array($result)){
$this->AnzThreads = $row['0'];
}
}

function GetSeiteTh(){
include("key/global.inc.php");
if (!isset($this->AnzThreads)){ $this->anzthreads(); }
$seite = $_GET['seite'];
if (!isset($seite)) { $seite = 1; }
if (eregi("[[:alpha:][:punct:][:cntrl:][:blank:][:space:]$]",$seite)) { $seite = 1; }
$this->ThMaxproseite = 20;
if ($this->AnzThreads != 0) { $maxseite = ceil($this->AnzThreads / $this->ThMaxproseite); } else { $maxseite = 1; }
$this->ThStartlimiter = ($seite - 1) * $this->ThMaxproseite;
if ($seite < 1) { $seite = 1; }
elseif ($seite > $maxseite) { $seite = $maxseite; }
$url = "$lgckit_domainpath/index.php?modul=forum&aaction=forum&forum=".$_GET['forum']."&seite=";
$seitenleiste = createpagenav($seite,1,$maxseite,$url);
$this->GetSeiteTh = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/seitenleiste_newth"));
}


function Thlist(){
include("key/global.inc.php");
if (!isset($this->Getforum)) { $this->getforum(); }
if (!isset($this->GetSeiteTh)) { $this->GetSeiteTh(); }
$result = mysql_query("SELECT thread_id,thread_status,thread_name,thread_lastwtime,thread_createtime,thread_lastautor,thread_autor,thread_countthemes,thread_views FROM lgckit_thread WHERE thread_forumid = '".$this->Getforum."' AND thread_rright <= '".$_SESSION['user_rang']."' ORDER BY (thread_status = '3' OR thread_status = '2') DESC, thread_lastwtime DESC LIMIT ".$this->ThStartlimiter.",".$this->ThMaxproseite."");
while($row=mysql_fetch_assoc($result)){
if ($row['thread_status'] == 0) { $thread_status_imagesrc = "$lgckit_style_path/forumicons/thread_close.gif"; }
elseif ($row['thread_status'] == 1) { $thread_status_imagesrc = "$lgckit_style_path/forumicons/thread.gif"; }
elseif ($row['thread_status'] == 2) { $thread_status_imagesrc = "$lgckit_style_path/forumicons/thread_fix.gif"; }
elseif ($row['thread_status'] == 3) { $thread_status_imagesrc = "$lgckit_style_path/forumicons/thread_fixclose.gif"; }
$row['thread_lastwtime'] = recallsqldatumausgabe($row['thread_lastwtime']);
$row['thread_createtime'] = recallsqldatumausgabe($row['thread_createtime']);
$outthread .= preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/listthread"));
unset($row,$thread_status_imagesrc);
}
$this->Thlist = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/outthread"));
}


//gelich gehts weiter


längste Ladezeit inklusive all nach Benchmark 0.3 Sekunden bei 10 Postbeiträgen. Gerechnet mit allem Schnickschnack Navigationen usw...

Gruss!
 
PHP:
<?
function forum_wright(){
include("key/global.inc.php");
if (!isset($this->Getforum)){ $this->getforum(); }
$result = mysql_query("SELECT COUNT(*) FROM lgckit_forum WHERE forum_id = '".$this->Getforum."' LIMIT 1");
$is_forum = 0;
while($row=mysql_fetch_array($result)){
if ($row['0'] > 0) { $is_forum = 1; }
}
if ($is_forum == 0) { header("Location: $lgckit_domainpath/index.php?modul=forum&action=main"); exit; }
$result = mysql_query("SELECT forum_wright FROM lgckit_forum WHERE forum_id ='".$this->Getforum."' LIMIT 1");
$wright = 7; // Sichehrheit!
while($row=mysql_fetch_assoc($result)){
$wright = $row['forum_wright'];
}
$this->forum_wright = $wright; // Wichtig! diese Zeile muss hier stehen!
}


function pruf_titel_text(){
$titel = $_POST['thread_name'];
$text = $_POST['textarea'];
if (strlen($titel) < 1 or strlen($text) < 1) { $this->pruf_titel_text = 0; }
else { $this->pruf_titel_text = 1; }
}


function insert_newthread_todb(){
include("key/global.inc.php");
$now = sqldatetime(time());
$result = mysql_query("SELECT forum_rright,forum_wright,forum_mright FROM lgckit_forum WHERE forum_id = '".$_GET['forum']."' LIMIT 1");
while($row=mysql_fetch_assoc($result)){
$rright = $row['forum_rright'];
$wright = $row['forum_wright'];
$mright = $row['forum_mright'];
}
mysql_query("INSERT INTO lgckit_thread (thread_forumid,thread_name,thread_rright,thread_wright,thread_mright,thread_lastwtime,thread_createtime,thread_lastautor,thread_autor) VALUES ('".$_GET['forum']."','".dumpfordb($_POST['thread_name'])."','$rright','$wright','$mright','$now','$now','".$_SESSION['user_name']."','".$_SESSION['user_name']."')");
$thread_id = mysql_insert_id();
mysql_query("INSERT INTO lgckit_post (post_time,post_threadid,post_forumid,post_threadname,post_rright,post_wright,post_mright,post_autor,post_text) VALUES ('$now','$thread_id','".$_GET['forum']."','".dumpfordb($_POST['thread_name'])."','$rright','$wright','$mright','".$_SESSION['user_name']."','".dumpfordb($_POST['textarea'])."')");
$post_id = mysql_insert_id();
mysql_query("UPDATE lgckit_forum SET forum_lastwtime = '$now', forum_lastautor = '".$_SESSION['user_name']."',forum_countthemes = forum_countthemes + 1, forum_countposts = forum_countposts + 1, forum_lastthid = '$thread_id', forum_lastpostid = '$post_id', forum_lastthidname = '".dumpfordb($_POST['thread_name'])."' WHERE forum_id = '".$_GET['forum']."' LIMIT 1");
header("Location: $lgckit_domainpath/index.php?modul=forum&aaction=gotopost&post=$post_id"); exit;
}



function Getthread(){
include("key/global.inc.php");
$this_thread = $_GET['thread'];
if (!isset($this_thread) or eregi("[[:alpha:]]",$this_thread) or eregi("[[:punct:]]",$this_thread)) { header("Location: $lgckit_domainpath/index.php?modul=forum"); exit; }
$this->Getthread = $this_thread;
}

function Getthreadicon(){
include("key/global.inc.php");
if (!isset($this->Getthread)){ $this->Getthread(); }
$result = mysql_query("SELECT * FROM lgckit_thread WHERE thread_id = '".$this->Getthread."' Limit 1");
while($row=mysql_fetch_assoc($result)){
$thread_status = $row['thread_status'];
if ($thread_status == 0) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread_close.gif"; }
elseif ($thread_status == 1) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread.gif"; }
elseif ($thread_status == 2) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread_fix.gif"; }
elseif ($thread_status == 3) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread_fixclose.gif"; }
}
}



function GetSeitePo(){
include("key/global.inc.php");
if (!isset($this->Getthread)){ $this->Getthread(); }
$result = mysql_query("SELECT COUNT(*) FROM lgckit_post WHERE post_threadid = '".$this->Getthread."' AND post_rright <= '".$_SESSION['user_rang']."'");
while($row=mysql_fetch_array($result)){
$anz = $row['0'];
}
if (!isset($anz)) { $anz = 0; }
$seite = $_GET['seite'];
if (!isset($seite)) { $seite = 1; }
if (eregi("[[:alpha:][:punct:][:cntrl:][:blank:][:space:]$]",$seite)) { $seite = 1; }
$maxproseite = 10;
if ($anz != 0) { $maxseite = ceil($anz / $maxproseite); } else { $maxseite = 1; }
if ($seite < 1) { $seite = 1; }
elseif($seite > $maxseite) { $seite = $maxseite; }
$startlimiter = ($seite - 1) * $maxproseite;
$url = "$lgckit_domainpath/index.php?modul=forum&aaction=thread&thread=".$_GET['thread']."&seite=";
$this->GetSeitePo = createpagenav($seite,1,$maxseite,$url);
$this->PoStartlimiter = $startlimiter;
$this->PoMaxproseite = $maxproseite;
}


function OutPo(){
include("key/global.inc.php");
if (!isset($this->Getthread)){ $this->Getthread(); }
if (!isset($this->PoStartlimiter)){ $this->GetSeitePo(); }
if (!isset($this->PoMaxproseite)){ $this->GetSeitePo(); }
$result = mysql_query("SELECT * FROM lgckit_post WHERE post_threadid = '".$this->Getthread."' AND post_rright <= '".$_SESSION['user_rang']."' ORDER BY post_time ASC LIMIT ".$this->PoStartlimiter.",".$this->PoMaxproseite."");
while($row=mysql_fetch_assoc($result)){
$post_id = $row['post_id'];
$post_threadname = $row['post_threadname'];
$metatitel = $post_threadname;
$post_time = recallsqldatumausgabe($row['post_time']);
$post_autor = $row['post_autor'];
$post_text = unbbcode($row['post_text']);
$quote = "Original geschrieben von: ".$row['post_autor']."[br]".$row['post_text'];
$post_wright = $row['post_wright'];
$post_mright = $row['post_mright'];
$userinfo = getuserinformation($post_autor);
if ($row['post_autor'] != "Gast") {
    $forum_rang_ver = explode('#',getforumrang($row['post_autor']));
}
$postleiste = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/postleiste"));
$outposts .= preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/postkopf"))."<br>";
unset($forum_rang_ver,$quote,$postleiste,$post_mright,$post_wright,$post_id,$post_threadname,$post_autor,$post_time,$post_text,$userinfo);
}
@mysql_query("UPDATE lgckit_thread SET thread_views = thread_views + 1 WHERE thread_id = '".$this->Getthread."' AND thread_rright <= '".$_SESSION[user_rang]."' LIMIT 1");
$this->OutPo = $outposts;
}



function AnswerTh_info(){
include("key/global.inc.php");
if (!isset($this->Getthread)){ $this->Getthread(); }
$result = mysql_query("SELECT * FROM lgckit_thread WHERE thread_id = '".$this->Getthread."' LIMIT 1");
while($row=mysql_fetch_assoc($result)){
$this->Answer_status = $row['thread_status'];
$this->Answer_Thname = $row['thread_name'];
$this->Answer_rright  = $row['thread_rright'];
$this->Answer_wright  = $row['thread_wright'];
$this->Answer_mright  = $row['thread_mright'];
$this->Answer_Thforumid  = $row['thread_forumid'];
$thread_status = $row['thread_status'];
if ($thread_status == 0) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread_close.gif"; }
elseif ($thread_status == 1) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread.gif"; }
elseif ($thread_status == 2) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread_fix.gif"; }
elseif ($thread_status == 3) { $this->Getthreadicon = "$lgckit_style_path/forumicons/thread_fixclose.gif"; }
}
}



function Po_neu(){
include("key/global.inc.php");
if (!isset($this->Getthread)){ $this->Getthread(); }
if (!isset($this->Answer_Thforumid)){ $this->AnswerTh_info(); }
$now = sqldatetime(time());
@mysql_query("INSERT INTO lgckit_post (post_time,post_threadid,post_forumid,post_threadname,post_rright,post_wright,post_mright,post_autor,post_text) VALUES ('$now','".$this->Getthread."','".$this->Answer_Thforumid."','".$this->Answer_Thname."','".$this->Answer_rright."','".$this->Answer_wright."','".$this->Answer_mright."','".$_SESSION['user_name']."','".dumpfordb($_POST['textarea'])."')");
$post_id = mysql_insert_id();
@mysql_query("UPDATE lgckit_thread SET thread_lastwtime = '$now', thread_lastautor = '".$_SESSION['user_name']."', thread_countthemes = thread_countthemes + 1 WHERE thread_id = '".$this->Getthread."' LIMIT 1");
@mysql_query("UPDATE lgckit_forum SET forum_lastwtime = '$now', forum_lastautor = '".$_SESSION['user_name']."', forum_countposts = forum_countposts + 1, forum_lastthid = '".$this->Getthread."', forum_lastpostid = '$post_id', forum_lastthidname = '".$this->Answer_Thname."' WHERE forum_id = '".$this->Answer_Thforumid."' LIMIT 1");
header("Location: $lgckit_domainpath/index.php?modul=forum&aaction=gotopost&thread=".$this->Getthread."&post=$post_id"); exit;
}



function gotopost(){
include("key/global.inc.php");
$post = $_GET['post'];
$thread = $_GET['thread'];
if (!isset($post) or eregi("[[:alpha:]]",$post) or eregi("[[:punct:]]",$post)) { header("Location: $lgckit_domainpath/index.php?modul=forum"); exit; }
if (!isset($thread) or eregi("[[:alpha:]]",$thread) or eregi("[[:punct:]]",$thread)) {
$result=mysql_query("SELECT * FROM lgckit_post WHERE post_id = '".$post."' LIMIT 1");
while($row = mysql_fetch_assoc($result)){
$thread = $row['post_threadid'];
}
}
$a = 0;
$socket = 0;
$result = mysql_query("SELECT post_id FROM lgckit_post WHERE post_threadid = '".$thread."' ORDER BY post_time ASC");
while($row=mysql_fetch_assoc($result)){
if ($row['post_id'] == $post && $socket == 0) { $a++; $socket = 1;}
elseif ($socket == 0) { $a++; }
}
if ($a > 0) { $seite = ceil($a / 10); }
else { $seite = 1; }
header("Location: $lgckit_domainpath/index.php?modul=forum&aaction=thread&thread=$thread&seite=$seite#post$post"); exit;
}


function GetPost(){
include("key/global.inc.php");
$this->GetPost = $_GET['post'];
if (!isset($this->GetPost) or eregi("[[:alpha:]]",$this->GetPost) or eregi("[[:punct:]]",$this->GetPost)) { header("Location: $lgckit_domainpath/index.php?modul=forum"); exit; }
$anz = 0;
$result = mysql_query("SELECT COUNT(*) FROM lgckit_post WHERE post_id = '".$this->GetPost."' LIMIT 1");
while($row=mysql_fetch_array($result)){
$anz = $row['0'];
}
if ($anz == 0) { header("Location: $lgckit_domainpath/index.php?modul=forum"); exit; }
}


function caneditpost(){
include("key/global.inc.php");
if (!isset($this->GetPost)){ $this->GetPost(); }
$result = mysql_query("SELECT post_threadid,post_threadname,post_wright,post_autor,post_text FROM lgckit_post WHERE post_id = '".$this->GetPost."' LIMIT 1");
while($row=mysql_fetch_assoc($result)){
$thid = $row['post_threadid'];
$wr = $row['post_wright'];
$autor = $row['post_autor'];
$textarea = dumpfromdb($row['post_text']);
$thname = $row['post_threadname'];
}
unset($row);
$result = mysql_query("SELECT thread_status FROM lgckit_thread WHERE thread_id = '$thid' LIMIT 1");
while($row=mysql_fetch_assoc($result)){
$status = $row['thread_status'];
}
unset($row);
if ($status == 1) { $image = "thread.gif"; }
if ($status == 2) { $image = "thread_fix.gif"; }
$smileys = getsmileys('smiley_useinforum');
$bbcodes = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("bbcodes"));
if ($autor == $_SESSION['user_name']) { $this->is_postautor = 1; } else { $this->is_postautor = 0; }
if ($status == 1 or $status == 2) { $this->is_editablestatus = 1; } else { $this->is_editablestatus = 0;  }
if ($wr <= $_SESSION['user_rang']) { $this->is_editablewr = 1; } else { $this->is_editablewr = 0; }
if (isset($_POST['textarea'])) { $textarea = stripslashes($_POST['textarea']); }
$this->editpost_text = preg_replace("/\\$(.*)#/Ue","".recalltemplate('\\1')."",calltemplate("forum/edit_thread"))."<br>";
if (strlen($_POST['textare']) < 10) { $this->canedit_insert = 1; } else { $this->canedit_insert = 0; }
$this->Getthread = $thid;
}

//usw... sonst wird es zu lang!
?>

Man sieht vieleicht etwas lächerlich aber sehr wohl auch effektiv!


Mittels ständiger
PHP:
<?
if (!isset($this->GetPost)){ $this->GetPost(); }
?>
ist mein Objekt in der lage sich selsbt abzurufen. Und ich denke wenn das riesen ding keine faxen macht kann die Methode auch nicht schlecht sein!

In Sachen Übersicht:
ich sehe einfach auf meine Url und scroll mich zum else if (aaction Wert) un habe einfach alles im Blick. Welche Funktionen des Objekts abgerufen werden und was geschieht. Da muss ich also nicht 70 Dateien daraus machen.

Sorry für die 3 Posts hintereinander aber es gehen nur 1500 Zeichen!
 
Zuletzt bearbeitet von einem Moderator:
Zurück