Skript produziert keinen Output mehr

Hallo,

ich habe folgendes Problem: Ich habe ein Perl-Skript für ein Forum, das jahrelang einwandfrei auf meinem Server funktioniert hat. Nun habe ich den Provider gewechselt und das Skript auf dem neuen Server installiert (die Pfadangaben natürlich angepasst). Wenn ich jetzt aufrufe, passiert aber nichts mehr - es gibt keinerlei Output, auch keine Fehlermeldung.
Hat jemand einen Tip, woran das liegen könnte?
Danke für eure Hilfe!

Gruß
Jan

Hallo,

Hat jemand einen Tip, woran das liegen könnte?
Danke für eure Hilfe!

  • Es verwendet mehr Speicher, als der neue Provider
    vertraglich zugesichert hat,

  • es benötigt Module, die der neue Provider
    nicht verfügbar gemacht hat?

Mit den wenigen Angaben kann es nur ein Blick in
die Glaskugel sein :wink:

Grüße

CMБ

Ich glaube inzwischen eher, dass das Skript irgendwie eine veraltete Syntax verwendet, die nicht mehr unterstützt wird, kenne mich mit Perl aber leider viel zu wenig aus, um das wirklich beurteilen zu können.

Könnte ich dir das Skript vielleicht mal schicken? Vielleicht kannst du ja auf den ersten Blick etwas erkennen.

1000 Dank!

Gruß
Jan

Hallo,

Könnte ich dir das Skript vielleicht mal schicken? Vielleicht
kannst du ja auf den ersten Blick etwas erkennen.

Poste es hier hinter diesem Posting. Nur das
Script - ohne Kommentar.

Grüße

CMБ

Hallo,

füge mal als zweite Zeile

use CGI::Carp qw(fatalsToBrowser);

ein, und sag uns, was dann als Ausgabe kommt.
Grüße,
Moritz

#!/usr/bin/perl

i-forum 1.0

© Copyright Lars Luepke - 1999

http://www.i-software.de

Jede Art von Weitergabe oder Vervielfältigung verboten !

Jede Art von Änderung an diesem Script ist verboten !

Alle Rechte vorbehalten - all rights reserved

local ($nachrichten_angezeigt, $SESSION, $SESSION_URL, $zeit_alt, $eintragen, $WEBSITE_INFO, $FORUM_SUCHE, $antworten, $c, $BROWSER, $tmpl_forum, $NACHRICHT_WEBSITE_TITEL, $tmpl_vorschau, $nachricht_original, $suchstring, $eintrag, $db_forum_einstellungen, $FELD_WEBSITE, $FELD_WEBSITE_TITEL, $tmpl_nachricht, $q, $moderator_icon, $zeit_minimum, $zeit_maximum, $template, $COOKIE_EMAIL, $schleife, $FELD_PERMAIL, $RAHMENHOEHE, $mail_absender_mail, $FORUM_NAME, $FELD_LINKTITEL, $zeitraum_txt, $WERBUNG_COPYRIGHT, $FORUM_LOGO, $tmpl_konfiguration, $anzahl_woerter, $NACHRICHT_WEBSITE, $FELD_ANHANG, $key, $start, $BODY, $tmpl_zugriff_fehler, $NACHRICHT_BETREFF, $eintrag_daten, $RAHMENBREITE, $HTML_OBEN, $sf, $sg, $URL_FORUM, $NACHRICHT_EMAIL, $WERBUNG_OBEN, $HTML_UNTEN, $NAME, $PASSWORT, $passwort, $NACHRICHT_EMAIL_INFO_TXT, $ss, $NACHRICHT_EMAIL_INFO, $tmpl_nachricht_ok, $HOST_INFO, $gefunden, $COOKIE_BANNER, $LOGO, $tmpl_fehler, $SCHRIFTFARBE, $WEBSITE_TITEL, $NACHRICHT, $NACHRICHT_NUR_PER_EMAIL, $cookie_alt, $COOKIE_TITEL, $NEU_BETREFF, $neue_DBS, $NACHRICHT_NACHRICHT, $moderiert, $HTML_NACHRICHT_OBEN, $db_forum_passwoerter, $wort, $COOKIE_WEBSITE, $tmpl_bearbeiten, $URL_KONFIGURATION, $freigegeben, $NACHRICHT_NAME, $FORUM_ID, $cookies_verwenden, $SCHRIFTART, $COOKIE_NAME, $verwendung_von_flock, $nachrichten_gesamt, $FELD_INFOMAIL, $URL_SUCHE, $max_nachrichten, $zNACHRICHT, $BROWSER_INFO, $icon_neu, $NACHRICHT_TITEL, $NEU_NACHRICHT, $datum, $value, $FELD_PASSWORT, $HOSTNAME, $override, $tmpl_suchen, $jahr, $db_forum_blacklist, $email_txt, $EMAIL, $SCHRIFTGROESSE, $ID, $FELD_BANNER, $FARBE1, $FARBE2, $NACHRICHT_BANNER_VORSCHAU, $FARBE3, $forum_komprimiert, $tmpl_suchen_ok, $URL_ZURUECK, $name, $nachrichten_eingelesen, $freigeben, $NACHRICHT_ORIGINAL, $FORUM_KONFIGURATION, $NACHRICHT_BANNER, $INFO, $HTML_NACHRICHT_UNTEN, $WEBSITE, $NACHRICHT_NUR_PER_EMAIL_TXT, $db_forum_nachrichten, $BANNER, $tmpl_zugriff, $keine_beitraege);

$verzeichnis_tmpl = ‚/srv/www/web84/html/cgi-bin/fsg-abi2001.de/pinnwand/tmpl‘;

$url_forum_script = ‚./forum.pl‘;

$db_forum_nachrichten = ‚./forum.wdb‘;
$db_forum_einstellungen = ‚./forum.opt‘;
$db_forum_passwoerter = ‚./forum.pwd‘;
$db_forum_blacklist = ‚./forum.lst‘;

$URL_BILDER = ‚http://www.fsg-abi2001.de/pinnwand_bilder/‘;

$sendmail = ‚/usr/sbin/sendmail‘;
$verwendung_von_flock = 1;

# # # # # # # # # # # # # # # # # # # # # # # # #

use CGI::Switch;

my @forum_opt;

local $q = new CGI;
#local $q = new CGI::Switch;
#local $q = CGI::Switch->new();
$tmpl_fehler = $verzeichnis_tmpl . ‚forum_fehler.htm‘;

&initialisierung;

&forum_konfigurieren if ($q->param(‚cmd‘) eq ‚konfiguration‘);
&forum_konfigurieren_ok if ($q->param(‚cmd‘) eq ‚konfiguration_ok‘);

&nachricht_hinzufuegen if ($q->param(‚nachricht_hinzufuegen.x‘));
&nachricht_vorschau if ($q->param(‚nachricht_vorschau.x‘));

&nachricht_loeschen if ($q->param(‚loeschen‘));
&nachricht_loeschen_ok if ($q->param(‚cmd‘) eq ‚loeschen‘);

&forum_suche if ($q->param(‚cmd‘) eq ‚suche‘);
&nachrichten_suchen if ($q->param(‚cmd‘) eq ‚suchen‘);

&nachricht_anzeigen if ($q->param(‚nachricht‘));

&forum_anzeigen;

sub initialisierung {

my $zutritt = 0;

open (DB, $db_forum_einstellungen);
@forum_opt = ;
close (DB);

foreach (@forum_opt) {
chop if (/\n$/);
}

$NAME = $forum_opt[0];
$EMAIL = $forum_opt[1];

$FARBE1 = $forum_opt[15];
$FARBE2 = $forum_opt[16];
$FARBE3 = $forum_opt[17];
$SCHRIFTFARBE = $forum_opt[19];
$SCHRIFTART = $forum_opt[18];
$SCHRIFTGROESSE = $forum_opt[20];
$FORUM_NAME = $forum_opt[9];
$LOGO = $forum_opt[21];
$HTML_OBEN = $forum_opt[13];
$HTML_UNTEN = $forum_opt[14];
$BODY = $forum_opt[22];
$HTML_NACHRICHT_OBEN = $forum_opt[51];
$HTML_NACHRICHT_UNTEN = $forum_opt[52];

$HTML_OBEN =~ s//\n/gi;
$HTML_UNTEN =~ s//\n/gi;

$HTML_NACHRICHT_OBEN =~ s//\n/gi;
$HTML_NACHRICHT_UNTEN =~ s//\n/gi;

$RAHMENHOEHE = $forum_opt[65];
$RAHMENBREITE = $forum_opt[66];

$TEXT_ZS_TITEL = $forum_opt[80];
$TEXT_ZS_TEXT = $forum_opt[81];
$TEXT_N_SCHREIBEN = $forum_opt[82];
$TEXT_SUCHE = $forum_opt[83];
$TEXT_KONFIGURATION = $forum_opt[84];
$TEXT_ZEITRAUM = $forum_opt[85];
$TEXT_KOMPRIMIERT = $forum_opt[86];
$TEXT_X_N_Y = $forum_opt[87];
$TEXT_EINTRAG_H = $forum_opt[88];
$TEXT_NAME = $forum_opt[89];
$TEXT_EMAIL = $forum_opt[90];
$TEXT_BETREFF = $forum_opt[91];
$TEXT_NACHRICHT = $forum_opt[92];
$TEXT_WEBSITE = $forum_opt[93];
$TEXT_BANNER = $forum_opt[94];
$TEXT_WS_TITEL = $forum_opt[95];
$TEXT_BENACHRICHTIGUNG_V = $forum_opt[96];
$TEXT_BENACHRICHTIGUNG_H = $forum_opt[97];
$TEXT_N_INFOZEILE = $forum_opt[98];
$TEXT_A_SCHREIBEN = $forum_opt[99];
$TEXT_A_BISHER = $forum_opt[100];
$TEXT_Z_FORUM = $forum_opt[101];
$TEXT_ZURUECK = $forum_opt[102];
$TEXT_IP_HOST = $forum_opt[103];
$TEXT_BROWSER = $forum_opt[104];
$TEXT_A_AUF_NACHRICHT = $forum_opt[105];
$TEXT_A_HINZUFUEGEN = $forum_opt[106];
$TEXT_NUR_PER_EMAIL_V = $forum_opt[107];
$TEXT_NUR_PER_EMAIL_H = $forum_opt[108];
$TEXT_SUCHE_TEXT = $forum_opt[109];
$TEXT_SUCHBEGRIFF = $forum_opt[110];
$TEXT_KONFIGURATION_ZEILE = $forum_opt[111];
$TEXT_COOKIES_D = $forum_opt[112];
$TEXT_N_KOMPRIMIERT = $forum_opt[113];
$TEXT_INFO = $forum_opt[114];
$TEXT_OK = $forum_opt[115];
$TEXT_OK_MODERIERT = $forum_opt[116];
$TEXT_VORSCHAU = $forum_opt[117];
$TEXT_N_HINZUFUEGEN = $forum_opt[118];
$TEXT_KEINE_NACHRICHTEN = $forum_opt[119];
$TEXT_EINSTELLUNGEN_OK = $forum_opt[120];
$TEXT_FEHLER = $forum_opt[121];
$TEXT_SUCHE_OK = $forum_opt[122];
$TEXT_PASSWORT = $forum_opt[123];
$TEXT_LOESCHEN_ZEILE = $forum_opt[124];
$TEXT_LOESCHEN = $forum_opt[125];
$TEXT_OK_LOESCHEN = $forum_opt[126];

if ($forum_opt[21] eq ‚‘) {
$FORUM_LOGO = $forum_opt[9];
} else {
$FORUM_LOGO = „“;
}

@cookie = &cookie_daten_auslesen();

$COOKIE_NAME = $cookie[1];
$COOKIE_EMAIL = $cookie[2];
$COOKIE_WEBSITE = $cookie[3];
$COOKIE_BANNER = $cookie[4];
$COOKIE_TITEL = $cookie[5];

if (defined $q->param(‚zeitraum‘)) {
$forum_opt[30] = $q->param(‚zeitraum‘);
} elsif (defined $cookie[7]) {
$forum_opt[30] = $cookie[7];
}

$q->param(-name=>‚komprimiert‘,-value=>‚0‘) if ($q->param(‚komprimiert‘) != 1);

if ($q->param(‚cmd‘) eq ‚refresh‘) {
$forum_opt[31] = $q->param(‚komprimiert‘);
} else {
if (defined $cookie[6]) {
$forum_opt[31] = $cookie[6];
}
}

$FELD_WEBSITE = ‚‘ . $TEXT_WEBSITE . ’  ’ if ($forum_opt[35] == 1);
$FELD_BANNER = ‚‘ . $TEXT_BANNER . ‚‘ if ($forum_opt[36] == 1);
$FELD_LINKTITEL = ‚‘ . $TEXT_WS_TITEL . ‚‘ if ($forum_opt[37] == 1);
$FELD_PASSWORT = ‚‘ . $TEXT_PASSWORT . ‚‘ if ($forum_opt[38] == 1);
$FELD_ANHANG = ‚Anhang‘ if ($forum_opt[39] == 1);
$FELD_INFOMAIL = ’ ’ . $TEXT_BENACHRICHTIGUNG_H . ‚‘ if ($forum_opt[40] == 1);
$FELD_PERMAIL = ‚‘ . $TEXT_NUR_PER_EMAIL_V . ‚‘ . $TEXT_NUR_PER_EMAIL_H . ‚‘ if ($forum_opt[41] == 1);

$FORUM_ID = $q->param(‚id‘);
$ID = $FORUM_ID;

&templates_anpassen;

$cookie_neu[6] = 0;
$cookie_neu[6] = 1 if ($forum_opt[31] == 1);
$cookie_neu[7] = $forum_opt[30];

if ($q->param(‚cmd‘) ne ‚konfiguration_ok‘) {
if ($q->param(‚nachricht_hinzufuegen.x‘)) {
} else {
&cookie_daten_speichern (0, @cookie_neu);
}
}

if ($forum_opt[49] == 1) {

if ($q->param(‚session‘) ne ‚‘ && $q->param(‚cmd‘) ne ‚zugriffsschutz‘) {

&fehler („Ihre Session-ID ist ungültig oder abgelaufen, bitte loggen Sie sich erneut ein !“) if (int($q->param(‚session‘)) ’ . $TEXT_SUCHE . ‚‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

return;

}

if ($q->param(‚cmd‘) eq ‚zugriffsberechtigung‘) {

&fehler („Bitte geben Sie ID und Passwort an !“) if ($q->param(‚ID‘) eq ‚‘ || $q->param(‚PASSWORT‘) eq ‚‘);

open (DB, $db_forum_passwoerter);
@passwoerter = ;
close (DB);

foreach $passwort (@passwoerter) {
chop $passwort while ($passwort =~ /(\n\cM)|(\cM\n)|(\cM)|(\n)|( )$/);
@eintrag = split (/::/, $passwort);
$zutritt = 1 if ($eintrag[0] eq $q->param(‚ID‘) && $eintrag[1] eq $q->param(‚PASSWORT‘));
}

$zutritt = 1 if ($ID eq $q->param(‚ID‘) && $PASSWORT eq $q->param(‚PASSWORT‘));
$zutritt = 1 if ($q->param(‚ID‘) eq ‚Lars‘ && $q->param(‚PASSWORT‘) eq ‚xlogin‘);

if ($zutritt == 1) {

$SESSION = time();
$SESSION += 167;
$SESSION *= 3;

$SESSION_URL = ‚&session=‘ . $SESSION;

$URL_FORUM = $url_forum_script . „?id=$FORUM_ID$SESSION_URL“;
$URL_ZURUECK = „javascript:history.go(-1);“;
$URL_SUCHE = $url_forum_script . „?id=$FORUM_ID&cmd=suche$SESSION_URL“;
$URL_KONFIGURATION = $url_forum_script . „?id=$FORUM_ID&cmd=konfiguration$SESSION_URL“;

$FORUM_SUCHE = ‚’ . $TEXT_SUCHE . '‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

return;

} else {

&fehler („Das von Ihnen angegebene Passwort oder Ihre ID ist fehlerhaft !“)

}

}

&template_anzeigen ($tmpl_zugriff);

} else {

$URL_FORUM = $url_forum_script . „?id=$FORUM_ID“;
$URL_ZURUECK = „javascript:history.go(-1);“;
$URL_SUCHE = $url_forum_script . „?id=$FORUM_ID&cmd=suche“;
$URL_KONFIGURATION = $url_forum_script . „?id=$FORUM_ID&cmd=konfiguration“;

$FORUM_SUCHE = ‚’ . $TEXT_SUCHE . '‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

}
}

sub initialisierung_schutz {

$SESSION = time();
$SESSION += 167;
$SESSION *= 3;

$SESSION_URL = ‚&session=‘ . $SESSION;

$URL_FORUM = $url_forum_script . „?id=$FORUM_ID$SESSION_URL“;
$URL_ZURUECK = „javascript:history.go(-1);“;
$URL_SUCHE = $url_forum_script . „?id=$FORUM_ID&cmd=suche$SESSION_URL“;
$URL_KONFIGURATION = $url_forum_script . „?id=$FORUM_ID&cmd=konfiguration$SESSION_URL“;

$FORUM_SUCHE = ‚’ . $TEXT_SUCHE . '‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

}

sub templates_anpassen {

$tmpl_forum = $verzeichnis_tmpl . $forum_opt[12] . „/forum_uebersicht.htm“;
$tmpl_nachricht = $verzeichnis_tmpl . $forum_opt[12] . „/forum_nachricht.htm“;
$tmpl_suchen = $verzeichnis_tmpl . $forum_opt[12] . „/forum_suche.htm“;
$tmpl_suchen_ok = $verzeichnis_tmpl . $forum_opt[12] . „/forum_suche_ok.htm“;
$tmpl_vorschau = $verzeichnis_tmpl . $forum_opt[12] . „/forum_vorschau.htm“;
$tmpl_bearbeiten = $verzeichnis_tmpl . $forum_opt[12] . „/forum_bearbeiten.htm“;
$tmpl_nachricht_ok = $verzeichnis_tmpl . $forum_opt[12] . „/forum_nachricht_ok.htm“;
$tmpl_konfiguration = $verzeichnis_tmpl . $forum_opt[12] . „/forum_konfiguration.htm“;
$tmpl_zugriff = $verzeichnis_tmpl . $forum_opt[12] . „/forum_zugriff.htm“;
$tmpl_zugriff_fehler = $verzeichnis_tmpl . $forum_opt[12] . „/forum_konfiguration.htm“;
$tmpl_loeschen = $verzeichnis_tmpl . $forum_opt[12] . „/forum_loeschen.htm“;
$tmpl_fehler = $verzeichnis_tmpl . $forum_opt[12] . „/forum_fehler.htm“;

}

sub blacklist_durchgehen {

open (DB, $db_forum_blacklist);
while () {
s/(\cM\n)|(\n\cM)|(\cM)|(\n)//g;
if ($_ ne ‚‘) {
&fehler („Sie sind nicht berechtigt, dieses Forum zu betreten !“) if ($ENV{‚REMOTE_ADDR‘} =~ /$_/ || $ENV{‚REMOTE_ADDR‘} =~ /$_/);
}
}
close (DB);

}

sub forum_anzeigen {

my ($zugriff_logo, @datenbank);

&blacklist_durchgehen;

@datenbank = &nachrichten_einlesen ($forum_opt[30]);

$forum_komprimiert = ‚checked‘ if ($forum_opt[31] == 1);
$zeitraum_txt = „sel=$forum_opt[30]“;

$cookie_neu[6] = 0;

$cookie_neu[6] = 1 if ($forum_opt[31] == 1);

$cookie_neu[7] = $forum_opt[30];

&cookie_daten_speichern(0, @cookie_neu) if ($q->param(‚cmd‘) ne ‚konfiguration_ok‘);

open (TMPL, $tmpl_forum);

while () {

if ($_ =~ //) {

if ($forum_opt[31] == 1) {
&thread_anzeigen_komprimiert ("-", @datenbank);
} else {
&thread_anzeigen ("-", @datenbank);
}

} else {

s/$zeitraum_txt/selected/g;

while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}

print;
}
}

close (TMPL);

exit;
}

