archilles scriptworld Forum

» Startseite
  » Support-Foren
      » Häufig gestellte Fragen (FAQ)
          · FAQ: Talkboard Forum 1.x (allgemein)

Seite: 1

FAQ: Talkboard Forum 1.x (allgemein) Archilles
Version 5 - 27. Januar 2005 12:30:00 CET


Alle Versionen

Ich habe Probleme beim Login!

Bitte beim Thread den Cookies betreffend nachlesen. Der befindet sich ebenfalls in diesem Unterforum.

Version 1.3.x

Die Anzahl der Postings des Users werden beim Thread nicht angezeigt!

Ein Feld wird im Query nicht ausgelesen. Für eine Korrektur ist folgende Datei wie gezeigt anzupassen ($sql_thuser):

Quelltext:
============================================================
view.php3:
48: ...SELECT email,homepage,icquin,signature,postcount,showmail,status,regdate FROM

Wenn man einen Avatar hochlädt, erscheint ein Fehler!

Bei mir erschien reproduzierbar dieser Fehler: Warning: Supplied argument is not a valid File-Handle resource in .... on line xxx. Das liegt daran, daß er beim Upload das Verzeichnis wechselt und dann in dieser Ebene bleibt. Dabei wird der Pfad für die Logdatei falsch übersetzt -> /avatar/tmp/access.log. Das geht natürlich nicht. Folgende kleine Zeile schafft Abhilfe (Zeile 208 eingefügt):

Quelltext:
============================================================
mytb.php3:
200:  if ( $err == 0 ){
  chdir("$DIRavatar");
  if ( $pic_props[2] == 1 ) $picmime = "gif";
  elseif ( $pic_props[2] == 2 ) $picmime = "jpg";
  elseif ( $pic_props[2] == 3 ) $picmime = "png";

  $newname = "$HTTP_COOKIE_VARS[$COOKIEuser].$picmime";
  copy($form_avatar, $newname) or die("ERROR: .....
208:  chdir("..");
  }

211:  } // end: if formdonewpass == 1

Hier wird per "cd .." wieder eine Ebene höher gesprungen.

Die IP-Adresse 127.0.0.1 wird zum lokalen Testen vom Forum gesperrt!

Vor Version 1.7.5 wurde die IP "127.0.0.1" gesperrt. Das ist "localhost" und bezeichnet immer den eigenen Rechner auf dem Loopback-Interface. Wenn du ein Netzwerk hast, dann besitzt du eine weitere IP. Du könntest einfach kurz diese nutzen. Der Server sollte auch an dieser "lauschen". Dann loggst du dich ein, gehst auf die Admin-Oberfläche und löscht den Eintrag im IP-Banning. Falls du diese Möglichkeit mit zwei IPs nicht hast, findest du im tmp-Ordner die Datei banlist(-ipad-deny).db. Dort befinden sich die Einträge und du kannst mit einem Editor das "127.0.0.1" nach "127.0.0.0" oder eine andere IP ändern. Wenn du die Zeichenlänge selber änderst, dann mußt du auch den Eintrag hinter dem s: vor der IP aktualisieren.

Version 1.4.x

Fehler in der Seitennavigation auf der Hauptseite!

Bitte auf mindestens 1.41 aktualisieren.

In der Konfiguration fehlt ein wichtiger Wert!

Dieser Fehler tritt nur auf, wenn man die Updateroutine benutzt hat. Füge hinter $COOKIElife folgende Zeile wieder ein. Diese stellt den Spammschutz (Floodingcontrol) wieder her:

$FLOODlimit = 30; /* Flood-Limit. Zeitspanne in Sekunden (1h=3600s) */

Version 1.6.x

Nach der Installation oder Update erscheint die Meldung, daß er die "banlist-ipad-deny.db" nicht laden könne und bricht die weitere Ausführung ab.