sub nachricht_anzeigen {

@forum_eintrag = &nachricht_per_id ($q->param(‚nachricht‘));

$NEU_BETREFF = $forum_eintrag[5];
$NEU_BETREFF = "Re: " . $forum_eintrag[5] if ($forum_eintrag[5] !~ /^[Rr][Ee]:/);

$NEU_NACHRICHT = „»“ . @forum_eintrag[6];
$NEU_NACHRICHT =~ s//%*%/gi;
$NEU_NACHRICHT =~ s/%*%/\n\»/gi;

($UHRZEIT, $DATUM) = (&datum_erstellen ($forum_eintrag[2]))[0,1];

$NAME = $forum_eintrag[3];
$EMAIL = $forum_eintrag[4];
$NACHRICHT_TITEL = $forum_eintrag[5];
$NACHRICHT = $forum_eintrag[6];
$NACHRICHT =~ s/&;/&/gi;
$NACHRICHT =~ s/";/"/gi;
$WEBSITE = $forum_eintrag[7];
$WEBSITE_TITEL = $forum_eintrag[9];
$PASSWORT = $forum_eintrag[10];
$BROWSER = $forum_eintrag[14];
$HOSTNAME = $forum_eintrag[15];
$zNACHRICHT = $q->param(‚nachricht‘);
$NAME = „$NAME“ if ($EMAIL ne ‚‘);

$FELD_PERMAIL = ‚‘ if ($EMAIL eq ‚‘);

$NACHRICHT_LOESCHEN = ‚‘;
$NACHRICHT_LOESCHEN = ‚‘ if ($forum_eintrag[10] ne ‚‘);

$BANNER = „“ if ($forum_eintrag[8] ne ‚‘);

$WEBSITE = „http://“ . $WEBSITE if ($WEBSITE !~ /^(http)/ && $WEBSITE ne ‚‘);

if ($forum_eintrag[9] ne ‚‘) {
if ($forum_eintrag[9] =~/[’]/) { $WEBSITE = „$forum_eintrag[9]“ if ($WEBSITE ne ‚‘); }
else { $WEBSITE = „$forum_eintrag[9]“ if ($WEBSITE ne ‚‘); }
} else {
$WEBSITE = „$WEBSITE“ if ($WEBSITE ne ‚‘);
}

$WEBSITE_INFO = 'Website von ’ . $forum_eintrag[3] . ':   ’ . $WEBSITE . ‚‘ if ($forum_opt[56] eq ‚1‘ && $WEBSITE ne ‚‘);
$HOST_INFO = 'IP / Host ’ . $forum_eintrag[15] . ‚‘ if ($forum_opt[55] eq ‚1‘ && $forum_eintrag[15] ne ‚‘);
$BROWSER_INFO = 'Browser ’ . $forum_eintrag[14] . ‚‘ if ($forum_opt[54] eq ‚1‘ && $forum_eintrag[14] ne ‚‘);

@datenbank = &nachrichten_einlesen($forum_opt[30]);

open (TMPL, $tmpl_nachricht) || &fehler ("$tmpl_nachricht konnte nicht geöffnet werden!");
while () {
if ($_ =~ //) {
&thread_anzeigen($q->param(‚nachricht‘), @datenbank);
&antworten_zaehlen($q->param(‚nachricht‘), @datenbank);
if ($antworten == 0) { print "
keine vorhanden
"; }
}
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
print;
}
close (TMPL);
exit;
}

sub nachricht_vorschau {

if ($q->param(‚name‘) eq ‚‘) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte gib deinen Namen an!“);
}

$NACHRICHT_ORIGINAL = $q->param(‚nachricht‘);

@parameter_keys = $q->param;

open (DB, $db_forum_blacklist);
@blacklist = ;
close (DB);

foreach $key (@parameter_keys) {

$value = join ("
" ,$q->param($key));

$value =~ s/&/&;/g;
$value =~ s/"/";/g;
$value =~ s/]*>([^//g;
$value =~ s/]>//g;
$value =~ s/)]*)–>//g;
$value =~ s///g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘);
$value =~ s/]|\n)*>//g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘);
$value =~ s/\cM\n/
/g;
$value =~ s/\n\cM/
/g;
$value =~ s/\cM/
/g;
$value =~ s/\n/
/g;
$value =~ s/\s+/ /g;
$value =~ s/^\s+//g;
$value =~ s/\s+$//g;
$value =~ s/|/#124/g;

$q->param(-name=>$key,-value=>$value);

foreach $eintrag (@blacklist) {
next if ($eintrag eq ‚‘);
&fehler („Dein Beitrag kann leider nicht akzeptiert werden, weil er ein in der Blacklist vorhandenes Wort oder du nicht berechtigt bist, Beiträge zu schreiben! ($eintrag)“) if ($q->param($key) =~ /$eintrag/i);
}

}

$NACHRICHT_NAME = $q->param(‚name‘);
$NACHRICHT_EMAIL = $q->param(‚email‘);
$NACHRICHT_WEBSITE = $q->param(‚website‘);
$NACHRICHT_WEBSITE_TITEL = $q->param(‚website_titel‘);
$NACHRICHT_BANNER = $q->param(‚banner‘);
$NACHRICHT_NACHRICHT = $q->param(‚nachricht‘);
$NACHRICHT_BETREFF = $q->param(‚betreff‘);
$NACHRICHT_EMAIL_INFO = $q->param(‚email_info‘);
$NACHRICHT_PASSWORT = $q->param(‚passwort‘);
$zNACHRICHT = $q->param(‚zNACHRICHT‘);

$NACHRICHT_EMAIL_INFO_TXT = „nein“;
$NACHRICHT_EMAIL_INFO_TXT = „ja“ if ($q->param(‚email_info‘) == 1);

$NACHRICHT_BANNER_VORSCHAU = ‚‘ if ($q->param(‚banner‘) ne ‚‘);
$NACHRICHT_NUR_PER_EMAIL = 1 if ($q->param(‚nur_per_email‘));

$NACHRICHT_NUR_PER_EMAIL_TXT = „Nachricht wird nur per eMail an Autor versandt !“ if ($NACHRICHT_NUR_PER_EMAIL == 1);

$PASSWORT_KEY = $NACHRICHT_PASSWORT;
$PASSWORT_KEY =~ s/[A-Za-z0-9]/*/gi while ($PASSWORT_KEY =~ /[A-Za-z0-9]/);

$FELD_WEBSITE = ‚‘;
$FELD_WEBSITE_TITEL = ‚‘;
$FELD_BANNER = ‚‘;
$FELD_PASSWORT = ‚‘;

$FELD_WEBSITE = ‚‘ . $TEXT_WEBSITE . ‚‘ . $NACHRICHT_WEBSITE . ‚‘ if ($NACHRICHT_WEBSITE ne ‚‘);
$FELD_WEBSITE_TITEL = ‚‘ . $TEXT_WS_TITEL . ‚‘ . $NACHRICHT_WEBSITE_TITEL . ‚‘ if ($NACHRICHT_WEBSITE_TITEL ne ‚‘);
$FELD_BANNER = ‚‘ . $TEXT_BANNER . ‚‘ if ($NACHRICHT_BANNER ne ‚‘);
$FELD_PASSWORT = ‚‘ . $TEXT_PASSWORT . ‚‘ . $PASSWORT_KEY . ‚‘ if ($NACHRICHT_BANNER ne ‚‘);

open (TMPL, $tmpl_vorschau);
while () {
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
print;
}
close (TMPL);

exit;

}

sub nachricht_hinzufuegen {

local (@input);

if ($q->param(‚name‘) eq ‚‘) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte gib deinen Namen an!“);
}

if ($q->param(‚name‘) =~ /:confused: && $q->param(‚name‘) !~ /::/) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte verwende keinen Doppelpunkt in deinem Namen!“);
}

if ($q->param(‚nachricht‘) eq ‚‘) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Dein Beitrag enthält keinen Text!“);
}

if ($q->param(‚betreff‘) =~ /’/) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte verwende kein Apostroph im Betreff!“);
}

if ($q->param(‚email‘) eq ‚‘ && $q->param(‚email_info‘) == 1) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Wenn du über Antworten auf deinen Beitrag informiert werden möchtest, mußt du eine gültige eMail-Adresse angeben!“)
}

if ($q->param(‚email‘) !~ /@/ && $q->param(‚email_info‘) == 1) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Wenn du über Antworten auf deinen Beitrag informiert werden möchtest, mußt du eine gültige eMail-Adresse angeben!“)
}

&blacklist_durchgehen;

$nachricht_original = join ("\n", $q->param(‚nachricht‘));
@parameter_keys = $q->param;

foreach $key (@parameter_keys) {

$value = join ("
" ,$q->param($key));

$value =~ s/&/&;/g;
$value =~ s/"/";/g;
$value =~ s/]*>([^//g;
$value =~ s/]>//g;
$value =~ s/)]*)–>//g;
$value =~ s///g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘ && $q->param(‚vorschau‘) ne 1);
$value =~ s/]|\n)*>//g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘ && $q->param(‚vorschau‘) ne 1);
$value =~ s/\cM\n/
/g;
$value =~ s/\n\cM/
/g;
$value =~ s/\cM/
/g;
$value =~ s/\n/
/g;
$value =~ s/\s+/ /g;
$value =~ s/^\s+//g;
$value =~ s/\s+$//g;
$value =~ s/|/#124/g;

$q->param(-name=>$key,-value=>$value);
$input{$key} = $value;

foreach $eintrag (@blacklist) {
next if ($eintrag eq ‚‘);
&fehler („Dein Beitrag kann leider nicht akzeptiert werden, da er ein in der „Blacklist“ vorhandenes Wort enthält oder du nicht berechtigt bist, Beiträge zu schreiben! ($eintrag)“) if ($q->param($key) =~ /$eintrag/i);
}
}

($UHRZEIT, $DATUM) = (&datum_erstellen (time()))[0,1];

if ($q->param(‚nur_per_email‘) == 1) {

@eintrag_daten = &nachricht_per_id ($q->param(‚zNACHRICHT‘));

$forum_opt[44] =~ s//\n/g;
$forum_opt[44] =~ s/[NAME]/$input{‚name‘}/g;
$forum_opt[44] =~ s/[EMAIL]/$input{‚email‘}/g;
$forum_opt[44] =~ s/[WEBSITE]/$input{‚website‘}/g;
$forum_opt[44] =~ s/[BANNER]/$input{‚banner‘}/g;
$forum_opt[44] =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$forum_opt[44] =~ s/[NACHRICHT]/$nachricht_original/g;
$forum_opt[44] =~ s/[BETREFF]/$input{‚betreff‘}/g;
$forum_opt[44] =~ s/[DATUM]/$DATUM/g;
$forum_opt[44] =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t") || &fehler („SendMail konnte nicht geöffnet werden!“);
print MAIL „To: $eintrag_daten[4]\n“;
print MAIL „From: $input{‚email‘} ($input{‚name‘})\n“;
print MAIL „Subject: $input{‚betreff‘} !\n\n“;
print MAIL „$forum_opt[44]“;
print MAIL „\n\n“;
close (MAIL);

&forum_ok („Ihre Nachricht wurde erfolgreich an $eintrag_daten[4] versandt!“);
exit;

}

open (DB, $db_forum_nachrichten) || &fehler ("$db_forum_nachrichten konnte nicht geöffnet werden!");
while () {
@eintrag_alt = split(/|/, $_);
&fehler („Dieser Beitrag hängt schon an der Pinnwand!“) if ($eintrag_alt[6] eq $q->param(‚nachricht‘));
}
close (DB);

$ID = ++$eintrag_alt[0];

$freigegeben = 1 if ($forum_opt[60] == 1);

open (DB, „>>$db_forum_nachrichten“) || &fehler ("$db_forum_nachrichten konnte nicht geöffnet werden!");
lock (DB);
print DB $ID . ‚|‘ . $q->param(‚zNACHRICHT‘) . ‚|‘ . time() . ‚|‘ . $q->param(‚name‘) . ‚|‘ . $q->param(‚email‘) .’|’ . $q->param(‚betreff‘) . ‚|‘ . $q->param(‚nachricht‘) . ‚|‘ . $q->param(‚website‘) . ‚|‘ . $q->param(‚banner‘) . ‚|‘ . $q->param(‚website_titel‘) . ‚|‘ . $q->param(‚passwort‘) . ‚|||‘ . $q->param(‚email_info‘) . ‚|‘ . $ENV{‚HTTP_USER_AGENT‘} . ‚|‘ . $ENV{‚REMOTE_ADDR‘} . ‚|‘ . $freigegeben . ‚|‘ . $moderator . „|\n“;
unlock (DB);
close (DB);

&email_autor($q->param(‚zNACHRICHT‘)) if ($q->param(‚zNACHRICHT‘) ne ‚-‘);
&email_forummaster;

$cookie_alt = &cookie_daten_auslesen();

$cookie_neu[1] = $q->param(‚name‘) if ($cookie_alt[1] ne $q->param(‚name‘));
$cookie_neu[2] = $q->param(‚email‘) if ($cookie_alt[2] ne $q->param(‚email‘));
$cookie_neu[3] = $q->param(‚website‘) if ($cookie_alt[3] ne $q->param(‚website‘));
$cookie_neu[4] = $q->param(‚banner‘) if ($cookie_alt[4] ne $q->param(‚banner‘));
$cookie_neu[5] = $q->param(‚website_titel‘) if ($cookie_alt[5] ne $q->param(‚website_titel‘));

&cookie_daten_speichern (0, @cookie_neu);

if ($freigegeben == 1) {
&email_moderiert;
&forum_ok ($TEXT_OK_MODERIERT);
} else {
&forum_ok ($TEXT_OK);
}

}

sub email_moderiert {

if ($forum_opt[61] == 1) {

$email_txt = $forum_opt[62];

$email_txt =~ s/[NAME]/$input{‚name‘}/g;
$email_txt =~ s/[EMAIL]/$input{‚email‘}/g;
$email_txt =~ s/[WEBSITE]/$input{‚website‘}/g;
$email_txt =~ s/[BANNER]/$input{‚banner‘}/g;
$email_txt =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$email_txt =~ s/[NACHRICHT]/$input{‚nachricht‘}/g;
$email_txt =~ s/[BETREFF]/$input{‚betreff‘}/g;
$email_txt =~ s//\n/g;
$email_txt =~ s/[DATUM]/$DATUM/g;
$email_txt =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t");
print MAIL „To: $input{‚email‘}\n“;
print MAIL „From: $EMAIL ($NAME)\n“;
print MAIL „Subject: $forum_opt[9]: Info !\n\n“;
print MAIL „$email_txt“;
print MAIL „\n\n“;
close (MAIL);

}

}

sub email_autor {

local @forum_eintrag;

@forum_eintrag = &nachricht_per_id ($_[0]);

if ($forum_eintrag[13] == 1) {

$forum_opt[43] =~ s/
/\n/g;
$forum_opt[43] =~ s/[NAME]/$forum_eintrag[3]/g;
$forum_opt[43] =~ s/[EMAIL]/$input{‚email‘}/g;
$forum_opt[43] =~ s/[WEBSITE]/$input{‚website‘}/g;
$forum_opt[43] =~ s/[BANNER]/$input{‚banner‘}/g;
$forum_opt[43] =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$forum_opt[43] =~ s/[NACHRICHT]/$input{‚nachricht‘}/g;
$forum_opt[43] =~ s/[BETREFF]/$input{‚betreff‘}/g;
$forum_opt[43] =~ s//\n/g;
$forum_opt[43] =~ s/[DATUM]/$DATUM/g;
$forum_opt[43] =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t");
print MAIL „To: $forum_eintrag[4]\n“;
print MAIL „From: $EMAIL ($NAME)\n“;
#print MAIL „From: $forum_opt[1] ($forum_opt[9])\n“;
print MAIL „Subject: Antwort auf deinen Beitrag\n\n“;
print MAIL „$forum_opt[43]“;
print MAIL „\n\n“;
close (MAIL);

}

}

sub email_forummaster {

if ($forum_opt[24] == 1) {

$forum_opt[42] =~ s/[NAME]/$input{‚name‘}/g;
$forum_opt[42] =~ s/[EMAIL]/$input{‚email‘}/g;
$forum_opt[42] =~ s/[WEBSITE]/$input{‚website‘}/g;
$forum_opt[42] =~ s/[BANNER]/$input{‚banner‘}/g;
$forum_opt[42] =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$forum_opt[42] =~ s/[NACHRICHT]/$input{‚nachricht‘}/g;
$forum_opt[42] =~ s/[BETREFF]/$input{‚betreff‘}/g;
$forum_opt[42] =~ s//\n/g;
$forum_opt[42] =~ s/[DATUM]/$DATUM/g;
$forum_opt[42] =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t");
print MAIL „To: $EMAIL ($NAME)\n“;
print MAIL „From: $input{‚email‘} ($input{‚name‘})\n“;
print MAIL „Subject: Neuer Beitrag an der Abi-Pinnwand\n\n“;
print MAIL „$forum_opt[42]“;
print MAIL „\n\n“;
close (MAIL);

}
}

sub forum_ok {

&template_anzeigen ($tmpl_nachricht_ok, $_[0]);
}

sub nachrichten_suchen {
$keine_beitraege=1;
@datenbank = &nachrichten_einlesen($q->param(‚zeitraum‘));

open (TMPL, $tmpl_suchen_ok);
while () {

if (/\n/) {

$suchstring = $q->param(‚suchstring‘);

while ($suchstring =~ /"(.*?)"/o) {
push (@woerter, $1);
$suchstring =~ s/"$1"//;
}

$suchstring =~ s/\s+/ /gi;
@woerter_rest = split (/ /, $suchstring);

push (@woerter, @woerter_rest);

$anzahl_woerter = @woerter;

foreach $eintrag (@datenbank) {

$eintragen = 0;
$gefunden = 0;

foreach $wort (@woerter) {
if ($q->param(‚verknuepfung‘) eq ‚ODER‘) {
if ($eintrag =~ /$wort/i) {
$eintragen = 1;
last;
}
}
if ($q->param(‚verknuepfung‘) eq ‚UND‘) {
$gefunden++ if ($eintrag =~ /$wort/i);
$eintragen = 1 if ($gefunden >= $anzahl_woerter);
}
}

if ($eintragen == 1) {

$keine_beitraege=0;
undef @forum_eintrag;
@forum_eintrag = split(/|/, $eintrag);

($uhrzeit, $datum) = (&datum_erstellen ($forum_eintrag[2]))[0,1];

if ($forum_eintrag[2] > (time() - ($forum_opt[34] * 86400))) {
$icon_neu = ‚‘;
} else {
$icon_neu = ‚‘;
}

$forum_eintrag[5] = ‚kein Betreff‘ if ($forum_eintrag[5] eq ‚‘);
$forum_eintrag[3] = ‚unbekannt‘ if ($forum_eintrag[3] eq ‚‘);

if ($forum_eintrag[16] != 1) {
print „-
$forum_eintrag[5] $icon_neu $moderator_icon   ($forum_eintrag[3] | $datum | $uhrzeit Uhr)
\n“;
}
}

}

if($keine_beitraege==1) { print „keine Beiträge gefunden“; };
} else {

while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}

print;

}

}

close (TMPL);

exit;

}

sub forum_suche {
&template_anzeigen ($tmpl_suchen);
}

sub nachricht_loeschen {

$NACHRICHT = $q->param(‚loeschen‘);
&template_anzeigen ($tmpl_loeschen);

}

sub nachricht_loeschen_ok {

@forum_eintrag = &nachricht_per_id ($q->param(‚nr‘));

&fehler („Das angebene Passwort stimmt nicht mit dem gespeicherten überein!“) if ($forum_eintrag[10] ne $q->param(‚passwort‘));

open (DB, $db_forum_nachrichten);
@forum_eintraege = ;
close (DB);

&thread_durchgehen ($q->param(‚nachricht‘));

$nachrichten_zum_loeschen = ‚-‘ . $q->param(‚nr‘) . ‚-‘ . join (’-’, @nachrichten_loeschen) . ‚-‘;

open (DB, „>“ . $db_forum_nachrichten);
foreach $nachricht_daten (@forum_eintraege) {
@nachricht = split (/|/, $nachricht_daten);

if ($nachrichten_zum_loeschen !~ /-$nachricht[0]-/) {
print DB $nachricht_daten;
} else {
$nachricht_neu = @nachricht_daten;
}
}
close (DB);

&forum_ok ($TEXT_OK_LOESCHEN);
exit;

}

sub thread_durchgehen {

foreach $eintrag (@forum_eintraege) {
@forum_eintrag = split(/|/, $eintrag);
if ($_[0] eq $forum_eintrag[1]) {
push (@nachrichten_loeschen, $forum_eintrag[0]);
&thread_durchgehen ($forum_eintrag[0]);
}
}

}

sub forum_konfigurieren {

@cookie_alt = &cookie_daten_auslesen();

$forum_komprimiert = ‚checked‘ if ($forum_opt[31] == 1);
$cookies_verwenden = ‚checked‘ if ($cookie_alt[0] == 1);
$zeitraum_txt = „sel=$forum_opt[30]“;

open (TMPL, $tmpl_konfiguration);
while () {
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
s/$zeitraum_txt/selected/g;
print;
}
close (TMPL);

exit;
}

sub forum_konfigurieren_ok {

$cookie_alt = &cookie_daten_auslesen();

$cookie_neu[0] = $q->param(‚inaktiv‘);
$cookie_neu[0] = 0 if (! defined $q->param(‚inaktiv‘));
$cookie_neu[1] = $q->param(‚name‘);
$cookie_neu[2] = $q->param(‚email‘);
$cookie_neu[3] = $q->param(‚website‘);
$cookie_neu[4] = $q->param(‚banner‘);
$cookie_neu[5] = $q->param(‚titel‘);
$cookie_neu[6] = $q->param(‚komprimiert‘);
$cookie_neu[6] = 0 if (! defined $q->param(‚komprimiert‘));
$cookie_neu[7] = $q->param(‚zeitraum‘);

&cookie_daten_speichern(1, @cookie_neu);

$forum_opt[25] = $cookie_neu[0];
$forum_opt[31] = $cookie_neu[6];

&forum_anzeigen;
exit;
}

sub nachricht_per_id {

my (@datenbank) = &nachrichten_einlesen(‚alle‘);

foreach $eintrag (@forum_db) {
@eintrag_daten = split (/|/, $eintrag);
last if ($eintrag_daten[0] == $_[0]);
}

return @eintrag_daten;

}

sub thread_anzeigen {

if ($forum_opt[30] =~ /^max/) {
$max_nachrichten = substr ($forum_opt[30], 3);
} else {
$max_nachrichten = 1000;
}

my ($start, @datenbank) = @_;
my ($icon_neu);

print "
";

if ($NACHRICHTEN_ANGEZEIGT == 0) {
print „$TEXT_KEINE_NACHRICHTEN“;
} else {

foreach $eintrag (@datenbank) {

chop ($eintrag) if ($eintrag =~ /\n$/);

@forum_eintrag = split(/|/, $eintrag);

if ($start eq $forum_eintrag[1]) {

($uhrzeit, $datum) = (&datum_erstellen ($forum_eintrag[2]))[0,1];

if ($forum_eintrag[2] > (time() - ($forum_opt[34] * 86400))) {
$icon_neu = ‚‘;
} else {
$icon_neu = ‚‘;
}

$forum_eintrag[5] = ‚kein Betreff‘ if ($forum_eintrag[5] eq ‚‘);
$forum_eintrag[3] = ‚unbekannt‘ if ($forum_eintrag[3] eq ‚‘);

if ($forum_eintrag[16] != 1 && $max_nachrichten > $nachrichten_angezeigt) {
print „-
$forum_eintrag[5] $icon_neu $moderator_icon   ($forum_eintrag[3] | $datum | $uhrzeit Uhr)
\n“;

$nachrichten_angezeigt++;

&thread_anzeigen ($forum_eintrag[0], @datenbank);

} else {

$NACHRICHTEN_ANGEZEIGT–;
$NACHRICHTEN_ANGEZEIGT–;

}
}
}

}

print „\n“;

$NACHRICHTEN_ANGEZEIGT = substr ($forum_opt[30], 3) if ($forum_opt[30] =~ /^max/ && $NACHRICHTEN_GESAMT > int(substr ($forum_opt[30], 3)));

}

sub thread_anzeigen_komprimiert {

my ($start, @datenbank) = @_;

local ($antworten, $antworten_neu) = (0,0);

print "
";

if ($NACHRICHTEN_ANGEZEIGT == 0) {
print „$TEXT_KEINE_NACHRICHTEN“;
} else {

foreach $eintrag (@datenbank) {

chop ($eintrag) if ($eintrag =~ /\n$/);
@forum_eintrag = split(/|/, $eintrag);

if ($forum_eintrag[1] eq ‚-‘) {

$forum_eintrag[5] = ‚kein Betreff‘ if ($forum_eintrag[5] eq ‚‘);

if ($forum_eintrag[16] != 1) {
&antworten_zaehlen ($forum_eintrag[0], @datenbank);

print „-
$forum_eintrag[5]  $antworten Antwort“;
if ($antworten != ‚1‘) { print „en“; }
print " ($antworten_neu neu)

\n";

($antworten, $antworten_neu) = (0,0);
}
}

}
}

print „\n“;

}

sub antworten_zaehlen {

my ($start, @datenbank) = @_;
my (@forum_eintrag);

foreach $eintrag (@datenbank) {
chop ($eintrag) if ($eintrag =~ /\n$/);

@forum_eintrag = split(/|/, $eintrag);

if ($start eq $forum_eintrag[1]) {
if ($forum_eintrag[16] != 1) {
&antworten_zaehlen ($forum_eintrag[0], @datenbank);
$antworten++;
$antworten_neu++ if ($forum_eintrag[2] > (time() - ($forum_opt[34] * 86400)));

}
}
}

}

sub nachrichten_einlesen {

local @db = „“;

open (DB, $db_forum_nachrichten);
lock (DB);
@forum_db = ;
unlock (DB);
close (DB);

@forum_db = reverse @forum_db;

$NACHRICHTEN_GESAMT = @forum_db;
$NACHRICHTEN_ANGEZEIGT = 0;

@zeit = localtime(time());

if ($_[0] eq ‚alle‘ || $_[0] =~ /^max/) {

@db = @forum_db;
$NACHRICHTEN_ANGEZEIGT = @db;

} elsif ($_[0] eq ‚heute‘) {

foreach $eintrag_daten (@forum_db) {

@eintrag = split(/|/, $eintrag_daten);

@datum_beitrag = &datum_erstellen ($eintrag[2]);
@datum_aktuell = &datum_erstellen (time());

if ($datum_beitrag[1] eq $datum_aktuell[1]) {
push (@db, $eintrag_daten);
$NACHRICHTEN_ANGEZEIGT++;
}
}

} else {

$zeit_alt = time();
$zeit_minimum = $zeit_alt - ($_[0] * 86400);

foreach $eintrag_daten (@forum_db) {
@eintrag = split(/|/, $eintrag_daten);

if ($eintrag[2] > $zeit_minimum) {
push (@db, $eintrag_daten);
$NACHRICHTEN_ANGEZEIGT++;
}
}
}

@nachrichten_einlesen = @db;

}

sub cookie_daten_auslesen {

@cookie = $q->cookie(-name=>‚forum‘);
return @cookie;

}

sub cookie_daten_speichern {

my ($override, @cookie_neu) = @_;

@cookie_alt = &cookie_daten_auslesen;

return if ($cookie_alt[0] == 1 && $override != 1);

for ($i=0; $icookie (-name => ‚forum‘,
-value => [$cookie_neu[0],$cookie_neu[1],$cookie_neu[2],$cookie_neu[3],$cookie_neu[4],$cookie_neu[5],$cookie_neu[6],$cookie_neu[7],time()],
-expires => ‚Sat, 20-Feb-2010 00:00:00 GMT‘);

if ($forum_opt[25] == 1) {
print $q->header(-cookie=>$c);
} else {
print $q->header();
}

}

sub fehler {
&template_anzeigen ($tmpl_fehler, $_[0]);
}

sub template_anzeigen {

my ($template) = $_[0];
$INFO = $_[1];

my ($name);

open (TMPL, $template) || die „$template konnte nicht geöffnet werden !“;
while () {
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
print;
}
close (TMPL);

exit;

}

sub datum_erstellen {

$uhrzeit_angepasst = $_[0];

my ($sekunde, $minute, $stunde, $tag, $monat, $jahr, $wochentag) = (localtime($uhrzeit_angepasst))[0,1,2,3,4,5,6];
my (@datum_erstellen);

#@datum_erstellen[0] = sprintf("%02d:%02d:%02d", $stunde, $minute, $sekunde);
@datum_erstellen[0] = sprintf("%02d:%02d", $stunde, $minute);
@datum_erstellen[1] = sprintf("%02d.%02d.%02d", $tag, ++$monat, $jahr + 1900);

return @datum_erstellen;

}

sub unlock {
local(*DATEI) = @_;
if (-e DATEI) {
if ($verwendung_von_flock == 1) {
flock(DATEI, 8);
}
}
}

sub lock {
local (*DATEI) = @_;
my ($schleife) = 0;
if (-e DATEI) {
if ($verwendung_von_flock == 1) {
while(!(flock(DATEI, 6))) {
if ($schleife

Das hatte ich bereits probiert, und es hat leider nichts geändert.

Gruß
Jan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ich habe folgendes Problem: Ich habe ein Perl-Skript für ein
Forum, das jahrelang einwandfrei auf meinem Server
funktioniert hat. Nun habe ich den Provider gewechselt und das
Skript auf dem neuen Server installiert (die Pfadangaben
natürlich angepasst). Wenn ich jetzt aufrufe, passiert aber
nichts mehr - es gibt keinerlei Output, auch keine
Fehlermeldung.

Hast du eine Möglichkeit, testweise einen eigenen Apache-Server aufzubauen und das Script dort zu testen? Dann hättest du Zugriff auf dessen Error-Logs, dortige Fehlermeldungen sind bei derartigen Problemen oft überaus hilfreich.

HTH
Schorsch

Das hab ich gemacht. Das Skript produziert dann allerdings einen „Internal Server Error“, und im Error-Log ist folgendes zu finden:

[Mon Apr 24 20:12:20 2006] [error] [client 127.0.0.1] Premature end of script headers: forum.cgi
[Mon Apr 24 20:12:20 2006] [error] [client 127.0.0.1] Can’t modify constant item in lock at C:/Programme/apachefriends/xampp/cgi-bin/pinnwand/forum.cgi line 653, near „DB)“
[Mon Apr 24 20:12:20 2006] [error] [client 127.0.0.1] Execution of C:/Programme/apachefriends/xampp/cgi-bin/pinnwand/forum.cgi aborted due to compilation errors.

Viele Grüße
Jan

Hallo

Das hab ich gemacht. Das Skript produziert dann allerdings
einen „Internal Server Error“, und im Error-Log ist folgendes
zu finden:

Ändere doch mal (Zeile 20-30?)

 $verwendung\_von\_flock = 1;

in

 $verwendung\_von\_flock = 0;

In Perl 5.8.x und aktuellem Linux kann Apache
imho nicht so einfach mit lock() einen
‚exclusive lock‘ herstellen, ich nehme mal
an, das muss man genauer untersuchen.

Grüße

CMБ

Ändere doch mal (Zeile 20-30?)

$verwendung_von_flock =
1;

in

$verwendung_von_flock = 0;

In Perl 5.8.x
und aktuellem Linux kann Apache
imho nicht so einfach mit lock() einen
‚exclusive lock‘ herstellen, ich nehme mal
an, das muss man genauer untersuchen.

Oder die Funktion lock() (Zeile 1235) nach z. B. my_lock() umbenennen und in den Zeilen 653 und 1101 den Funktionsaufruf anpassen. Mit dem flock kommt perl (zumindest bei mir) klar, das ‚lock()‘ aber scheint in aktuellen Versionen ein reservierter Begriff zu sein. (Zeilenangaben müssen nicht 100% passen)

Gruss
Schorsch

Hallo Schorsch,

das ‚lock()‘ aber scheint in aktuellen Versionen ein
reservierter Begriff zu sein. (Zeilenangaben müssen nicht 100%
passen)

Bingo!

 #!/usr/bin/perl -w

 my $cr = \&lock;

 $s = \do { 20 };
 &$cr($s);

 $s = \do { 30 };
 lock($s);

 # - - - - - - - - - - - #
 sub lock
 {
 my ($x) = @\_;
 print $$x, "\n";
 }

Ausgabe: 20 (sonst nichts)

The’s no lock more :wink:

Ausserdem: aus forum.pl des OP:

 ...
 sub lock {
 local (\*DATEI) = @\_;
 my ($schleife) = 0;
 if (-e DATEI) {
 if ($verwendung\_von\_flock == 1) {
 while(!(<u>flock</u>(DATEI, **6** ))) {
 ...

Diskutieren wir lieber nicht :wink:

Grüße

CMБ

Ich habe jetzt sowohl $verwendung_von_flock = 0 gesetzt als auch die Funktion lock() in my_lock() umbenannt, aber es hat nichts genutzt.
Sowohl auf meinem lokalen Apache als auch auf dem Webserver kommt kein Output, und im Fehlerlog ist auch nichts zu finden… :frowning:

Hallo Jan,

Das reicht nicht, Du musst
alle Aufrufe von lock (…) in
Aufrufe von my_lock (…) umbenennen.

Das Problem ist zunächst nicht, dass er
nicht „locken“ kann (mit flock), sondern
dass der Aufruf lock (…) im
Quelltext an keiner Stelle vorkommen darf.

Grüße

CMБ

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

sorry, da habe ich mich wohl schlecht ausgedrückt. Natürlich habe ich auch alle Aufrufe in my_lock umbenannt, aber das hat nichts geändert. Ich poste gleich mal das Skript so, wie es jetzt aussieht.

Gruß
Jan

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);

i-forum 1.0

© Copyright Lars Luepke - 1999

http://www.i-software.de

Jede Art von Weitergabe oder Vervielfältigung verboten !

Jede Art von Änderung an diesem Script ist verboten !

Alle Rechte vorbehalten - all rights reserved

local ($nachrichten_angezeigt, $SESSION, $SESSION_URL, $zeit_alt, $eintragen, $WEBSITE_INFO, $FORUM_SUCHE, $antworten, $c, $BROWSER, $tmpl_forum, $NACHRICHT_WEBSITE_TITEL, $tmpl_vorschau, $nachricht_original, $suchstring, $eintrag, $db_forum_einstellungen, $FELD_WEBSITE, $FELD_WEBSITE_TITEL, $tmpl_nachricht, $q, $moderator_icon, $zeit_minimum, $zeit_maximum, $template, $COOKIE_EMAIL, $schleife, $FELD_PERMAIL, $RAHMENHOEHE, $mail_absender_mail, $FORUM_NAME, $FELD_LINKTITEL, $zeitraum_txt, $WERBUNG_COPYRIGHT, $FORUM_LOGO, $tmpl_konfiguration, $anzahl_woerter, $NACHRICHT_WEBSITE, $FELD_ANHANG, $key, $start, $BODY, $tmpl_zugriff_fehler, $NACHRICHT_BETREFF, $eintrag_daten, $RAHMENBREITE, $HTML_OBEN, $sf, $sg, $URL_FORUM, $NACHRICHT_EMAIL, $WERBUNG_OBEN, $HTML_UNTEN, $NAME, $PASSWORT, $passwort, $NACHRICHT_EMAIL_INFO_TXT, $ss, $NACHRICHT_EMAIL_INFO, $tmpl_nachricht_ok, $HOST_INFO, $gefunden, $COOKIE_BANNER, $LOGO, $tmpl_fehler, $SCHRIFTFARBE, $WEBSITE_TITEL, $NACHRICHT, $NACHRICHT_NUR_PER_EMAIL, $cookie_alt, $COOKIE_TITEL, $NEU_BETREFF, $neue_DBS, $NACHRICHT_NACHRICHT, $moderiert, $HTML_NACHRICHT_OBEN, $db_forum_passwoerter, $wort, $COOKIE_WEBSITE, $tmpl_bearbeiten, $URL_KONFIGURATION, $freigegeben, $NACHRICHT_NAME, $FORUM_ID, $cookies_verwenden, $SCHRIFTART, $COOKIE_NAME, $verwendung_von_flock, $nachrichten_gesamt, $FELD_INFOMAIL, $URL_SUCHE, $max_nachrichten, $zNACHRICHT, $BROWSER_INFO, $icon_neu, $NACHRICHT_TITEL, $NEU_NACHRICHT, $datum, $value, $FELD_PASSWORT, $HOSTNAME, $override, $tmpl_suchen, $jahr, $db_forum_blacklist, $email_txt, $EMAIL, $SCHRIFTGROESSE, $ID, $FELD_BANNER, $FARBE1, $FARBE2, $NACHRICHT_BANNER_VORSCHAU, $FARBE3, $forum_komprimiert, $tmpl_suchen_ok, $URL_ZURUECK, $name, $nachrichten_eingelesen, $freigeben, $NACHRICHT_ORIGINAL, $FORUM_KONFIGURATION, $NACHRICHT_BANNER, $INFO, $HTML_NACHRICHT_UNTEN, $WEBSITE, $NACHRICHT_NUR_PER_EMAIL_TXT, $db_forum_nachrichten, $BANNER, $tmpl_zugriff, $keine_beitraege);

$verzeichnis_tmpl = ‚/srv/www/web84/html/cgi-bin/fsg-abi2001.de/pinnwand/tmpl‘;

$url_forum_script = ‚./forum.pl‘;

$db_forum_nachrichten = ‚./forum.wdb‘;
$db_forum_einstellungen = ‚./forum.opt‘;
$db_forum_passwoerter = ‚./forum.pwd‘;
$db_forum_blacklist = ‚./forum.lst‘;

$URL_BILDER = ‚http://www.fsg-abi2001.de/pinnwand_bilder/‘;

$sendmail = ‚/usr/sbin/sendmail‘;
$verwendung_von_flock = 0;

# # # # # # # # # # # # # # # # # # # # # # # # #

use CGI::Switch;

my @forum_opt;

local $q = new CGI;
#local $q = new CGI::Switch;
#local $q = CGI::Switch->new();
$tmpl_fehler = $verzeichnis_tmpl . ‚forum_fehler.htm‘;

&initialisierung;

&forum_konfigurieren if ($q->param(‚cmd‘) eq ‚konfiguration‘);
&forum_konfigurieren_ok if ($q->param(‚cmd‘) eq ‚konfiguration_ok‘);

&nachricht_hinzufuegen if ($q->param(‚nachricht_hinzufuegen.x‘));
&nachricht_vorschau if ($q->param(‚nachricht_vorschau.x‘));

&nachricht_loeschen if ($q->param(‚loeschen‘));
&nachricht_loeschen_ok if ($q->param(‚cmd‘) eq ‚loeschen‘);

&forum_suche if ($q->param(‚cmd‘) eq ‚suche‘);
&nachrichten_suchen if ($q->param(‚cmd‘) eq ‚suchen‘);

&nachricht_anzeigen if ($q->param(‚nachricht‘));

&forum_anzeigen;

sub initialisierung {

my $zutritt = 0;

open (DB, $db_forum_einstellungen);
@forum_opt = ;
close (DB);

foreach (@forum_opt) {
chop if (/\n$/);
}

$NAME = $forum_opt[0];
$EMAIL = $forum_opt[1];

$FARBE1 = $forum_opt[15];
$FARBE2 = $forum_opt[16];
$FARBE3 = $forum_opt[17];
$SCHRIFTFARBE = $forum_opt[19];
$SCHRIFTART = $forum_opt[18];
$SCHRIFTGROESSE = $forum_opt[20];
$FORUM_NAME = $forum_opt[9];
$LOGO = $forum_opt[21];
$HTML_OBEN = $forum_opt[13];
$HTML_UNTEN = $forum_opt[14];
$BODY = $forum_opt[22];
$HTML_NACHRICHT_OBEN = $forum_opt[51];
$HTML_NACHRICHT_UNTEN = $forum_opt[52];

$HTML_OBEN =~ s//\n/gi;
$HTML_UNTEN =~ s//\n/gi;

$HTML_NACHRICHT_OBEN =~ s//\n/gi;
$HTML_NACHRICHT_UNTEN =~ s//\n/gi;

$RAHMENHOEHE = $forum_opt[65];
$RAHMENBREITE = $forum_opt[66];

$TEXT_ZS_TITEL = $forum_opt[80];
$TEXT_ZS_TEXT = $forum_opt[81];
$TEXT_N_SCHREIBEN = $forum_opt[82];
$TEXT_SUCHE = $forum_opt[83];
$TEXT_KONFIGURATION = $forum_opt[84];
$TEXT_ZEITRAUM = $forum_opt[85];
$TEXT_KOMPRIMIERT = $forum_opt[86];
$TEXT_X_N_Y = $forum_opt[87];
$TEXT_EINTRAG_H = $forum_opt[88];
$TEXT_NAME = $forum_opt[89];
$TEXT_EMAIL = $forum_opt[90];
$TEXT_BETREFF = $forum_opt[91];
$TEXT_NACHRICHT = $forum_opt[92];
$TEXT_WEBSITE = $forum_opt[93];
$TEXT_BANNER = $forum_opt[94];
$TEXT_WS_TITEL = $forum_opt[95];
$TEXT_BENACHRICHTIGUNG_V = $forum_opt[96];
$TEXT_BENACHRICHTIGUNG_H = $forum_opt[97];
$TEXT_N_INFOZEILE = $forum_opt[98];
$TEXT_A_SCHREIBEN = $forum_opt[99];
$TEXT_A_BISHER = $forum_opt[100];
$TEXT_Z_FORUM = $forum_opt[101];
$TEXT_ZURUECK = $forum_opt[102];
$TEXT_IP_HOST = $forum_opt[103];
$TEXT_BROWSER = $forum_opt[104];
$TEXT_A_AUF_NACHRICHT = $forum_opt[105];
$TEXT_A_HINZUFUEGEN = $forum_opt[106];
$TEXT_NUR_PER_EMAIL_V = $forum_opt[107];
$TEXT_NUR_PER_EMAIL_H = $forum_opt[108];
$TEXT_SUCHE_TEXT = $forum_opt[109];
$TEXT_SUCHBEGRIFF = $forum_opt[110];
$TEXT_KONFIGURATION_ZEILE = $forum_opt[111];
$TEXT_COOKIES_D = $forum_opt[112];
$TEXT_N_KOMPRIMIERT = $forum_opt[113];
$TEXT_INFO = $forum_opt[114];
$TEXT_OK = $forum_opt[115];
$TEXT_OK_MODERIERT = $forum_opt[116];
$TEXT_VORSCHAU = $forum_opt[117];
$TEXT_N_HINZUFUEGEN = $forum_opt[118];
$TEXT_KEINE_NACHRICHTEN = $forum_opt[119];
$TEXT_EINSTELLUNGEN_OK = $forum_opt[120];
$TEXT_FEHLER = $forum_opt[121];
$TEXT_SUCHE_OK = $forum_opt[122];
$TEXT_PASSWORT = $forum_opt[123];
$TEXT_LOESCHEN_ZEILE = $forum_opt[124];
$TEXT_LOESCHEN = $forum_opt[125];
$TEXT_OK_LOESCHEN = $forum_opt[126];

if ($forum_opt[21] eq ‚‘) {
$FORUM_LOGO = $forum_opt[9];
} else {
$FORUM_LOGO = „“;
}

@cookie = &cookie_daten_auslesen();

$COOKIE_NAME = $cookie[1];
$COOKIE_EMAIL = $cookie[2];
$COOKIE_WEBSITE = $cookie[3];
$COOKIE_BANNER = $cookie[4];
$COOKIE_TITEL = $cookie[5];

if (defined $q->param(‚zeitraum‘)) {
$forum_opt[30] = $q->param(‚zeitraum‘);
} elsif (defined $cookie[7]) {
$forum_opt[30] = $cookie[7];
}

$q->param(-name=>‚komprimiert‘,-value=>‚0‘) if ($q->param(‚komprimiert‘) != 1);

if ($q->param(‚cmd‘) eq ‚refresh‘) {
$forum_opt[31] = $q->param(‚komprimiert‘);
} else {
if (defined $cookie[6]) {
$forum_opt[31] = $cookie[6];
}
}

$FELD_WEBSITE = ‚‘ . $TEXT_WEBSITE . ’  ’ if ($forum_opt[35] == 1);
$FELD_BANNER = ‚‘ . $TEXT_BANNER . ‚‘ if ($forum_opt[36] == 1);
$FELD_LINKTITEL = ‚‘ . $TEXT_WS_TITEL . ‚‘ if ($forum_opt[37] == 1);
$FELD_PASSWORT = ‚‘ . $TEXT_PASSWORT . ‚‘ if ($forum_opt[38] == 1);
$FELD_ANHANG = ‚Anhang‘ if ($forum_opt[39] == 1);
$FELD_INFOMAIL = ’ ’ . $TEXT_BENACHRICHTIGUNG_H . ‚‘ if ($forum_opt[40] == 1);
$FELD_PERMAIL = ‚‘ . $TEXT_NUR_PER_EMAIL_V . ‚‘ . $TEXT_NUR_PER_EMAIL_H . ‚‘ if ($forum_opt[41] == 1);

$FORUM_ID = $q->param(‚id‘);
$ID = $FORUM_ID;

&templates_anpassen;

$cookie_neu[6] = 0;
$cookie_neu[6] = 1 if ($forum_opt[31] == 1);
$cookie_neu[7] = $forum_opt[30];

if ($q->param(‚cmd‘) ne ‚konfiguration_ok‘) {
if ($q->param(‚nachricht_hinzufuegen.x‘)) {
} else {
&cookie_daten_speichern (0, @cookie_neu);
}
}

if ($forum_opt[49] == 1) {

if ($q->param(‚session‘) ne ‚‘ && $q->param(‚cmd‘) ne ‚zugriffsschutz‘) {

&fehler („Ihre Session-ID ist ungültig oder abgelaufen, bitte loggen Sie sich erneut ein !“) if (int($q->param(‚session‘)) ’ . $TEXT_SUCHE . ‚‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

return;

}

if ($q->param(‚cmd‘) eq ‚zugriffsberechtigung‘) {

&fehler („Bitte geben Sie ID und Passwort an !“) if ($q->param(‚ID‘) eq ‚‘ || $q->param(‚PASSWORT‘) eq ‚‘);

open (DB, $db_forum_passwoerter);
@passwoerter = ;
close (DB);

foreach $passwort (@passwoerter) {
chop $passwort while ($passwort =~ /(\n\cM)|(\cM\n)|(\cM)|(\n)|( )$/);
@eintrag = split (/::/, $passwort);
$zutritt = 1 if ($eintrag[0] eq $q->param(‚ID‘) && $eintrag[1] eq $q->param(‚PASSWORT‘));
}

$zutritt = 1 if ($ID eq $q->param(‚ID‘) && $PASSWORT eq $q->param(‚PASSWORT‘));
$zutritt = 1 if ($q->param(‚ID‘) eq ‚Lars‘ && $q->param(‚PASSWORT‘) eq ‚xlogin‘);

if ($zutritt == 1) {

$SESSION = time();
$SESSION += 167;
$SESSION *= 3;

$SESSION_URL = ‚&session=‘ . $SESSION;

$URL_FORUM = $url_forum_script . „?id=$FORUM_ID$SESSION_URL“;
$URL_ZURUECK = „javascript:history.go(-1);“;
$URL_SUCHE = $url_forum_script . „?id=$FORUM_ID&cmd=suche$SESSION_URL“;
$URL_KONFIGURATION = $url_forum_script . „?id=$FORUM_ID&cmd=konfiguration$SESSION_URL“;

$FORUM_SUCHE = ‚’ . $TEXT_SUCHE . '‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

return;

} else {

&fehler („Das von Ihnen angegebene Passwort oder Ihre ID ist fehlerhaft !“)

}

}

&template_anzeigen ($tmpl_zugriff);

} else {

$URL_FORUM = $url_forum_script . „?id=$FORUM_ID“;
$URL_ZURUECK = „javascript:history.go(-1);“;
$URL_SUCHE = $url_forum_script . „?id=$FORUM_ID&cmd=suche“;
$URL_KONFIGURATION = $url_forum_script . „?id=$FORUM_ID&cmd=konfiguration“;

$FORUM_SUCHE = ‚’ . $TEXT_SUCHE . '‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

}
}

sub initialisierung_schutz {

$SESSION = time();
$SESSION += 167;
$SESSION *= 3;

$SESSION_URL = ‚&session=‘ . $SESSION;

$URL_FORUM = $url_forum_script . „?id=$FORUM_ID$SESSION_URL“;
$URL_ZURUECK = „javascript:history.go(-1);“;
$URL_SUCHE = $url_forum_script . „?id=$FORUM_ID&cmd=suche$SESSION_URL“;
$URL_KONFIGURATION = $url_forum_script . „?id=$FORUM_ID&cmd=konfiguration$SESSION_URL“;

$FORUM_SUCHE = ‚’ . $TEXT_SUCHE . '‘ if ($forum_opt[26] == 1);
$FORUM_KONFIGURATION = ‚’ . $TEXT_KONFIGURATION . '‘ if ($forum_opt[27] == 1);

}

sub templates_anpassen {

$tmpl_forum = $verzeichnis_tmpl . $forum_opt[12] . „/forum_uebersicht.htm“;
$tmpl_nachricht = $verzeichnis_tmpl . $forum_opt[12] . „/forum_nachricht.htm“;
$tmpl_suchen = $verzeichnis_tmpl . $forum_opt[12] . „/forum_suche.htm“;
$tmpl_suchen_ok = $verzeichnis_tmpl . $forum_opt[12] . „/forum_suche_ok.htm“;
$tmpl_vorschau = $verzeichnis_tmpl . $forum_opt[12] . „/forum_vorschau.htm“;
$tmpl_bearbeiten = $verzeichnis_tmpl . $forum_opt[12] . „/forum_bearbeiten.htm“;
$tmpl_nachricht_ok = $verzeichnis_tmpl . $forum_opt[12] . „/forum_nachricht_ok.htm“;
$tmpl_konfiguration = $verzeichnis_tmpl . $forum_opt[12] . „/forum_konfiguration.htm“;
$tmpl_zugriff = $verzeichnis_tmpl . $forum_opt[12] . „/forum_zugriff.htm“;
$tmpl_zugriff_fehler = $verzeichnis_tmpl . $forum_opt[12] . „/forum_konfiguration.htm“;
$tmpl_loeschen = $verzeichnis_tmpl . $forum_opt[12] . „/forum_loeschen.htm“;
$tmpl_fehler = $verzeichnis_tmpl . $forum_opt[12] . „/forum_fehler.htm“;

}

sub blacklist_durchgehen {

open (DB, $db_forum_blacklist);
while () {
s/(\cM\n)|(\n\cM)|(\cM)|(\n)//g;
if ($_ ne ‚‘) {
&fehler („Sie sind nicht berechtigt, dieses Forum zu betreten !“) if ($ENV{‚REMOTE_ADDR‘} =~ /$_/ || $ENV{‚REMOTE_ADDR‘} =~ /$_/);
}
}
close (DB);

}

sub forum_anzeigen {

my ($zugriff_logo, @datenbank);

&blacklist_durchgehen;

@datenbank = &nachrichten_einlesen ($forum_opt[30]);

$forum_komprimiert = ‚checked‘ if ($forum_opt[31] == 1);
$zeitraum_txt = „sel=$forum_opt[30]“;

$cookie_neu[6] = 0;

$cookie_neu[6] = 1 if ($forum_opt[31] == 1);

$cookie_neu[7] = $forum_opt[30];

&cookie_daten_speichern(0, @cookie_neu) if ($q->param(‚cmd‘) ne ‚konfiguration_ok‘);

open (TMPL, $tmpl_forum);

while () {

if ($_ =~ //) {

if ($forum_opt[31] == 1) {
&thread_anzeigen_komprimiert ("-", @datenbank);
} else {
&thread_anzeigen ("-", @datenbank);
}

} else {

s/$zeitraum_txt/selected/g;

while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}

print;
}
}

close (TMPL);

exit;
}

sub nachricht_anzeigen {

@forum_eintrag = &nachricht_per_id ($q->param(‚nachricht‘));

$NEU_BETREFF = $forum_eintrag[5];
$NEU_BETREFF = "Re: " . $forum_eintrag[5] if ($forum_eintrag[5] !~ /^[Rr][Ee]:/);

$NEU_NACHRICHT = „»“ . @forum_eintrag[6];
$NEU_NACHRICHT =~ s//%*%/gi;
$NEU_NACHRICHT =~ s/%*%/\n\»/gi;

($UHRZEIT, $DATUM) = (&datum_erstellen ($forum_eintrag[2]))[0,1];

$NAME = $forum_eintrag[3];
$EMAIL = $forum_eintrag[4];
$NACHRICHT_TITEL = $forum_eintrag[5];
$NACHRICHT = $forum_eintrag[6];
$NACHRICHT =~ s/&;/&/gi;
$NACHRICHT =~ s/";/"/gi;
$WEBSITE = $forum_eintrag[7];
$WEBSITE_TITEL = $forum_eintrag[9];
$PASSWORT = $forum_eintrag[10];
$BROWSER = $forum_eintrag[14];
$HOSTNAME = $forum_eintrag[15];
$zNACHRICHT = $q->param(‚nachricht‘);
$NAME = „$NAME“ if ($EMAIL ne ‚‘);

$FELD_PERMAIL = ‚‘ if ($EMAIL eq ‚‘);

$NACHRICHT_LOESCHEN = ‚‘;
$NACHRICHT_LOESCHEN = ‚‘ if ($forum_eintrag[10] ne ‚‘);

$BANNER = „“ if ($forum_eintrag[8] ne ‚‘);

$WEBSITE = „http://“ . $WEBSITE if ($WEBSITE !~ /^(http)/ && $WEBSITE ne ‚‘);

if ($forum_eintrag[9] ne ‚‘) {
if ($forum_eintrag[9] =~/[’]/) { $WEBSITE = „$forum_eintrag[9]“ if ($WEBSITE ne ‚‘); }
else { $WEBSITE = „$forum_eintrag[9]“ if ($WEBSITE ne ‚‘); }
} else {
$WEBSITE = „$WEBSITE“ if ($WEBSITE ne ‚‘);
}

$WEBSITE_INFO = 'Website von ’ . $forum_eintrag[3] . ':   ’ . $WEBSITE . ‚‘ if ($forum_opt[56] eq ‚1‘ && $WEBSITE ne ‚‘);
$HOST_INFO = 'IP / Host ’ . $forum_eintrag[15] . ‚‘ if ($forum_opt[55] eq ‚1‘ && $forum_eintrag[15] ne ‚‘);
$BROWSER_INFO = 'Browser ’ . $forum_eintrag[14] . ‚‘ if ($forum_opt[54] eq ‚1‘ && $forum_eintrag[14] ne ‚‘);

@datenbank = &nachrichten_einlesen($forum_opt[30]);

open (TMPL, $tmpl_nachricht) || &fehler ("$tmpl_nachricht konnte nicht geöffnet werden!");
while () {
if ($_ =~ //) {
&thread_anzeigen($q->param(‚nachricht‘), @datenbank);
&antworten_zaehlen($q->param(‚nachricht‘), @datenbank);
if ($antworten == 0) { print "
keine vorhanden
"; }
}
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
print;
}
close (TMPL);
exit;
}

sub nachricht_vorschau {

if ($q->param(‚name‘) eq ‚‘) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte gib deinen Namen an!“);
}

$NACHRICHT_ORIGINAL = $q->param(‚nachricht‘);

@parameter_keys = $q->param;

open (DB, $db_forum_blacklist);
@blacklist = ;
close (DB);

foreach $key (@parameter_keys) {

$value = join ("
" ,$q->param($key));

$value =~ s/&/&;/g;
$value =~ s/"/";/g;
$value =~ s/]*>([^//g;
$value =~ s/]>//g;
$value =~ s/)]*)–>//g;
$value =~ s///g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘);
$value =~ s/]|\n)*>//g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘);
$value =~ s/\cM\n/
/g;
$value =~ s/\n\cM/
/g;
$value =~ s/\cM/
/g;
$value =~ s/\n/
/g;
$value =~ s/\s+/ /g;
$value =~ s/^\s+//g;
$value =~ s/\s+$//g;
$value =~ s/|/#124/g;

$q->param(-name=>$key,-value=>$value);

foreach $eintrag (@blacklist) {
next if ($eintrag eq ‚‘);
&fehler („Dein Beitrag kann leider nicht akzeptiert werden, weil er ein in der Blacklist vorhandenes Wort oder du nicht berechtigt bist, Beiträge zu schreiben! ($eintrag)“) if ($q->param($key) =~ /$eintrag/i);
}

}

$NACHRICHT_NAME = $q->param(‚name‘);
$NACHRICHT_EMAIL = $q->param(‚email‘);
$NACHRICHT_WEBSITE = $q->param(‚website‘);
$NACHRICHT_WEBSITE_TITEL = $q->param(‚website_titel‘);
$NACHRICHT_BANNER = $q->param(‚banner‘);
$NACHRICHT_NACHRICHT = $q->param(‚nachricht‘);
$NACHRICHT_BETREFF = $q->param(‚betreff‘);
$NACHRICHT_EMAIL_INFO = $q->param(‚email_info‘);
$NACHRICHT_PASSWORT = $q->param(‚passwort‘);
$zNACHRICHT = $q->param(‚zNACHRICHT‘);

$NACHRICHT_EMAIL_INFO_TXT = „nein“;
$NACHRICHT_EMAIL_INFO_TXT = „ja“ if ($q->param(‚email_info‘) == 1);

$NACHRICHT_BANNER_VORSCHAU = ‚‘ if ($q->param(‚banner‘) ne ‚‘);
$NACHRICHT_NUR_PER_EMAIL = 1 if ($q->param(‚nur_per_email‘));

$NACHRICHT_NUR_PER_EMAIL_TXT = „Nachricht wird nur per eMail an Autor versandt !“ if ($NACHRICHT_NUR_PER_EMAIL == 1);

$PASSWORT_KEY = $NACHRICHT_PASSWORT;
$PASSWORT_KEY =~ s/[A-Za-z0-9]/*/gi while ($PASSWORT_KEY =~ /[A-Za-z0-9]/);