Möglicherweise wird das Temp-Verzeichnis nicht korrekt erkannt. Dies variiert von PHP-Version zu PHP-Version. Öffnet die header.inc.php in einem Editor und ändert es nach dem folgenden Schema ab; die gesuchten Zeilen sind ziemlicm am Anfang. Wenn du die Zeile danach auskommentiert - einfach das # entfernen - dann kannst du sehen, ob es korrekt erkannt wird. Wenn du im Adminverzeichnis bist, sollte er zwei Punkte anzeigen, ansonsten nur einen.

Quelltext:
============================================================
Original:
<?php
// Wenn man im Admin-Ordner ist, muss man erst "raus" per ../, sonst gleicher Ordner ./
// Hilft besonders gegen "open_basedir restriction in effect"... und Schwierigkeiten
// beim includen der Funktionen/Klassen.
if ( stristr(getenv("SCRIPT_NAME"),"/admin/" ) )
$DIR_PREFIX = "..";
else
$DIR_PREFIX = ".";
?>

Die geänderte Version:
<?php
if ( stristr($HTTP_SERVER_VARS['PHP_SELF'],"/admin/" ) )
$DIR_PREFIX = "..";
else
$DIR_PREFIX = ".";

#print "PRÄFIX-DIR: $DIR_PREFIX<P>n";
?>

Sofern du schon PHP 4.1 oder höher benutzt, mag es erst funktionieren, wenn du $_SERVER schreibst statt $HTTP_SERVER_VARS.

Ich habe mich als Administrator dreimal falsch eingeloggt. Wie schalte ich mich wieder frei?

Bis 1.7.5. Wenn es eine "frische" Installation ist, kannst du es natürlich löschen und reinstallieren. Ansonsten ist etwas Handarbeit angesagt. Seit 1.3 steht der erforderliche Datenblock in der Usertabelle mit dem Namen "status". Die Tabelle heißt dann Euren gewählten Präfix (früher tb_, jetzt tbf_) und "user". Sofern du PHPMyAdmin hast, kannst du hier das Feld direkt editieren, indem du in deine Datenbank gehst, die Usertabelle auswählt, auf "Anzeigen" klickt und dein Benutzerkonto editiert. Setze den Wert "status", der nun bei 0 liegen sollte, zurück auf 3 (bis Version 1.6), respektive 9 danach. Jetzt hast du wieder Adminrechte. Korrekterweise solltest du das Feld "loginfail" jetzt auch noch auf 0 stellen, sonst meckert er weiter :-)

Natürlich kannst du das auch per MySQL-Shell machen, die du per telnet/ssh erreichst oder unter der Eingabeaufforderung. Ab Version 1.75 beherrscht das integrierte Reparaturtool (admin_repair.php) auch diese Aufgabe. Als dritte Möglichkeit findet sich im Downloadbereich unter "Patches/Mods" ein kleines PHP-Programm, welches die Passwörter von (fast) allen Versionen rücksetzen kann.

Quelltext:
============================================================
mysql -u[Benutzername] -p[Passwort]

update tbf_user SET status = '3/9', loginfail = '0' WHERE name = '[Benutzername]';

quit;

Version 1.7.x

Wenn ich einen Thread anklicke, wird der Zähler nicht hochgezählt. Es bleibt bei "0 Klicks"?

Das ist ein kleiner Fehler in 1.7.5, der mir (mal wieder) unterlaufen ist. Beim Testen schalte ich das ab, da es ja praktisch unwichtig ist. In der viewtopic.php kannst du manuell die benötigten Zeilen wieder aktivieren. Sind witzigerweise für mich sogar als "todo" markiert, solltest du also finden. Einfach die # am Anfang entfernen und er zählt wieder. Das Problem tritt bei Versionen vom 24.11 bis 26.11 auf. Dabei dachte ich hätte diesmal daran gedacht :-)

Was ist die "setup-alt.php"