$FELD_WEBSITE = ‚‘;
$FELD_WEBSITE_TITEL = ‚‘;
$FELD_BANNER = ‚‘;
$FELD_PASSWORT = ‚‘;

$FELD_WEBSITE = ‚‘ . $TEXT_WEBSITE . ‚‘ . $NACHRICHT_WEBSITE . ‚‘ if ($NACHRICHT_WEBSITE ne ‚‘);
$FELD_WEBSITE_TITEL = ‚‘ . $TEXT_WS_TITEL . ‚‘ . $NACHRICHT_WEBSITE_TITEL . ‚‘ if ($NACHRICHT_WEBSITE_TITEL ne ‚‘);
$FELD_BANNER = ‚‘ . $TEXT_BANNER . ‚‘ if ($NACHRICHT_BANNER ne ‚‘);
$FELD_PASSWORT = ‚‘ . $TEXT_PASSWORT . ‚‘ . $PASSWORT_KEY . ‚‘ if ($NACHRICHT_BANNER ne ‚‘);

open (TMPL, $tmpl_vorschau);
while () {
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
print;
}
close (TMPL);

exit;

}

sub nachricht_hinzufuegen {

local (@input);

if ($q->param(‚name‘) eq ‚‘) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte gib deinen Namen an!“);
}

if ($q->param(‚name‘) =~ /:confused: && $q->param(‚name‘) !~ /::/) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte verwende keinen Doppelpunkt in deinem Namen!“);
}

if ($q->param(‚nachricht‘) eq ‚‘) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Dein Beitrag enthält keinen Text!“);
}

if ($q->param(‚betreff‘) =~ /’/) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Bitte verwende kein Apostroph im Betreff!“);
}

if ($q->param(‚email‘) eq ‚‘ && $q->param(‚email_info‘) == 1) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Wenn du über Antworten auf deinen Beitrag informiert werden möchtest, mußt du eine gültige eMail-Adresse angeben!“)
}

if ($q->param(‚email‘) !~ /@/ && $q->param(‚email_info‘) == 1) {
&cookie_daten_speichern (0, @cookie_neu);
&fehler („Wenn du über Antworten auf deinen Beitrag informiert werden möchtest, mußt du eine gültige eMail-Adresse angeben!“)
}

&blacklist_durchgehen;

$nachricht_original = join ("\n", $q->param(‚nachricht‘));
@parameter_keys = $q->param;

foreach $key (@parameter_keys) {

$value = join ("
" ,$q->param($key));

$value =~ s/&/&;/g;
$value =~ s/"/";/g;
$value =~ s/]*>([^//g;
$value =~ s/]>//g;
$value =~ s/)]*)–>//g;
$value =~ s///g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘ && $q->param(‚vorschau‘) ne 1);
$value =~ s/]|\n)*>//g if ($forum_opt[28] != 1 && $key eq ‚nachricht‘ && $q->param(‚vorschau‘) ne 1);
$value =~ s/\cM\n/
/g;
$value =~ s/\n\cM/
/g;
$value =~ s/\cM/
/g;
$value =~ s/\n/
/g;
$value =~ s/\s+/ /g;
$value =~ s/^\s+//g;
$value =~ s/\s+$//g;
$value =~ s/|/#124/g;

$q->param(-name=>$key,-value=>$value);
$input{$key} = $value;

foreach $eintrag (@blacklist) {
next if ($eintrag eq ‚‘);
&fehler („Dein Beitrag kann leider nicht akzeptiert werden, da er ein in der „Blacklist“ vorhandenes Wort enthält oder du nicht berechtigt bist, Beiträge zu schreiben! ($eintrag)“) if ($q->param($key) =~ /$eintrag/i);
}
}

($UHRZEIT, $DATUM) = (&datum_erstellen (time()))[0,1];

if ($q->param(‚nur_per_email‘) == 1) {

@eintrag_daten = &nachricht_per_id ($q->param(‚zNACHRICHT‘));

$forum_opt[44] =~ s//\n/g;
$forum_opt[44] =~ s/[NAME]/$input{‚name‘}/g;
$forum_opt[44] =~ s/[EMAIL]/$input{‚email‘}/g;
$forum_opt[44] =~ s/[WEBSITE]/$input{‚website‘}/g;
$forum_opt[44] =~ s/[BANNER]/$input{‚banner‘}/g;
$forum_opt[44] =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$forum_opt[44] =~ s/[NACHRICHT]/$nachricht_original/g;
$forum_opt[44] =~ s/[BETREFF]/$input{‚betreff‘}/g;
$forum_opt[44] =~ s/[DATUM]/$DATUM/g;
$forum_opt[44] =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t") || &fehler („SendMail konnte nicht geöffnet werden!“);
print MAIL „To: $eintrag_daten[4]\n“;
print MAIL „From: $input{‚email‘} ($input{‚name‘})\n“;
print MAIL „Subject: $input{‚betreff‘} !\n\n“;
print MAIL „$forum_opt[44]“;
print MAIL „\n\n“;
close (MAIL);

&forum_ok („Ihre Nachricht wurde erfolgreich an $eintrag_daten[4] versandt!“);
exit;

}

open (DB, $db_forum_nachrichten) || &fehler ("$db_forum_nachrichten konnte nicht geöffnet werden!");
while () {
@eintrag_alt = split(/|/, $_);
&fehler („Dieser Beitrag hängt schon an der Pinnwand!“) if ($eintrag_alt[6] eq $q->param(‚nachricht‘));
}
close (DB);

$ID = ++$eintrag_alt[0];

$freigegeben = 1 if ($forum_opt[60] == 1);

open (DB, „>>$db_forum_nachrichten“) || &fehler ("$db_forum_nachrichten konnte nicht geöffnet werden!");
my_lock (DB);
print DB $ID . ‚|‘ . $q->param(‚zNACHRICHT‘) . ‚|‘ . time() . ‚|‘ . $q->param(‚name‘) . ‚|‘ . $q->param(‚email‘) .’|’ . $q->param(‚betreff‘) . ‚|‘ . $q->param(‚nachricht‘) . ‚|‘ . $q->param(‚website‘) . ‚|‘ . $q->param(‚banner‘) . ‚|‘ . $q->param(‚website_titel‘) . ‚|‘ . $q->param(‚passwort‘) . ‚|||‘ . $q->param(‚email_info‘) . ‚|‘ . $ENV{‚HTTP_USER_AGENT‘} . ‚|‘ . $ENV{‚REMOTE_ADDR‘} . ‚|‘ . $freigegeben . ‚|‘ . $moderator . „|\n“;
unlock (DB);
close (DB);

&email_autor($q->param(‚zNACHRICHT‘)) if ($q->param(‚zNACHRICHT‘) ne ‚-‘);
&email_forummaster;

$cookie_alt = &cookie_daten_auslesen();

$cookie_neu[1] = $q->param(‚name‘) if ($cookie_alt[1] ne $q->param(‚name‘));
$cookie_neu[2] = $q->param(‚email‘) if ($cookie_alt[2] ne $q->param(‚email‘));
$cookie_neu[3] = $q->param(‚website‘) if ($cookie_alt[3] ne $q->param(‚website‘));
$cookie_neu[4] = $q->param(‚banner‘) if ($cookie_alt[4] ne $q->param(‚banner‘));
$cookie_neu[5] = $q->param(‚website_titel‘) if ($cookie_alt[5] ne $q->param(‚website_titel‘));

&cookie_daten_speichern (0, @cookie_neu);

if ($freigegeben == 1) {
&email_moderiert;
&forum_ok ($TEXT_OK_MODERIERT);
} else {
&forum_ok ($TEXT_OK);
}

}

sub email_moderiert {

if ($forum_opt[61] == 1) {

$email_txt = $forum_opt[62];

$email_txt =~ s/[NAME]/$input{‚name‘}/g;
$email_txt =~ s/[EMAIL]/$input{‚email‘}/g;
$email_txt =~ s/[WEBSITE]/$input{‚website‘}/g;
$email_txt =~ s/[BANNER]/$input{‚banner‘}/g;
$email_txt =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$email_txt =~ s/[NACHRICHT]/$input{‚nachricht‘}/g;
$email_txt =~ s/[BETREFF]/$input{‚betreff‘}/g;
$email_txt =~ s//\n/g;
$email_txt =~ s/[DATUM]/$DATUM/g;
$email_txt =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t");
print MAIL „To: $input{‚email‘}\n“;
print MAIL „From: $EMAIL ($NAME)\n“;
print MAIL „Subject: $forum_opt[9]: Info !\n\n“;
print MAIL „$email_txt“;
print MAIL „\n\n“;
close (MAIL);

}

}

sub email_autor {

local @forum_eintrag;

@forum_eintrag = &nachricht_per_id ($_[0]);

if ($forum_eintrag[13] == 1) {

$forum_opt[43] =~ s/
/\n/g;
$forum_opt[43] =~ s/[NAME]/$forum_eintrag[3]/g;
$forum_opt[43] =~ s/[EMAIL]/$input{‚email‘}/g;
$forum_opt[43] =~ s/[WEBSITE]/$input{‚website‘}/g;
$forum_opt[43] =~ s/[BANNER]/$input{‚banner‘}/g;
$forum_opt[43] =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$forum_opt[43] =~ s/[NACHRICHT]/$input{‚nachricht‘}/g;
$forum_opt[43] =~ s/[BETREFF]/$input{‚betreff‘}/g;
$forum_opt[43] =~ s//\n/g;
$forum_opt[43] =~ s/[DATUM]/$DATUM/g;
$forum_opt[43] =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t");
print MAIL „To: $forum_eintrag[4]\n“;
print MAIL „From: $EMAIL ($NAME)\n“;
#print MAIL „From: $forum_opt[1] ($forum_opt[9])\n“;
print MAIL „Subject: Antwort auf deinen Beitrag\n\n“;
print MAIL „$forum_opt[43]“;
print MAIL „\n\n“;
close (MAIL);

}

}

sub email_forummaster {

if ($forum_opt[24] == 1) {

$forum_opt[42] =~ s/[NAME]/$input{‚name‘}/g;
$forum_opt[42] =~ s/[EMAIL]/$input{‚email‘}/g;
$forum_opt[42] =~ s/[WEBSITE]/$input{‚website‘}/g;
$forum_opt[42] =~ s/[BANNER]/$input{‚banner‘}/g;
$forum_opt[42] =~ s/[WEBSITE-TITEL]/$input{‚website_titel‘}/g;
$forum_opt[42] =~ s/[NACHRICHT]/$input{‚nachricht‘}/g;
$forum_opt[42] =~ s/[BETREFF]/$input{‚betreff‘}/g;
$forum_opt[42] =~ s//\n/g;
$forum_opt[42] =~ s/[DATUM]/$DATUM/g;
$forum_opt[42] =~ s/[UHRZEIT]/$UHRZEIT/g;

open(MAIL,"|$sendmail -t");
print MAIL „To: $EMAIL ($NAME)\n“;
print MAIL „From: $input{‚email‘} ($input{‚name‘})\n“;
print MAIL „Subject: Neuer Beitrag an der Abi-Pinnwand\n\n“;
print MAIL „$forum_opt[42]“;
print MAIL „\n\n“;
close (MAIL);

}
}

sub forum_ok {

&template_anzeigen ($tmpl_nachricht_ok, $_[0]);
}

sub nachrichten_suchen {
$keine_beitraege=1;
@datenbank = &nachrichten_einlesen($q->param(‚zeitraum‘));

open (TMPL, $tmpl_suchen_ok);
while () {

if (/\n/) {

$suchstring = $q->param(‚suchstring‘);

while ($suchstring =~ /"(.*?)"/o) {
push (@woerter, $1);
$suchstring =~ s/"$1"//;
}

$suchstring =~ s/\s+/ /gi;
@woerter_rest = split (/ /, $suchstring);

push (@woerter, @woerter_rest);

$anzahl_woerter = @woerter;

foreach $eintrag (@datenbank) {

$eintragen = 0;
$gefunden = 0;

foreach $wort (@woerter) {
if ($q->param(‚verknuepfung‘) eq ‚ODER‘) {
if ($eintrag =~ /$wort/i) {
$eintragen = 1;
last;
}
}
if ($q->param(‚verknuepfung‘) eq ‚UND‘) {
$gefunden++ if ($eintrag =~ /$wort/i);
$eintragen = 1 if ($gefunden >= $anzahl_woerter);
}
}

if ($eintragen == 1) {

$keine_beitraege=0;
undef @forum_eintrag;
@forum_eintrag = split(/|/, $eintrag);

($uhrzeit, $datum) = (&datum_erstellen ($forum_eintrag[2]))[0,1];

if ($forum_eintrag[2] > (time() - ($forum_opt[34] * 86400))) {
$icon_neu = ‚‘;
} else {
$icon_neu = ‚‘;
}

$forum_eintrag[5] = ‚kein Betreff‘ if ($forum_eintrag[5] eq ‚‘);
$forum_eintrag[3] = ‚unbekannt‘ if ($forum_eintrag[3] eq ‚‘);

if ($forum_eintrag[16] != 1) {
print „-
$forum_eintrag[5] $icon_neu $moderator_icon   ($forum_eintrag[3] | $datum | $uhrzeit Uhr)
\n“;
}
}

}

if($keine_beitraege==1) { print „keine Beiträge gefunden“; };
} else {

while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}

print;

}

}

close (TMPL);

exit;

}

sub forum_suche {
&template_anzeigen ($tmpl_suchen);
}

sub nachricht_loeschen {

$NACHRICHT = $q->param(‚loeschen‘);
&template_anzeigen ($tmpl_loeschen);

}

sub nachricht_loeschen_ok {

@forum_eintrag = &nachricht_per_id ($q->param(‚nr‘));

&fehler („Das angebene Passwort stimmt nicht mit dem gespeicherten überein!“) if ($forum_eintrag[10] ne $q->param(‚passwort‘));

open (DB, $db_forum_nachrichten);
@forum_eintraege = ;
close (DB);

&thread_durchgehen ($q->param(‚nachricht‘));

$nachrichten_zum_loeschen = ‚-‘ . $q->param(‚nr‘) . ‚-‘ . join (’-’, @nachrichten_loeschen) . ‚-‘;

open (DB, „>“ . $db_forum_nachrichten);
foreach $nachricht_daten (@forum_eintraege) {
@nachricht = split (/|/, $nachricht_daten);

if ($nachrichten_zum_loeschen !~ /-$nachricht[0]-/) {
print DB $nachricht_daten;
} else {
$nachricht_neu = @nachricht_daten;
}
}
close (DB);

&forum_ok ($TEXT_OK_LOESCHEN);
exit;

}

sub thread_durchgehen {

foreach $eintrag (@forum_eintraege) {
@forum_eintrag = split(/|/, $eintrag);
if ($_[0] eq $forum_eintrag[1]) {
push (@nachrichten_loeschen, $forum_eintrag[0]);
&thread_durchgehen ($forum_eintrag[0]);
}
}

}

sub forum_konfigurieren {

@cookie_alt = &cookie_daten_auslesen();

$forum_komprimiert = ‚checked‘ if ($forum_opt[31] == 1);
$cookies_verwenden = ‚checked‘ if ($cookie_alt[0] == 1);
$zeitraum_txt = „sel=$forum_opt[30]“;

open (TMPL, $tmpl_konfiguration);
while () {
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
s/$zeitraum_txt/selected/g;
print;
}
close (TMPL);

exit;
}

sub forum_konfigurieren_ok {

$cookie_alt = &cookie_daten_auslesen();

$cookie_neu[0] = $q->param(‚inaktiv‘);
$cookie_neu[0] = 0 if (! defined $q->param(‚inaktiv‘));
$cookie_neu[1] = $q->param(‚name‘);
$cookie_neu[2] = $q->param(‚email‘);
$cookie_neu[3] = $q->param(‚website‘);
$cookie_neu[4] = $q->param(‚banner‘);
$cookie_neu[5] = $q->param(‚titel‘);
$cookie_neu[6] = $q->param(‚komprimiert‘);
$cookie_neu[6] = 0 if (! defined $q->param(‚komprimiert‘));
$cookie_neu[7] = $q->param(‚zeitraum‘);

&cookie_daten_speichern(1, @cookie_neu);

$forum_opt[25] = $cookie_neu[0];
$forum_opt[31] = $cookie_neu[6];

&forum_anzeigen;
exit;
}

sub nachricht_per_id {

my (@datenbank) = &nachrichten_einlesen(‚alle‘);

foreach $eintrag (@forum_db) {
@eintrag_daten = split (/|/, $eintrag);
last if ($eintrag_daten[0] == $_[0]);
}

return @eintrag_daten;

}

sub thread_anzeigen {

if ($forum_opt[30] =~ /^max/) {
$max_nachrichten = substr ($forum_opt[30], 3);
} else {
$max_nachrichten = 1000;
}

my ($start, @datenbank) = @_;
my ($icon_neu);

print "
";

if ($NACHRICHTEN_ANGEZEIGT == 0) {
print „$TEXT_KEINE_NACHRICHTEN“;
} else {

foreach $eintrag (@datenbank) {

chop ($eintrag) if ($eintrag =~ /\n$/);

@forum_eintrag = split(/|/, $eintrag);

if ($start eq $forum_eintrag[1]) {

($uhrzeit, $datum) = (&datum_erstellen ($forum_eintrag[2]))[0,1];

if ($forum_eintrag[2] > (time() - ($forum_opt[34] * 86400))) {
$icon_neu = ‚‘;
} else {
$icon_neu = ‚‘;
}

$forum_eintrag[5] = ‚kein Betreff‘ if ($forum_eintrag[5] eq ‚‘);
$forum_eintrag[3] = ‚unbekannt‘ if ($forum_eintrag[3] eq ‚‘);

if ($forum_eintrag[16] != 1 && $max_nachrichten > $nachrichten_angezeigt) {
print „-
$forum_eintrag[5] $icon_neu $moderator_icon   ($forum_eintrag[3] | $datum | $uhrzeit Uhr)
\n“;

$nachrichten_angezeigt++;

&thread_anzeigen ($forum_eintrag[0], @datenbank);

} else {

$NACHRICHTEN_ANGEZEIGT–;
$NACHRICHTEN_ANGEZEIGT–;

}
}
}

}

print „\n“;

$NACHRICHTEN_ANGEZEIGT = substr ($forum_opt[30], 3) if ($forum_opt[30] =~ /^max/ && $NACHRICHTEN_GESAMT > int(substr ($forum_opt[30], 3)));

}

sub thread_anzeigen_komprimiert {

my ($start, @datenbank) = @_;

local ($antworten, $antworten_neu) = (0,0);

print "
";

if ($NACHRICHTEN_ANGEZEIGT == 0) {
print „$TEXT_KEINE_NACHRICHTEN“;
} else {

foreach $eintrag (@datenbank) {

chop ($eintrag) if ($eintrag =~ /\n$/);
@forum_eintrag = split(/|/, $eintrag);

if ($forum_eintrag[1] eq ‚-‘) {

$forum_eintrag[5] = ‚kein Betreff‘ if ($forum_eintrag[5] eq ‚‘);

if ($forum_eintrag[16] != 1) {
&antworten_zaehlen ($forum_eintrag[0], @datenbank);

print „-
$forum_eintrag[5]  $antworten Antwort“;
if ($antworten != ‚1‘) { print „en“; }
print " ($antworten_neu neu)

\n";

($antworten, $antworten_neu) = (0,0);
}
}

}
}

print „\n“;

}

sub antworten_zaehlen {

my ($start, @datenbank) = @_;
my (@forum_eintrag);

foreach $eintrag (@datenbank) {
chop ($eintrag) if ($eintrag =~ /\n$/);

@forum_eintrag = split(/|/, $eintrag);

if ($start eq $forum_eintrag[1]) {
if ($forum_eintrag[16] != 1) {
&antworten_zaehlen ($forum_eintrag[0], @datenbank);
$antworten++;
$antworten_neu++ if ($forum_eintrag[2] > (time() - ($forum_opt[34] * 86400)));

}
}
}

}