Das ist ein alternatives Setup. Wenn du mit dem normalen Probleme hast beim Einrichten der Datenbank (z.B. auf Strato-Servern), dann solltest du diese mal ausprobieren. Beide sind identisch, die "alt" hat nur keine Backticks (`) in den SQL-Anweisungen. Diese bringen einige SQL-Server offenbar durcheinannder. Vielleicht kann mir jemand sagen wieso. Ich weiß es nämlich nicht...

Allgemeines

Es folgen die Erklärungen zu Begriffen und Techniken der Diskussionssoftware "Talkboard Forum". Dieser Abschnitt ist mittlerweile veraltet, gilt aber natürlich noch für die älteren Versionen.

Dieser Text wurde gefaltet. Bitte zum Öffnen anklicken...
Es geht hierbei NUR um die 1.x-Versionen des Forums :!:

Was sind Templates?

Templates sind ein Weg die Aufgaben in der Darstellung strikt zu trennen. Im Beispiel eines Forums fallen zwei Arten der Inhalte an. Das eine sind die "statischen", zu dem das Layout, die Farben und Bilder gehören. In den meisten Fällen ändert sich dies nicht und kann daher in Dateien ausgelagert werden, die man Templates nennt. Stell dir dies als Rohlinge vor, die du beliebig bearbeiten kannst. Der andere Teil sind "dynamische" Daten aus der Datenbank. Dazu gehören Threadtexte, Usernamen, Profile und so weiter. Diese ändern sich eventuell im Laufe der Zeit. Wenn man nun das Programm weiterentwickelt ist es besser, beides zu trennen.

In den Templates gibt es einen bestimmten Code, welcher bei mir mit "{%%}" gekennzeichnet ist. Diese Variablen werden im PHP-Code dann durch einen gewünschten Inhalt ersetzt. Nehmen wir mal die reply.tpl als Beispiel.

Quelltext:
============================================================
<B><A HREF="{%FILE_INDEX%}?">{%ENV_TITLE%}</A>
- <A HREF="{%FILE_FORUM%}?forum={%VAR_FORUM%}&">{%CAT_TITLE%}</A>
- <A HREF="{%FILE_VIEW%}?forum={%VAR_FORUM%}&tid={%VAR_TID%}&">{%TH_SUBJECT%}</A>
- Antwort verfassen</B><P>

Wie man sehen kann ist es "normaler" HTML-Quellcode, den man mit Inhalten füllen kann. Nehmen wir mal an Besucher A möchte auf Thread 2 im Forum 1 antworten. Das PHP-Skript liest den Rohling also ein und hat intern bereits Forum und Thread-ID (tid) zugewiesen bekommen, per GET in der URL. Nun soll an die Stellen, wo {%VAR_FORUM%} und {%VAR_TID%} stehen, die richtigen Werte 1 und 2 eingefügt werden. Das erreicht man mit:

PHP-Quelltext:
============================================================

<?php
// reply.php
....
$TPL->readtpl("reply");
$TPL->add_queue("{%ENV_TITLE%}",$CFG['title']);
$TPL->add_queue("{%FILE_INDEX%}",$VAR['FILE_INDEX']);
$TPL->add_queue("{%FILE_FORUM%}",$VAR['FILE_FORUM']);
$TPL->add_queue("{%FILE_REPLY%}",$VAR['FILE_REPLY']);
$TPL->add_queue("{%FILE_VIEW%}",$VAR['FILE_VIEW']);
$TPL->add_queue("{%TBL_HEAD%}",$CFG['tblhead']);
$TPL->add_queue("{%TBL_BODY%}",$CFG['tblbody']);
$TPL->add_queue("{%USERCLASS%}",$userclass);
$TPL->add_queue("{%MESSAGE%}",stripslashes($form_message));
$TPL->add_queue("{%VAR_TID%}",$tid);
$TPL->add_queue("{%VAR_FORUM%}",$forum);
$TPL->compile_queue();
$TPL->give_compiledtpl();
$TPL->unload();
.....
?>

Mit diesen Zeilen werden die Variablen aus dem Template mit den gewünschen ersetzt. Diese entstehen aus den verschiedenen Anfragen der Besucher. Anstatt nun für jedes Forum und jeden Thread eine HTML-Datei zu erzeugen, nimmt man einen Rohling, der immer passt. Natürlich kann man dies im Quellcode tun, aber eine Trennung ist besser. So können zum Beispiel Leute, die keine Ahnung von PHP haben, trotzdem Templates erstellen, wenn sie HTML können; da im Template kein PHP vorkommt. Wenn "$forum" 1 ist und "$tid" ist 2 dann wird aus:

viewtopic.php?forum={%VAR_FORUM%}&tid={%VAR_TID%}

mit:

$forum = 1;
$tid = 2;
$TPL->add_queue("{%VAR_FORUM%}",$forum);
$TPL->add_queue("{%VAR_TID%}",$tid);

folgendes:

viewtopic.php?forum=1&tid=2

Das wird dann so fertig an den Browser gesendet. Dadurch lassen sich verschiedene Layouts definieren und einfach zwischen ihnen umschalten ohne am PHP-Code herumwerkeln zu müssen. Ob man nun Templates in Dateien oder in eine Datenbank packt, ist egal. Nur als Datei kann sie jeder einfach mit einem Editor bearbeiten. Um diese besser zu kennzeichnen haben diese die .tpl-Dateiendung. Sie könnten aber auch .txt oder sonstwas heissen :-)

Was sind "feste"/"Sticky" Threads?

Das ist ein Subtyp eines Threads. In anderen Foren heissen sie "wichtig" oder auch "sticky". Ich hatte damals "fest" genommen, weil "klebrig" als Übersetzung für sticky nicht wirklich gepasst hätte. Mittlerweile verwende ich nur noch Sticky, kann aber sein, daß irgendwo noch "fest" steht.

Sticky Threads stehen immer oben in der Übersicht. Selbst wenn man seitenweise Threads in einem Forum hat, stehen diese ganz vorne und werden sofort gesehen. Moderatoren können den Typus sehr leicht wechseln.

Was macht die "SID"?

Die "SID" ist eine sogenannte Session. PHP bietet zwar ab Version 4 Session-Unterstützung an, aber ich benötige eine Eigenkonstruktion. Vom Prinzip sind beide identisch, nur ist meine spezieller.

Die Session authentifiziert dich als Benutzer im gesamten Forum. Dort stehen verschlüsselt dein Benutzername, Passwort und die Session drin. Ja, eine Session in der Session. Man kann Session mit "Sitzung" übersetzen. Wann immer du dich einloggst erhälst du eine ID, welche dich bis zum Logout identifiziert. Sie wird dabei entweder per URL oder im Formular von Seite zu Seite weitergegeben.

Mein Passwort steht in der Session?!

Ja, aber keine Bange. Das Passwort liegt bereits verschlüsselt in der Datenbank und wird nur so ausgelesen und verwendet. Dabei kommt das MD5-Verfahren zum Einsatz. Mit realer Prozessorgewalt ist dies derzeit (realistisch) nicht zurückzurechnen. Je länger dein Ursprungspasswort ist, desto besser. Ich empfehle mindestens fünf, besser zehn oder mehr Stellen zu verwenden. Natürlich haben zum Beispiel Geheimdienste mehr Rechenpower, aber warum sollten die sich an einem Forumpasswort aufhalten, wo sie doch bestimmt besseres zu tun haben (abgesehen davon, daß ohne Angriffspunkt in MD5 selber 128bit praktisch unmöglich ist auszurechnen) :naiv:

Mittlerweile wurde MD5 von der Gegenwart eingeholt und es sind theoretische Angriffe denkbar. MD4 ist bereits gebrochen. Ab Version 2.1.0 wird deshalb eine zusätzliche Schicht eingefügt.


Weiterführend...
[link]Sicherheit bei Skriptinstallationen[/link]
[link]Safe Mode und Open Basedir...[/link]

Seite: 1

Copyright (c) by "archilles scriptworld Forum", 2009. All rights reserved.
This archive has no free license, but any copyright laws applicable by your local country.