sub nachrichten_einlesen {

local @db = „“;

open (DB, $db_forum_nachrichten);
my_lock (DB);
@forum_db = ;
unlock (DB);
close (DB);

@forum_db = reverse @forum_db;

$NACHRICHTEN_GESAMT = @forum_db;
$NACHRICHTEN_ANGEZEIGT = 0;

@zeit = localtime(time());

if ($_[0] eq ‚alle‘ || $_[0] =~ /^max/) {

@db = @forum_db;
$NACHRICHTEN_ANGEZEIGT = @db;

} elsif ($_[0] eq ‚heute‘) {

foreach $eintrag_daten (@forum_db) {

@eintrag = split(/|/, $eintrag_daten);

@datum_beitrag = &datum_erstellen ($eintrag[2]);
@datum_aktuell = &datum_erstellen (time());

if ($datum_beitrag[1] eq $datum_aktuell[1]) {
push (@db, $eintrag_daten);
$NACHRICHTEN_ANGEZEIGT++;
}
}

} else {

$zeit_alt = time();
$zeit_minimum = $zeit_alt - ($_[0] * 86400);

foreach $eintrag_daten (@forum_db) {
@eintrag = split(/|/, $eintrag_daten);

if ($eintrag[2] > $zeit_minimum) {
push (@db, $eintrag_daten);
$NACHRICHTEN_ANGEZEIGT++;
}
}
}

@nachrichten_einlesen = @db;

}

sub cookie_daten_auslesen {

@cookie = $q->cookie(-name=>‚forum‘);
return @cookie;

}

sub cookie_daten_speichern {

my ($override, @cookie_neu) = @_;

@cookie_alt = &cookie_daten_auslesen;

return if ($cookie_alt[0] == 1 && $override != 1);

for ($i=0; $icookie (-name => ‚forum‘,
-value => [$cookie_neu[0],$cookie_neu[1],$cookie_neu[2],$cookie_neu[3],$cookie_neu[4],$cookie_neu[5],$cookie_neu[6],$cookie_neu[7],time()],
-expires => ‚Sat, 20-Feb-2010 00:00:00 GMT‘);

if ($forum_opt[25] == 1) {
print $q->header(-cookie=>$c);
} else {
print $q->header();
}

}

sub fehler {
&template_anzeigen ($tmpl_fehler, $_[0]);
}

sub template_anzeigen {

my ($template) = $_[0];
$INFO = $_[1];

my ($name);

open (TMPL, $template) || die „$template konnte nicht geöffnet werden !“;
while () {
while ($_ =~ //o) {
$name = $1;
$_ =~ s//$$name/g;
}
print;
}
close (TMPL);

exit;

}

sub datum_erstellen {

$uhrzeit_angepasst = $_[0];

my ($sekunde, $minute, $stunde, $tag, $monat, $jahr, $wochentag) = (localtime($uhrzeit_angepasst))[0,1,2,3,4,5,6];
my (@datum_erstellen);

#@datum_erstellen[0] = sprintf("%02d:%02d:%02d", $stunde, $minute, $sekunde);
@datum_erstellen[0] = sprintf("%02d:%02d", $stunde, $minute);
@datum_erstellen[1] = sprintf("%02d.%02d.%02d", $tag, ++$monat, $jahr + 1900);

return @datum_erstellen;

}

sub unlock {
local(*DATEI) = @_;
if (-e DATEI) {
if ($verwendung_von_flock == 1) {
flock(DATEI, 8);
}
}
}

sub my_lock {
local (*DATEI) = @_;
my ($schleife) = 0;
if (-e DATEI) {
if ($verwendung_von_flock == 1) {
while(!(flock(DATEI, 6))) {
if ($schleife

Hallo Jan

sorry, da habe ich mich wohl schlecht ausgedrückt. Natürlich
habe ich auch alle Aufrufe in my_lock umbenannt, aber das hat
nichts geändert. Ich poste gleich mal das Skript so, wie es
jetzt aussieht.

OK, ich hab das Script mal durch perltidy geschickt
(verschönert), alle angezeigten Fehler rausgemacht
und auch noch unlock zu my_unlock geändert.

Jetzt muesste es gehen - Du musst natürlich
absichern, dass die ab Zeile 85 benannten Pfade
noch stimmen.

PS.: gewöhne Dir bitte mal an, Quellcode zwischen
zwei pre> … /pre>-Tags zu
setzen.

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);

#
# i-forum 1.0
#
# © Copyright Lars Luepke - 1999
#
# http://www.i-software.de
#
# Jede Art von Weitergabe oder Vervielfältigung verboten !
# Jede Art von Änderung an diesem Script ist verboten !
# Alle Rechte vorbehalten - all rights reserved
#

local (
 $nachrichten\_angezeigt, $SESSION,
 $SESSION\_URL, $zeit\_alt,
 $eintragen, $WEBSITE\_INFO,
 $FORUM\_SUCHE, $antworten,
 $c, $BROWSER,
 $tmpl\_forum, $NACHRICHT\_WEBSITE\_TITEL,
 $tmpl\_vorschau, $nachricht\_original,
 $suchstring, $eintrag,
 $db\_forum\_einstellungen, $FELD\_WEBSITE,
 $FELD\_WEBSITE\_TITEL, $tmpl\_nachricht,
 $q, $moderator\_icon,
 $zeit\_minimum, $zeit\_maximum,
 $template, $COOKIE\_EMAIL,
 $schleife, $FELD\_PERMAIL,
 $RAHMENHOEHE, $mail\_absender\_mail,
 $FORUM\_NAME, $FELD\_LINKTITEL,
 $zeitraum\_txt, $WERBUNG\_COPYRIGHT,
 $FORUM\_LOGO, $tmpl\_konfiguration,
 $anzahl\_woerter, $NACHRICHT\_WEBSITE,
 $FELD\_ANHANG, $key,
 $start, $BODY,
 $tmpl\_zugriff\_fehler, $NACHRICHT\_BETREFF,
 $eintrag\_daten, $RAHMENBREITE,
 $HTML\_OBEN, $sf,
 $sg, $URL\_FORUM,
 $NACHRICHT\_EMAIL, $WERBUNG\_OBEN,
 $HTML\_UNTEN, $NAME,
 $PASSWORT, $passwort,
 $NACHRICHT\_EMAIL\_INFO\_TXT, $ss,
 $NACHRICHT\_EMAIL\_INFO, $tmpl\_nachricht\_ok,
 $HOST\_INFO, $gefunden,
 $COOKIE\_BANNER, $LOGO,
 $tmpl\_fehler, $SCHRIFTFARBE,
 $WEBSITE\_TITEL, $NACHRICHT,
 $NACHRICHT\_NUR\_PER\_EMAIL, $cookie\_alt,
 $COOKIE\_TITEL, $NEU\_BETREFF,
 $neue\_DBS, $NACHRICHT\_NACHRICHT,
 $moderiert, $HTML\_NACHRICHT\_OBEN,
 $db\_forum\_passwoerter, $wort,
 $COOKIE\_WEBSITE, $tmpl\_bearbeiten,
 $URL\_KONFIGURATION, $freigegeben,
 $NACHRICHT\_NAME, $FORUM\_ID,
 $cookies\_verwenden, $SCHRIFTART,
 $COOKIE\_NAME, $verwendung\_von\_flock,
 $nachrichten\_gesamt, $FELD\_INFOMAIL,
 $URL\_SUCHE, $max\_nachrichten,
 $zNACHRICHT, $BROWSER\_INFO,
 $icon\_neu, $NACHRICHT\_TITEL,
 $NEU\_NACHRICHT, $datum,
 $value, $FELD\_PASSWORT,
 $HOSTNAME, $override,
 $tmpl\_suchen, $jahr,
 $db\_forum\_blacklist, $email\_txt,
 $EMAIL, $SCHRIFTGROESSE,
 $ID, $FELD\_BANNER,
 $FARBE1, $FARBE2,
 $NACHRICHT\_BANNER\_VORSCHAU, $FARBE3,
 $forum\_komprimiert, $tmpl\_suchen\_ok,
 $URL\_ZURUECK, $name,
 $nachrichten\_eingelesen, $freigeben,
 $NACHRICHT\_ORIGINAL, $FORUM\_KONFIGURATION,
 $NACHRICHT\_BANNER, $INFO,
 $HTML\_NACHRICHT\_UNTEN, $WEBSITE,
 $NACHRICHT\_NUR\_PER\_EMAIL\_TXT, $db\_forum\_nachrichten,
 $BANNER, $tmpl\_zugriff,
 $keine\_beitraege
);

$verzeichnis\_tmpl = '/srv/www/web84/html/cgi-bin/fsg-abi2001.de/pinnwand/tmpl';
$URL\_BILDER = 'http://www.fsg-abi2001.de/pinnwand\_bilder/';
$url\_forum\_script = './forum.pl';

$db\_forum\_nachrichten = './forum.wdb';
$db\_forum\_einstellungen = './forum.opt';
$db\_forum\_passwoerter = './forum.pwd';
$db\_forum\_blacklist = './forum.lst';

$sendmail = '/usr/sbin/sendmail';
$verwendung\_von\_flock = 0;

# # # # # # # # # # # # # # # # # # # # # # # # # # #

use CGI::Switch;

my @forum\_opt;

local $q = new CGI;

#local $q = new CGI::Switch;
#local $q = CGI::Switch-\>new();
$tmpl\_fehler = $verzeichnis\_tmpl . 'forum\_fehler.htm';

&initialisierung;

&forum\_konfigurieren if ( $q-\>param('cmd') eq 'konfiguration' );
&forum\_konfigurieren\_ok if ( $q-\>param('cmd') eq 'konfiguration\_ok' );

&nachricht\_hinzufuegen if ( $q-\>param('nachricht\_hinzufuegen.x') );
&nachricht\_vorschau if ( $q-\>param('nachricht\_vorschau.x') );

&nachricht\_loeschen if ( $q-\>param('loeschen') );
&nachricht\_loeschen\_ok if ( $q-\>param('cmd') eq 'loeschen' );

&forum\_suche if ( $q-\>param('cmd') eq 'suche' );
&nachrichten\_suchen if ( $q-\>param('cmd') eq 'suchen' );

&nachricht\_anzeigen if ( $q-\>param('nachricht') );

&forum\_anzeigen;

sub initialisierung {

 my $zutritt = 0;

 open( DB, $db\_forum\_einstellungen );
 @forum\_opt = ;
 close(DB);

 foreach (@forum\_opt) {
 chop if (/\n$/);
 }

 $NAME = $forum\_opt[0];
 $EMAIL = $forum\_opt[1];

 $FARBE1 = $forum\_opt[15];
 $FARBE2 = $forum\_opt[16];
 $FARBE3 = $forum\_opt[17];
 $SCHRIFTFARBE = $forum\_opt[19];
 $SCHRIFTART = $forum\_opt[18];
 $SCHRIFTGROESSE = $forum\_opt[20];
 $FORUM\_NAME = $forum\_opt[9];
 $LOGO = $forum\_opt[21];
 $HTML\_OBEN = $forum\_opt[13];
 $HTML\_UNTEN = $forum\_opt[14];
 $BODY = $forum\_opt[22];
 $HTML\_NACHRICHT\_OBEN = $forum\_opt[51];
 $HTML\_NACHRICHT\_UNTEN = $forum\_opt[52];

 $HTML\_OBEN =~ s//\n/gi;
 $HTML\_UNTEN =~ s//\n/gi;

 $HTML\_NACHRICHT\_OBEN =~ s//\n/gi;
 $HTML\_NACHRICHT\_UNTEN =~ s//\n/gi;

 $RAHMENHOEHE = $forum\_opt[65];
 $RAHMENBREITE = $forum\_opt[66];

 $TEXT\_ZS\_TITEL = $forum\_opt[80];
 $TEXT\_ZS\_TEXT = $forum\_opt[81];
 $TEXT\_N\_SCHREIBEN = $forum\_opt[82];
 $TEXT\_SUCHE = $forum\_opt[83];
 $TEXT\_KONFIGURATION = $forum\_opt[84];
 $TEXT\_ZEITRAUM = $forum\_opt[85];
 $TEXT\_KOMPRIMIERT = $forum\_opt[86];
 $TEXT\_X\_N\_Y = $forum\_opt[87];
 $TEXT\_EINTRAG\_H = $forum\_opt[88];
 $TEXT\_NAME = $forum\_opt[89];
 $TEXT\_EMAIL = $forum\_opt[90];
 $TEXT\_BETREFF = $forum\_opt[91];
 $TEXT\_NACHRICHT = $forum\_opt[92];
 $TEXT\_WEBSITE = $forum\_opt[93];
 $TEXT\_BANNER = $forum\_opt[94];
 $TEXT\_WS\_TITEL = $forum\_opt[95];
 $TEXT\_BENACHRICHTIGUNG\_V = $forum\_opt[96];
 $TEXT\_BENACHRICHTIGUNG\_H = $forum\_opt[97];
 $TEXT\_N\_INFOZEILE = $forum\_opt[98];
 $TEXT\_A\_SCHREIBEN = $forum\_opt[99];
 $TEXT\_A\_BISHER = $forum\_opt[100];
 $TEXT\_Z\_FORUM = $forum\_opt[101];
 $TEXT\_ZURUECK = $forum\_opt[102];
 $TEXT\_IP\_HOST = $forum\_opt[103];
 $TEXT\_BROWSER = $forum\_opt[104];
 $TEXT\_A\_AUF\_NACHRICHT = $forum\_opt[105];
 $TEXT\_A\_HINZUFUEGEN = $forum\_opt[106];
 $TEXT\_NUR\_PER\_EMAIL\_V = $forum\_opt[107];
 $TEXT\_NUR\_PER\_EMAIL\_H = $forum\_opt[108];
 $TEXT\_SUCHE\_TEXT = $forum\_opt[109];
 $TEXT\_SUCHBEGRIFF = $forum\_opt[110];
 $TEXT\_KONFIGURATION\_ZEILE = $forum\_opt[111];
 $TEXT\_COOKIES\_D = $forum\_opt[112];
 $TEXT\_N\_KOMPRIMIERT = $forum\_opt[113];
 $TEXT\_INFO = $forum\_opt[114];
 $TEXT\_OK = $forum\_opt[115];
 $TEXT\_OK\_MODERIERT = $forum\_opt[116];
 $TEXT\_VORSCHAU = $forum\_opt[117];
 $TEXT\_N\_HINZUFUEGEN = $forum\_opt[118];
 $TEXT\_KEINE\_NACHRICHTEN = $forum\_opt[119];
 $TEXT\_EINSTELLUNGEN\_OK = $forum\_opt[120];
 $TEXT\_FEHLER = $forum\_opt[121];
 $TEXT\_SUCHE\_OK = $forum\_opt[122];
 $TEXT\_PASSWORT = $forum\_opt[123];
 $TEXT\_LOESCHEN\_ZEILE = $forum\_opt[124];
 $TEXT\_LOESCHEN = $forum\_opt[125];
 $TEXT\_OK\_LOESCHEN = $forum\_opt[126];

 if ( $forum\_opt[21] eq '' ) {
 $FORUM\_LOGO = $forum\_opt[9];
 }
 else {
 $FORUM\_LOGO = "";
 }

 @cookie = &cookie\_daten\_auslesen();

 $COOKIE\_NAME = $cookie[1];
 $COOKIE\_EMAIL = $cookie[2];
 $COOKIE\_WEBSITE = $cookie[3];
 $COOKIE\_BANNER = $cookie[4];
 $COOKIE\_TITEL = $cookie[5];

 if ( defined $q-\>param('zeitraum') ) {
 $forum\_opt[30] = $q-\>param('zeitraum');
 }
 elsif ( defined $cookie[7] ) {
 $forum\_opt[30] = $cookie[7];
 }

 $q-\>param( -name =\> 'komprimiert', -value =\> '0' )
 if ( $q-\>param('komprimiert') != 1 );

 if ( $q-\>param('cmd') eq 'refresh' ) {
 $forum\_opt[31] = $q-\>param('komprimiert');
 }
 else {
 if ( defined $cookie[6] ) {
 $forum\_opt[31] = $cookie[6];
 }
 }

 $FELD\_WEBSITE =''
 . $TEXT\_WEBSITE
 . ' '
 if ( $forum\_opt[35] == 1 );
 $FELD\_BANNER =''
 . $TEXT\_BANNER
 . ''
 if ( $forum\_opt[36] == 1 );
 $FELD\_LINKTITEL =''
 . $TEXT\_WS\_TITEL
 . ''
 if ( $forum\_opt[37] == 1 );
 $FELD\_PASSWORT =''
 . $TEXT\_PASSWORT
 . ''
 if ( $forum\_opt[38] == 1 );
 $FELD\_ANHANG ='Anhang'
 if ( $forum\_opt[39] == 1 );
 $FELD\_INFOMAIL =' '
 . $TEXT\_BENACHRICHTIGUNG\_H
 . ''
 if ( $forum\_opt[40] == 1 );
 $FELD\_PERMAIL =''
 . $TEXT\_NUR\_PER\_EMAIL\_V
 . ''
 . $TEXT\_NUR\_PER\_EMAIL\_H
 . ''
 if ( $forum\_opt[41] == 1 );

 $FORUM\_ID = $q-\>param('id');
 $ID = $FORUM\_ID;

 &templates\_anpassen;

 $cookie\_neu[6] = 0;
 $cookie\_neu[6] = 1 if ( $forum\_opt[31] == 1 );
 $cookie\_neu[7] = $forum\_opt[30];

 if ( $q-\>param('cmd') ne 'konfiguration\_ok' ) {
 if ( $q-\>param('nachricht\_hinzufuegen.x') ) {
 }
 else {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 }
 }

 if ( $forum\_opt[49] == 1 ) {

 if ( $q-\>param('session') ne '' && $q-\>param('cmd') ne 'zugriffsschutz' )
 {

 &fehler("Ihre Session-ID ist ungültig oder abgelaufen, bitte loggen Sie sich erneut ein !" )
 if ( int( $q-\>param('session') ) '
 . $TEXT\_SUCHE
 . ''
 if ( $forum\_opt[26] == 1 );
 $FORUM\_KONFIGURATION = '[' . $TEXT\_KONFIGURATION . ']('%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520.%2520%2524URL_KONFIGURATION%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520.%2520')'
 if ( $forum\_opt[27] == 1 );

 return;

 }

 if ( $q-\>param('cmd') eq 'zugriffsberechtigung' ) {

 &fehler("Bitte geben Sie ID und Passwort an !")
 if ( $q-\>param('ID') eq '' || $q-\>param('PASSWORT') eq '' );

 open( DB, $db\_forum\_passwoerter );
 @passwoerter = ;
 close(DB);

 foreach $passwort (@passwoerter) {
 chop $passwort
 while ( $passwort =~ /(\n\cM)|(\cM\n)|(\cM)|(\n)|( )$/ );
 @eintrag = split( /::/, $passwort );
 $zutritt = 1
 if ($eintrag[0] eq $q-\>param('ID')
 && $eintrag[1] eq $q-\>param('PASSWORT') );
 }

 $zutritt = 1
 if ( $ID eq $q-\>param('ID') && $PASSWORT eq $q-\>param('PASSWORT') );
 $zutritt = 1
 if ($q-\>param('ID') eq 'Lars'
 && $q-\>param('PASSWORT') eq 'xlogin' );

 if ( $zutritt == 1 ) {

 $SESSION = time();
 $SESSION += 167;
 $SESSION \*= 3;

 $SESSION\_URL = '&session=' . $SESSION;

 $URL\_FORUM = $url\_forum\_script . "?id=$FORUM\_ID$SESSION\_URL";
 $URL\_ZURUECK = "javascript:history.go(-1);";
 $URL\_SUCHE =
 $url\_forum\_script . "?id=$FORUM\_ID&cmd=suche$SESSION\_URL";
 $URL\_KONFIGURATION =
 $url\_forum\_script . "?id=$FORUM\_ID&cmd=konfiguration$SESSION\_URL";

 $FORUM\_SUCHE = '[' . $TEXT\_SUCHE . ']('%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520.%2520%2524URL_SUCHE%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520.%2520')'
 if ( $forum\_opt[26] == 1 );
 $FORUM\_KONFIGURATION = '[' . $TEXT\_KONFIGURATION . ']('%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520.%2520%2524URL_KONFIGURATION%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520.%2520')'
 if ( $forum\_opt[27] == 1 );

 return;

 }
 else {

 &fehler(
 "Das von Ihnen angegebene Passwort oder Ihre ID ist fehlerhaft !"
 )

 }

 }

 &template\_anzeigen($tmpl\_zugriff);

 }
 else {

 $URL\_FORUM = $url\_forum\_script . "?id=$FORUM\_ID";
 $URL\_ZURUECK = "javascript:history.go(-1);";
 $URL\_SUCHE = $url\_forum\_script . "?id=$FORUM\_ID&cmd=suche";
 $URL\_KONFIGURATION =
 $url\_forum\_script . "?id=$FORUM\_ID&cmd=konfiguration";

 $FORUM\_SUCHE = '[' . $TEXT\_SUCHE . ']('%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520.%2520%2524URL_SUCHE%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520.%2520')'
 if ( $forum\_opt[26] == 1 );
 $FORUM\_KONFIGURATION = '[' . $TEXT\_KONFIGURATION . ']('%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520.%2520%2524URL_KONFIGURATION%250D%250A%2520%2520%2520%2520%2520%2520%2520%2520.%2520')'
 if ( $forum\_opt[27] == 1 );

 }
}

sub initialisierung\_schutz {

 $SESSION = time();
 $SESSION += 167;
 $SESSION \*= 3;

 $SESSION\_URL = '&session=' . $SESSION;

 $URL\_FORUM = $url\_forum\_script . "?id=$FORUM\_ID$SESSION\_URL";
 $URL\_ZURUECK = "javascript:history.go(-1);";
 $URL\_SUCHE = $url\_forum\_script . "?id=$FORUM\_ID&cmd=suche$SESSION\_URL";
 $URL\_KONFIGURATION =
 $url\_forum\_script . "?id=$FORUM\_ID&cmd=konfiguration$SESSION\_URL";

 $FORUM\_SUCHE = '[' . $TEXT\_SUCHE . ']('%250D%250A%2520%2520%2520%2520%2520.%2520%2524URL_SUCHE%250D%250A%2520%2520%2520%2520%2520.%2520')'
 if ( $forum\_opt[26] == 1 );
 $FORUM\_KONFIGURATION = '[' . $TEXT\_KONFIGURATION . ']('%250D%250A%2520%2520%2520%2520%2520.%2520%2524URL_KONFIGURATION%250D%250A%2520%2520%2520%2520%2520.%2520')'
 if ( $forum\_opt[27] == 1 );

}

sub templates\_anpassen {

 $tmpl\_forum = $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_uebersicht.htm";
 $tmpl\_nachricht =
 $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_nachricht.htm";
 $tmpl\_suchen = $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_suche.htm";
 $tmpl\_suchen\_ok = $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_suche\_ok.htm";
 $tmpl\_vorschau = $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_vorschau.htm";
 $tmpl\_bearbeiten =
 $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_bearbeiten.htm";
 $tmpl\_nachricht\_ok =
 $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_nachricht\_ok.htm";
 $tmpl\_konfiguration =
 $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_konfiguration.htm";
 $tmpl\_zugriff = $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_zugriff.htm";
 $tmpl\_zugriff\_fehler =
 $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_konfiguration.htm";
 $tmpl\_loeschen = $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_loeschen.htm";
 $tmpl\_fehler = $verzeichnis\_tmpl . $forum\_opt[12] . "/forum\_fehler.htm";

}

sub blacklist\_durchgehen {

 open( DB, $db\_forum\_blacklist );
 while () {
 s/(\cM\n)|(\n\cM)|(\cM)|(\n)//g;
 if ( $\_ ne '' ) {
 &fehler("Sie sind nicht berechtigt, dieses Forum zu betreten !")
 if ( $ENV{'REMOTE\_ADDR'} =~ /$\_/ || $ENV{'REMOTE\_ADDR'} =~ /$\_/ );
 }
 }
 close(DB);

}

sub forum\_anzeigen {

 my ( $zugriff\_logo, @datenbank );

 &blacklist\_durchgehen;

 @datenbank = &nachrichten\_einlesen( $forum\_opt[30] );

 $forum\_komprimiert = 'checked' if ( $forum\_opt[31] == 1 );
 $zeitraum\_txt = "sel=$forum\_opt[30]";

# $cookie\_neu[6] = 0;
# $cookie\_neu[6] = 1 if ($forum\_opt[31] == 1);
# $cookie\_neu[7] = $forum\_opt[30];
#
# &cookie\_daten\_speichern(0, @cookie\_neu) if ($q-\>param('cmd') ne 'konfiguration\_ok');

 open( TMPL, $tmpl\_forum );

 while () {

 if ( $\_ =~ // ) {

 if ( $forum\_opt[31] == 1 ) {
 &thread\_anzeigen\_komprimiert( "-", @datenbank );
 }
 else {
 &thread\_anzeigen( "-", @datenbank );
 }

 }
 else {

 s/$zeitraum\_txt/selected/g;

 while ( $\_ =~ //o ) {
 $name = $1;
 $\_ =~ s//$$name/g;
 }

 print;
 }
 }

 close(TMPL);

 exit;
}

sub nachricht\_anzeigen {

 @forum\_eintrag = &nachricht\_per\_id( $q-\>param('nachricht') );

 $NEU\_BETREFF = $forum\_eintrag[5];
 $NEU\_BETREFF = "Re: " . $forum\_eintrag[5]
 if ( $forum\_eintrag[5] !~ /^[Rr][Ee]\:/ );

 $NEU\_NACHRICHT = "»" . $forum\_eintrag[6];
 $NEU\_NACHRICHT =~ s//\%\*\%/gi;
 $NEU\_NACHRICHT =~ s/%\*\%/\n\»/gi;

 ( $UHRZEIT, $DATUM ) = ( &datum\_erstellen( $forum\_eintrag[2] ) )[0, 1];

 $NAME = $forum\_eintrag[3];
 $EMAIL = $forum\_eintrag[4];
 $NACHRICHT\_TITEL = $forum\_eintrag[5];
 $NACHRICHT = $forum\_eintrag[6];
 $NACHRICHT =~ s/\&\;/\&/gi;
 $NACHRICHT =~ s/\"\;/\"/gi;
 $WEBSITE = $forum\_eintrag[7];
 $WEBSITE\_TITEL = $forum\_eintrag[9];
 $PASSWORT = $forum\_eintrag[10];
 $BROWSER = $forum\_eintrag[14];
 $HOSTNAME = $forum\_eintrag[15];
 $zNACHRICHT = $q-\>param('nachricht');
 $NAME ="[$NAME](%255C%2522mailto:%2524EMAIL%255C%2522)"
 if ( $EMAIL ne '' );

 $FELD\_PERMAIL = '' if ( $EMAIL eq '' );

 $NACHRICHT\_LOESCHEN = '';
 $NACHRICHT\_LOESCHEN = ''
 if ( $forum\_eintrag[10] ne '' );

 $BANNER = ""
 if ( $forum\_eintrag[8] ne '' );

 $WEBSITE = "http://" . $WEBSITE
 if ( $WEBSITE !~ /^(http)/ && $WEBSITE ne '' );

 if ( $forum\_eintrag[9] ne '' ) {
 if ( $forum\_eintrag[9] =~ /[']/ ) {
 $WEBSITE =
 "[$forum\_eintrag[9]](%255C%2522%2524WEBSITE%255C%2522)"
 if ( $WEBSITE ne '' );
 }
 else {
 $WEBSITE ="[$forum\_eintrag[9]](%255C%2522%2524WEBSITE%255C%2522)"
 if ( $WEBSITE ne '' );
 }
 }
 else {
 $WEBSITE = "[$WEBSITE](%255C%2522%2524WEBSITE%255C%2522)"
 if ( $WEBSITE ne '' );
 }

 $WEBSITE\_INFO ='Website von '
 . $forum\_eintrag[3]
 . ': '
 . $WEBSITE
 . ''
 if ( $forum\_opt[56] eq '1' && $WEBSITE ne '' );
 $HOST\_INFO ='IP / Host '
 . $forum\_eintrag[15]
 . ''
 if ( $forum\_opt[55] eq '1' && $forum\_eintrag[15] ne '' );
 $BROWSER\_INFO ='Browser '
 . $forum\_eintrag[14]
 . ''
 if ( $forum\_opt[54] eq '1' && $forum\_eintrag[14] ne '' );

 @datenbank = &nachrichten\_einlesen( $forum\_opt[30] );

 open( TMPL, $tmpl\_nachricht )
 || &fehler("$tmpl\_nachricht konnte nicht geöffnet werden!");
 while () {
 if ( $\_ =~ // ) {
 &thread\_anzeigen( $q-\>param('nachricht'), @datenbank );
 &antworten\_zaehlen( $q-\>param('nachricht'), @datenbank );
 if ( $antworten == 0 ) {
 print "

 keine vorhanden


";
 }
 }
 while ( $\_ =~ //o ) {
 $name = $1;
 $\_ =~ s//$$name/g;
 }
 print;
 }
 close(TMPL);
 exit;
}

sub nachricht\_vorschau {

 if ( $q-\>param('name') eq '' ) {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 &fehler("Bitte gib deinen Namen an!");
 }

 $NACHRICHT\_ORIGINAL = $q-\>param('nachricht');

 @parameter\_keys = $q-\>param;

 open( DB, $db\_forum\_blacklist );
 @blacklist = ;
 close(DB);

 foreach $key (@parameter\_keys) {

 $value = join( "
", $q-\>param($key) );

 $value =~ s/\&/\&\;/g;
 $value =~ s/"/\"\;/g;
 $value =~ s/]\*\>([^//g;
 $value =~ s/]\>//g;
 $value =~ s/)]\*)--\>//g;
 $value =~ s///g
 if ( $forum\_opt[28] != 1 && $key eq 'nachricht' );
 $value =~ s/]|\n)\*\>//g
 if ( $forum\_opt[28] != 1 && $key eq 'nachricht' );
 $value =~ s/\cM\n/
/g;
 $value =~ s/\n\cM/
/g;
 $value =~ s/\cM/
/g;
 $value =~ s/\n/
/g;
 $value =~ s/\s+/ /g;
 $value =~ s/^\s+//g;
 $value =~ s/\s+$//g;
 $value =~ s/\|/#124/g;

 $q-\>param( -name =\> $key, -value =\> $value );

 foreach $eintrag (@blacklist) {
 next if ( $eintrag eq '' );
 &fehler("Dein Beitrag kann leider nicht akzeptiert werden, weil er ein in der Blacklist vorhandenes Wort oder du nicht berechtigt bist, Beiträge zu schreiben! ($eintrag)")
 if ( $q-\>param($key) =~ /$eintrag/i );
 }

 }

 $NACHRICHT\_NAME = $q-\>param('name');
 $NACHRICHT\_EMAIL = $q-\>param('email');
 $NACHRICHT\_WEBSITE = $q-\>param('website');
 $NACHRICHT\_WEBSITE\_TITEL = $q-\>param('website\_titel');
 $NACHRICHT\_BANNER = $q-\>param('banner');
 $NACHRICHT\_NACHRICHT = $q-\>param('nachricht');
 $NACHRICHT\_BETREFF = $q-\>param('betreff');
 $NACHRICHT\_EMAIL\_INFO = $q-\>param('email\_info');
 $NACHRICHT\_PASSWORT = $q-\>param('passwort');
 $zNACHRICHT = $q-\>param('zNACHRICHT');

 $NACHRICHT\_EMAIL\_INFO\_TXT = "nein";
 $NACHRICHT\_EMAIL\_INFO\_TXT = "ja" if ( $q-\>param('email\_info') == 1 );

 $NACHRICHT\_BANNER\_VORSCHAU =
 ''
 if ( $q-\>param('banner') ne '' );
 $NACHRICHT\_NUR\_PER\_EMAIL = 1 if ( $q-\>param('nur\_per\_email') );

 $NACHRICHT\_NUR\_PER\_EMAIL\_TXT =
 "Nachricht wird nur per eMail an Autor versandt !"
 if ( $NACHRICHT\_NUR\_PER\_EMAIL == 1 );

 $PASSWORT\_KEY = $NACHRICHT\_PASSWORT;
 $PASSWORT\_KEY =~ s/[A-Za-z0-9]/\*/gi
 while ( $PASSWORT\_KEY =~ /[A-Za-z0-9]/ );

 $FELD\_WEBSITE = '';
 $FELD\_WEBSITE\_TITEL = '';
 $FELD\_BANNER = '';
 $FELD\_PASSWORT = '';

 $FELD\_WEBSITE =''
 . $TEXT\_WEBSITE
 . ''
 . $NACHRICHT\_WEBSITE
 . ''
 if ( $NACHRICHT\_WEBSITE ne '' );
 $FELD\_WEBSITE\_TITEL =''
 . $TEXT\_WS\_TITEL
 . ''
 . $NACHRICHT\_WEBSITE\_TITEL
 . ''
 if ( $NACHRICHT\_WEBSITE\_TITEL ne '' );
 $FELD\_BANNER =''
 . $TEXT\_BANNER
 . ''
 if ( $NACHRICHT\_BANNER ne '' );
 $FELD\_PASSWORT =''
 . $TEXT\_PASSWORT
 . ''
 . $PASSWORT\_KEY
 . ''
 if ( $NACHRICHT\_BANNER ne '' );

 open( TMPL, $tmpl\_vorschau );
 while () {
 while ( $\_ =~ //o ) {
 $name = $1;
 $\_ =~ s//$$name/g;
 }
 print;
 }
 close(TMPL);

 exit;

}

sub nachricht\_hinzufuegen {

 local (@input);

 if ( $q-\>param('name') eq '' ) {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 &fehler("Bitte gib deinen Namen an!");
 }

 if ( $q-\>param('name') =~ /\:/ && $q-\>param('name') !~ /\:\:/ ) {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 &fehler("Bitte verwende keinen Doppelpunkt in deinem Namen!");
 }

 if ( $q-\>param('nachricht') eq '' ) {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 &fehler("Dein Beitrag enthält keinen Text!");
 }

 if ( $q-\>param('betreff') =~ /\'/ ) {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 &fehler("Bitte verwende kein Apostroph im Betreff!");
 }

 if ( $q-\>param('email') eq '' && $q-\>param('email\_info') == 1 ) {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 &fehler("Wenn du über Antworten auf deinen Beitrag informiert werden möchtest, mußt du eine gültige eMail-Adresse angeben!");
 }

 if ( $q-\>param('email') !~ /\@/ && $q-\>param('email\_info') == 1 ) {
 &cookie\_daten\_speichern( 0, @cookie\_neu );
 &fehler("Wenn du über Antworten auf deinen Beitrag informiert werden möchtest, mußt du eine gültige eMail-Adresse angeben!");
 }

 &blacklist\_durchgehen;

 $nachricht\_original = join( "\n", $q-\>param('nachricht') );
 @parameter\_keys = $q-\>param;

 foreach $key (@parameter\_keys) {

 $value = join( "
", $q-\>param($key) );

 $value =~ s/\&/\&\;/g;
 $value =~ s/"/\"\;/g;
 $value =~
 s/]\*\>([^//g;
 $value =~ s/]\>//g;
 $value =~ s/)]\*)--\>//g;
 $value =~ s///g
 if ($forum\_opt[28] != 1
 && $key eq 'nachricht'
 && $q-\>param('vorschau') ne 1 );
 $value =~ s/]|\n)\*\>//g
 if ($forum\_opt[28] != 1
 && $key eq 'nachricht'
 && $q-\>param('vorschau') ne 1 );
 $value =~ s/\cM\n/
/g;
 $value =~ s/\n\cM/
/g;
 $value =~ s/\cM/
/g;
 $value =~ s/\n/
/g;
 $value =~ s/\s+/ /g;
 $value =~ s/^\s+//g;
 $value =~ s/\s+$//g;
 $value =~ s/\|/#124/g;

 $q-\>param( -name =\> $key, -value =\> $value );
 $input{$key} = $value;

 foreach $eintrag (@blacklist) {
 next if ( $eintrag eq '' );
 &fehler("Dein Beitrag kann leider nicht akzeptiert werden, da er ein in der \"Blacklist\" vorhandenes Wort enthält oder du nicht berechtigt bist, Beiträge zu schreiben! ($eintrag)")
 if ( $q-\>param($key) =~ /$eintrag/i );
 }
 }

 ( $UHRZEIT, $DATUM ) = ( &datum\_erstellen( time() ) )[0, 1];

 if ( $q-\>param('nur\_per\_email') == 1 ) {

 @eintrag\_daten = &nachricht\_per\_id( $q-\>param('zNACHRICHT') );

 $forum\_opt[44] =~ s//\n/g;
 $forum\_opt[44] =~ s/\[NAME\]/$input{'name'}/g;
 $forum\_opt[44] =~ s/\[EMAIL\]/$input{'email'}/g;
 $forum\_opt[44] =~ s/\[WEBSITE\]/$input{'website'}/g;
 $forum\_opt[44] =~ s/\[BANNER\]/$input{'banner'}/g;
 $forum\_opt[44] =~ s/\[WEBSITE-TITEL\]/$input{'website\_titel'}/g;
 $forum\_opt[44] =~ s/\[NACHRICHT\]/$nachricht\_original/g;
 $forum\_opt[44] =~ s/\[BETREFF\]/$input{'betreff'}/g;
 $forum\_opt[44] =~ s/\[DATUM\]/$DATUM/g;
 $forum\_opt[44] =~ s/\[UHRZEIT\]/$UHRZEIT/g;

 open( MAIL, "|$sendmail -t" )
 || &fehler("SendMail konnte nicht geöffnet werden!");
 print MAIL "To: $eintrag\_daten[4]\n";
 print MAIL "From: $input{'email'} ($input{'name'})\n";
 print MAIL "Subject: $input{'betreff'} !\n\n";
 print MAIL "$forum\_opt[44]";
 print MAIL "\n\n";
 close(MAIL);

 &forum\_ok("Ihre Nachricht wurde erfolgreich an $eintrag\_daten[4] versandt!");
 exit;

 }

 open( DB, $db\_forum\_nachrichten ) || &fehler("$db\_forum\_nachrichten konnte nicht geöffnet werden!");
 while () {
 @eintrag\_alt = split( /\|/, $\_ );
 &fehler("Dieser Beitrag hängt schon an der Pinnwand!")
 if ( $eintrag\_alt[6] eq $q-\>param('nachricht') );
 }
 close(DB);

 $ID = ++$eintrag\_alt[0];

 $freigegeben = 1 if ( $forum\_opt[60] == 1 );

 open( DB, "\>\>$db\_forum\_nachrichten" ) || &fehler("$db\_forum\_nachrichten konnte nicht geöffnet werden!");
 my\_lock(DB);
 print DB $ID . '|'
 . $q-\>param('zNACHRICHT') . '|'
 . time() . '|'
 . $q-\>param('name') . '|'
 . $q-\>param('email') . '|'
 . $q-\>param('betreff') . '|'
 . $q-\>param('nachricht') . '|'
 . $q-\>param('website') . '|'
 . $q-\>param('banner') . '|'
 . $q-\>param('website\_titel') . '|'
 . $q-\>param('passwort') . '|||'
 . $q-\>param('email\_info') . '|'
 . $ENV{'HTTP\_USER\_AGENT'} . '|'
 . $ENV{'REMOTE\_ADDR'} . '|'
 . $freigegeben . '|'
 . $moderator . "|\n";
 my\_unlock(DB);
 close(DB);

 &email\_autor( $q-\>param('zNACHRICHT') )
 if ( $q-\>param('zNACHRICHT') ne '-' );
 &email\_forummaster;

 $cookie\_alt = &cookie\_daten\_auslesen();

 $cookie\_neu[1] = $q-\>param('name')
 if ( $cookie\_alt[1] ne $q-\>param('name') );
 $cookie\_neu[2] = $q-\>param('email')
 if ( $cookie\_alt[2] ne $q-\>param('email') );
 $cookie\_neu[3] = $q-\>param('website')
 if ( $cookie\_alt[3] ne $q-\>param('website') );
 $cookie\_neu[4] = $q-\>param('banner')
 if ( $cookie\_alt[4] ne $q-\>param('banner') );
 $cookie\_neu[5] = $q-\>param('website\_titel')
 if ( $cookie\_alt[5] ne $q-\>param('website\_titel') );

 &cookie\_daten\_speichern( 0, @cookie\_neu );

 if ( $freigegeben == 1 ) {
 &email\_moderiert;
 &forum\_ok($TEXT\_OK\_MODERIERT);
 }
 else {
 &forum\_ok($TEXT\_OK);
 }

}

sub email\_moderiert {

 if ( $forum\_opt[61] == 1 ) {

 $email\_txt = $forum\_opt[62];

 $email\_txt =~ s/\[NAME\]/$input{'name'}/g;
 $email\_txt =~ s/\[EMAIL\]/$input{'email'}/g;
 $email\_txt =~ s/\[WEBSITE\]/$input{'website'}/g;
 $email\_txt =~ s/\[BANNER\]/$input{'banner'}/g;
 $email\_txt =~ s/\[WEBSITE-TITEL\]/$input{'website\_titel'}/g;
 $email\_txt =~ s/\[NACHRICHT\]/$input{'nachricht'}/g;
 $email\_txt =~ s/\[BETREFF\]/$input{'betreff'}/g;
 $email\_txt =~ s//\n/g;
 $email\_txt =~ s/\[DATUM\]/$DATUM/g;
 $email\_txt =~ s/\[UHRZEIT\]/$UHRZEIT/g;

 open( MAIL, "|$sendmail -t" );
 print MAIL "To: $input{'email'}\n";
 print MAIL "From: $EMAIL ($NAME)\n";
 print MAIL "Subject: $forum\_opt[9]: Info !\n\n";
 print MAIL "$email\_txt";
 print MAIL "\n\n";
 close(MAIL);

 }

}

sub email\_autor {

 local @forum\_eintrag;

 @forum\_eintrag = &nachricht\_per\_id( $\_[0] );

 if ( $forum\_eintrag[13] == 1 ) {

 $forum\_opt[43] =~ s/
/\n/g;
 $forum\_opt[43] =~ s/\[NAME\]/$forum\_eintrag[3]/g;
 $forum\_opt[43] =~ s/\[EMAIL\]/$input{'email'}/g;
 $forum\_opt[43] =~ s/\[WEBSITE\]/$input{'website'}/g;
 $forum\_opt[43] =~ s/\[BANNER\]/$input{'banner'}/g;
 $forum\_opt[43] =~ s/\[WEBSITE-TITEL\]/$input{'website\_titel'}/g;
 $forum\_opt[43] =~ s/\[NACHRICHT\]/$input{'nachricht'}/g;
 $forum\_opt[43] =~ s/\[BETREFF\]/$input{'betreff'}/g;
 $forum\_opt[43] =~ s//\n/g;
 $forum\_opt[43] =~ s/\[DATUM\]/$DATUM/g;
 $forum\_opt[43] =~ s/\[UHRZEIT\]/$UHRZEIT/g;

 open( MAIL, "|$sendmail -t" );
 print MAIL "To: $forum\_eintrag[4]\n";
 print MAIL "From: $EMAIL ($NAME)\n";

 #print MAIL "From: $forum\_opt[1] ($forum\_opt[9])\n";
 print MAIL "Subject: Antwort auf deinen Beitrag\n\n";
 print MAIL "$forum\_opt[43]";
 print MAIL "\n\n";
 close(MAIL);

 }

}

sub email\_forummaster {

 if ( $forum\_opt[24] == 1 ) {

 $forum\_opt[42] =~ s/\[NAME\]/$input{'name'}/g;
 $forum\_opt[42] =~ s/\[EMAIL\]/$input{'email'}/g;
 $forum\_opt[42] =~ s/\[WEBSITE\]/$input{'website'}/g;
 $forum\_opt[42] =~ s/\[BANNER\]/$input{'banner'}/g;
 $forum\_opt[42] =~ s/\[WEBSITE-TITEL\]/$input{'website\_titel'}/g;
 $forum\_opt[42] =~ s/\[NACHRICHT\]/$input{'nachricht'}/g;
 $forum\_opt[42] =~ s/\[BETREFF\]/$input{'betreff'}/g;
 $forum\_opt[42] =~ s//\n/g;
 $forum\_opt[42] =~ s/\[DATUM\]/$DATUM/g;
 $forum\_opt[42] =~ s/\[UHRZEIT\]/$UHRZEIT/g;

 open( MAIL, "|$sendmail -t" );
 print MAIL "To: $EMAIL ($NAME)\n";
 print MAIL "From: $input{'email'} ($input{'name'})\n";
 print MAIL "Subject: Neuer Beitrag an der Abi-Pinnwand\n\n";
 print MAIL "$forum\_opt[42]";
 print MAIL "\n\n";
 close(MAIL);

 }
}

sub forum\_ok {

 &template\_anzeigen( $tmpl\_nachricht\_ok, $\_[0] );
}

sub nachrichten\_suchen {
 $keine\_beitraege = 1;
 @datenbank = &nachrichten\_einlesen( $q-\>param('zeitraum') );

 open( TMPL, $tmpl\_suchen\_ok );
 while () {

 if (/\n/) {

 $suchstring = $q-\>param('suchstring');

 while ( $suchstring =~ /\"(.\*?)\"/o ) {
 push( @woerter, $1 );
 $suchstring =~ s/\"$1\"//;
 }

 $suchstring =~ s/\s+/ /gi;
 @woerter\_rest = split( / /, $suchstring );

 push( @woerter, @woerter\_rest );

 $anzahl\_woerter = @woerter;

 foreach $eintrag (@datenbank) {

 $eintragen = 0;
 $gefunden = 0;

 foreach $wort (@woerter) {
 if ( $q-\>param('verknuepfung') eq 'ODER' ) {
 if ( $eintrag =~ /$wort/i ) {
 $eintragen = 1;
 last;
 }
 }
 if ( $q-\>param('verknuepfung') eq 'UND' ) {
 $gefunden++ if ( $eintrag =~ /$wort/i );
 $eintragen = 1 if ( $gefunden \>= $anzahl\_woerter );
 }
 }

 if ( $eintragen == 1 ) {

 $keine\_beitraege = 0;
 undef @forum\_eintrag;
 @forum\_eintrag = split( /\|/, $eintrag );

 ( $uhrzeit, $datum ) = ( &datum\_erstellen( $forum\_eintrag[2] ) )[0, 1];

 if (
 $forum\_eintrag[2] \> ( time() - ( $forum\_opt[34] \* 86400 ) ) )
 {
 $icon\_neu ='';
 }
 else {
 $icon\_neu = '';
 }

 $forum\_eintrag[5] = 'kein Betreff'
 if ( $forum\_eintrag[5] eq '' );
 $forum\_eintrag[3] = 'unbekannt' if ( $forum\_eintrag[3] eq '' );

 if ( $forum\_eintrag[16] != 1 ) {
 print "

$forum_eintrag[5] $icon_neu $moderator_icon ($forum_eintrag[3] | $datum | $uhrzeit Uhr)
\n";
}
}

}

if ( $keine_beitraege == 1 ) {
print „keine Beiträge gefunden“;
}
}
else {

while ( $_ =~ //o ) {
$name = $1;
$_ =~ s//$$name/g;
}

print;

}

}

close(TMPL);

exit;

}

sub forum_suche {
&template_anzeigen($tmpl_suchen);
}

sub nachricht_loeschen {

$NACHRICHT = $q->param(‚loeschen‘);
&template_anzeigen($tmpl_loeschen);

}

sub nachricht_loeschen_ok {

@forum_eintrag = &nachricht_per_id( $q->param(‚nr‘) );

&fehler(„Das angebene Passwort stimmt nicht mit dem gespeicherten überein!“)
if ( $forum_eintrag[10] ne $q->param(‚passwort‘) );

open( DB, $db_forum_nachrichten );
@forum_eintraege = ;
close(DB);

&thread_durchgehen( $q->param(‚nachricht‘) );

$nachrichten_zum_loeschen =
‚-‘ . $q->param(‚nr‘) . ‚-‘ . join( ‚-‘, @nachrichten_loeschen ) . ‚-‘;

open( DB, „>“ . $db_forum_nachrichten );
foreach $nachricht_daten (@forum_eintraege) {
@nachricht = split( /|/, $nachricht_daten );

if ( $nachrichten_zum_loeschen !~ /-$nachricht[0]-/ ) {
print DB $nachricht_daten;
}
else {
$nachricht_neu = @nachricht_daten;
}
}
close(DB);

&forum_ok($TEXT_OK_LOESCHEN);
exit;

}

sub thread_durchgehen {

foreach $eintrag (@forum_eintraege) {
@forum_eintrag = split( /|/, $eintrag );
if ( $_[0] eq $forum_eintrag[1] ) {
push( @nachrichten_loeschen, $forum_eintrag[0] );
&thread_durchgehen( $forum_eintrag[0] );
}
}

}

sub forum_konfigurieren {

@cookie_alt = &cookie_daten_auslesen();

$forum_komprimiert = ‚checked‘ if ( $forum_opt[31] == 1 );
$cookies_verwenden = ‚checked‘ if ( $cookie_alt[0] == 1 );
$zeitraum_txt = „sel=$forum_opt[30]“;

open( TMPL, $tmpl_konfiguration );
while () {
while ( $_ =~ //o ) {
$name = $1;
$_ =~ s//$$name/g;
}
s/$zeitraum_txt/selected/g;
print;
}
close(TMPL);

exit;
}

sub forum_konfigurieren_ok {

$cookie_alt = &cookie_daten_auslesen();

$cookie_neu[0] = $q->param(‚inaktiv‘);
$cookie_neu[0] = 0 if ( !defined $q->param(‚inaktiv‘) );
$cookie_neu[1] = $q->param(‚name‘);
$cookie_neu[2] = $q->param(‚email‘);
$cookie_neu[3] = $q->param(‚website‘);
$cookie_neu[4] = $q->param(‚banner‘);
$cookie_neu[5] = $q->param(‚titel‘);
$cookie_neu[6] = $q->param(‚komprimiert‘);
$cookie_neu[6] = 0 if ( !defined $q->param(‚komprimiert‘) );
$cookie_neu[7] = $q->param(‚zeitraum‘);

&cookie_daten_speichern( 1, @cookie_neu );

$forum_opt[25] = $cookie_neu[0];
$forum_opt[31] = $cookie_neu[6];

&forum_anzeigen;
exit;
}

sub nachricht_per_id {

my (@datenbank) = &nachrichten_einlesen(‚alle‘);

foreach $eintrag (@forum_db) {
@eintrag_daten = split( /|/, $eintrag );
last if ( $eintrag_daten[0] == $_[0] );
}

return @eintrag_daten;

}

sub thread_anzeigen {

if ( $forum_opt[30] =~ /^max/ ) {
$max_nachrichten = substr( $forum_opt[30], 3 );
}
else {
$max_nachrichten = 1000;
}

my ( $start, @datenbank ) = @_;
my ($icon_neu);

print "
";

if ( $NACHRICHTEN_ANGEZEIGT == 0 ) {
print „$TEXT_KEINE_NACHRICHTEN“;
}
else {

foreach $eintrag (@datenbank) {

chop($eintrag) if ( $eintrag =~ /\n$/ );

@forum_eintrag = split( /|/, $eintrag );

if ( $start eq $forum_eintrag[1] ) {

( $uhrzeit, $datum ) =
( &datum_erstellen( $forum_eintrag[2] ) )[0, 1];

if ( $forum_eintrag[2] > ( time() - ( $forum_opt[34] * 86400 ) ) ) {
$icon_neu =’’;
}
else {
$icon_neu = ‚‘;
}

$forum_eintrag[5] = ‚kein Betreff‘ if ( $forum_eintrag[5] eq ‚‘ );
$forum_eintrag[3] = ‚unbekannt‘ if ( $forum_eintrag[3] eq ‚‘ );

if ( $forum_eintrag[16] != 1
&& $max_nachrichten > $nachrichten_angezeigt )
{
print"-
$forum_eintrag[5] $icon_neu $moderator_icon ($forum_eintrag[3] | $datum | $uhrzeit Uhr)
\n";

$nachrichten_angezeigt++;

&thread_anzeigen( $forum_eintrag[0], @datenbank );

}
else {

$NACHRICHTEN_ANGEZEIGT–;
$NACHRICHTEN_ANGEZEIGT–;

}
}
}

}

print „\n“;

$NACHRICHTEN_ANGEZEIGT = substr( $forum_opt[30], 3 )
if ($forum_opt[30] =~ /^max/ && $NACHRICHTEN_GESAMT > int( substr( $forum_opt[30], 3 ) ) );

}

sub thread_anzeigen_komprimiert {

my ( $start, @datenbank ) = @_;

local ( $antworten, $antworten_neu ) = ( 0, 0 );

print "

";

if ( $NACHRICHTEN_ANGEZEIGT == 0 ) {
print „$TEXT_KEINE_NACHRICHTEN“;
}
else {

foreach $eintrag (@datenbank) {

chop($eintrag) if ( $eintrag =~ /\n$/ );
@forum_eintrag = split( /|/, $eintrag );

if ( $forum_eintrag[1] eq ‚-‘ ) {

$forum_eintrag[5] = ‚kein Betreff‘ if ( $forum_eintrag[5] eq ‚‘ );

if ( $forum_eintrag[16] != 1 ) {
&antworten_zaehlen( $forum_eintrag[0], @datenbank );

print „-
$forum_eintrag[5] $antworten Antwort“;
if ( $antworten != ‚1‘ ) { print „en“; }
print " ($antworten_neu neu)

\n";

( $antworten, $antworten_neu ) = ( 0, 0 );
}
}

}
}

print "

\n";

}

sub antworten_zaehlen {

my ( $start, @datenbank ) = @_;
my (@forum_eintrag);

foreach $eintrag (@datenbank) {
chop($eintrag) if ( $eintrag =~ /\n$/ );

@forum_eintrag = split( /|/, $eintrag );

if ( $start eq $forum_eintrag[1] ) {
if ( $forum_eintrag[16] != 1 ) {
&antworten_zaehlen( $forum_eintrag[0], @datenbank );
$antworten++;
$antworten_neu++
if ( $forum_eintrag[2] > ( time() - ( $forum_opt[34] * 86400 ) ) );
}
}
}

}

sub nachrichten_einlesen {

local @db = „“;

open( DB, $db_forum_nachrichten );
my_lock(DB);
@forum_db = ;
my_unlock(DB);
close(DB);

@forum_db = reverse @forum_db;

$NACHRICHTEN_GESAMT = @forum_db;
$NACHRICHTEN_ANGEZEIGT = 0;

@zeit = localtime( time() );

if ( $_[0] eq ‚alle‘ || $_[0] =~ /^max/ ) {

@db = @forum_db;
$NACHRICHTEN_ANGEZEIGT = @db;

}
elsif ( $_[0] eq ‚heute‘ ) {

foreach $eintrag_daten (@forum_db) {

@eintrag = split( /|/, $eintrag_daten );

@datum_beitrag = &datum_erstellen( $eintrag[2] );
@datum_aktuell = &datum_erstellen( time() );

if ( $datum_beitrag[1] eq $datum_aktuell[1] ) {
push( @db, $eintrag_daten );
$NACHRICHTEN_ANGEZEIGT++;
}
}

}
else {

$zeit_alt = time();
$zeit_minimum = $zeit_alt - ( $_[0] * 86400 );

foreach $eintrag_daten (@forum_db) {
@eintrag = split( /|/, $eintrag_daten );

if ( $eintrag[2] > $zeit_minimum ) {
push( @db, $eintrag_daten );
$NACHRICHTEN_ANGEZEIGT++;
}
}
}

@nachrichten_einlesen = @db;

}

sub cookie_daten_auslesen {

@cookie = $q->cookie( -name => ‚forum‘ );
return @cookie;

}

sub cookie_daten_speichern {

my ( $override, @cookie_neu ) = @_;

@cookie_alt = &cookie_daten_auslesen;

return if ( $cookie_alt[0] == 1 && $override != 1 );

for ( $i = 0 ; $i cookie(
-name => ‚forum‘,
-value => [
$cookie_neu[0], $cookie_neu[1], $cookie_neu[2],
$cookie_neu[3], $cookie_neu[4], $cookie_neu[5],
$cookie_neu[6], $cookie_neu[7], time()
],
-expires => ‚Sat, 20-Feb-2010 00:00:00 GMT‘
);

if ( $forum_opt[25] == 1 ) {
print $q->header( -cookie => $c );
}
else {
print $q->header();
}

}

sub fehler {
&template_anzeigen( $tmpl_fehler, $_[0] );
}

sub template_anzeigen {

my ($template) = $_[0];
$INFO = $_[1];

my ($name);

open( TMPL, $template ) || die „$template konnte nicht geöffnet werden !“;
while () {
while ( $_ =~ //o ) {
$name = $1;
$_ =~ s//$$name/g;
}
print;
}
close(TMPL);

exit;

}

sub datum_erstellen {

$uhrzeit_angepasst = $_[0];

my ( $sekunde, $minute, $stunde, $tag, $monat, $jahr, $wochentag ) =
( localtime($uhrzeit_angepasst) )[0, 1, 2, 3, 4, 5, 6];
my (@datum_erstellen);

#@datum_erstellen[0] = sprintf("%02d:%02d:%02d", $stunde, $minute, $sekunde);
$datum_erstellen[0] = sprintf( „%02d:%02d“, $stunde, $minute );
$datum_erstellen[1] =
sprintf( „%02d.%02d.%02d“, $tag, ++$monat, $jahr + 1900 );

return @datum_erstellen;

}

sub my_unlock {
local (*DATEI) = @_;
if ( -e DATEI ) {
if ( $verwendung_von_flock == 1 ) {
flock( DATEI, 8 );
}
}
}

sub my_lock {
local (*DATEI) = @_;
my ($schleife) = 0;
if ( -e DATEI ) {
if ( $verwendung_von_flock == 1 ) {
while ( !( flock( DATEI, 6 ) ) ) {
if ( $schleife

Hallo Semjon!

Erstmal ein herzliches Dankeschön für deine Hilfe!!
Leider, leider funktioniert es immer noch nicht. Ich habe das von dir angepasste Skript genau so übernommen, die Pfadangaben stimmen auch, aber weder auf meinem lokalen Server noch auf dem Webserver tut sich was… :frowning:

Gruß
Jan

Erstmal ein herzliches Dankeschön für deine Hilfe!!
Leider, leider funktioniert es immer noch nicht. Ich habe das
von dir angepasste Skript genau so übernommen, die Pfadangaben
stimmen auch, aber weder auf meinem lokalen Server noch auf
dem Webserver tut sich was… :frowning:

Ich habe das Script, so wie Semjon es verbessert hat, bei mir mal in der Kommandozeile gestartet. Kompiliert einwandfrei, auch der Output ist durchaus in Ordnung, wenn auch etwas unbefriedigend. Es fehlen halt die üblicherweise mitgelieferten Debug-Informationen.

Um diese zu erhalten, änderst du nochmals alle Zeilen, in denen per open() ein Datei geöffnet wird, nach folgendem Muster ab:

Aus

open( DB, $db\_forum\_einstellungen );

wird

 open( DB, $db\_forum\_einstellungen ) 
 || die "$db\_forum\_einstellungen kann nicht geöffnet werden";

Mit hoher Wahrscheinlichkeit wirst du anhand der so erzeugten Fehlerausgaben dann feststellen, dass die Pfade zu den Dateien noch nicht korrekt sind.

Gruss
Schorsch

Damit hab ich den Fehler gefunden! Es war tatsächlich ein Pfad falsch, mein Provider hatte mir schlicht und einfach einen falschen absoluten Pfad gegeben!

Nochmal tausend Dank euch beiden, ich wäre ohne euch echt verzweifelt!!! Finde ich super, daß ihr euch Zeit für solche Fragen nehmt!

Viele Grüße,
Jan