Basti: Htmlinhalte überschreiben...

Hallihallo erstmal...

Ich ahbe ein Problem, und zwar möchte ich in einer HTML-Datei, die Zeile <!--NEWS--> mit den neuen news überschreiben, sodass ich immer die neuen news oben anfüge... Doch Leider macht er gar nichts! Entweder die Datei ist leer oder es passiert nichts...

Was muss ich da ändern?

MEIN QUELLCODE:

#!/usr/bin/perl

@Formular = ("");

read(STDIN, $Input, $ENV{'CONTENT_LENGTH'});
unless($Input =~ /news/)
 {
  print "Content-type: text/html\n\n";
  print "<html><head><title>.:: Twinsmania Syndicate ::.</title></head>\n";
  print "<body link=#ffffff vlink=#ffffff alink=#ffffff bgcolor=#dce0d3 text=#344011>\n";
  print "<table bgcolor=#dce0d3 border=0 width=250 cellspacing=0 cellpadding=0><tr><td bgcolor=#9ea985><center>:| NEWSBEREICH |:</td></tr><tr><td><center>\n";
  print "<form action="\cgi-bin/news.pl" method=post>\n";
  print "<center><table width=100%><tr><td align=center><b>Datum:</b><br><input style="font-size: 10pt; font-family: Lucida console; border: 3 solid #bbc2a9;background-color:#dce0d3;color:#344011" type=text name="datum" maxlength=15 size=15> </textarea></td></tr>\n";
  print "<tr><td align=center><b>Autor:</b><br><input style="font-size: 10pt; font-family: Lucida console; border: 3 solid #bbc2a9;background-color:#dce0d3;color:#344011" type=text name="autor" maxlength=15 size=15></td></tr>\n";
   print "<tr><td align=center><b>Thema:</b><br><input style="font-size: 10pt; font-family: Lucida console; border: 3 solid #bbc2a9;background-color:#dce0d3;color:#344011" type=text name="thema" maxlength=15 size=30></td></tr></table>\n";
  print "<div align=center><b>News:</b><br><textarea name="news" style="font-size: 10pt; font-family: Lucida console; border: 3 solid #bbc2a9;background-color:#dce0d3;color:#344011" rows=7 cols=30></textarea></div>\n";
  print "<input style="font-size: 10pt; font-family: Lucida console; border: 3 solid #bbc2a9;background-color:#dce0d3;color:#344011" type=submit value="Absenden">\n";
  print "<input style="font-size: 10pt; font-family: Lucida console; border: 3 solid #bbc2a9;background-color:#dce0d3;color:#344011" type=reset value="Abbrechen">\n";
  print "</form></body></html>\n";
  exit(0);
 }
else
 {
@Formularfelder = split(/&/, $Input);
foreach $Feld (@Formularfelder)
 {
  ($name, $value) = split(/=/, $Feld);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.|\n)*-->//g;
  $Formular[$i] = $name;
  $i = $i + 1;
  $Formular[$i] = $value;
  $i = $i + 1;
 }
  open(NEWS, ">>..//news.html") || die "[ news.html ] nicht gefunden!\n";
while(<NEWS>)
 {
  $Text = ($_);
  if ($Text eq "<!--NEWS-->")
  {
  $Text =~ s/<!--NEWS-->/[ NEUER TEXT ]/g;
     }
close(NEWS);
 }
   }

Ist da irgendwo ein Fehler?!?

BITTE HELFT MIR !!!

  1. Hi,

    Ich ahbe ein Problem, und zwar möchte ich in einer HTML-Datei, die Zeile <!--NEWS--> mit den neuen news überschreiben,

    Dein Filesystem ermöglicht es Dir, eine Datei zu lesen, ihr etwas _ans Ende_ anzufügen, oder sie _komplett_ zu überschreiben. Mit etwas komplizierteren Methoden ist es auch möglich, einzelne Bytes innerhalb der Datei auszutauschen. Es ermöglicht es Dir _nicht_, irgendwo mittendrin etwas zu löschen oder einzufügen.

    Was muss ich da ändern?

    So ziemlich alles. Suche bitte im Archiv andere Perl-Scripts, die ähnliche Dinge enthalten, insbesondere dies:

    #!/usr/bin/perl

    und dies:

    read(STDIN, $Input, $ENV{'CONTENT_LENGTH'});

    Lerne aus den Antworten darauf. Lies bitte zudem

    perldoc perlstyle

    zum Thema Groß-/Kleinschreibung von Variablen.

    print "Content-type: text/html\n\n";

    Und beschäftige Dich mit HERE-Dokumenten.

    print "<form action="\cgi-bin/news.pl" method=post>\n";

    Ich bin mir ziemlich sicher, dass der Backslash an dieser Stelle einer URI nicht erlaubt ist. Genauer gesagt dürfte dies außerhalb des IE ziemlich sicher nicht funktionieren.

    print "<center><table width=100%>[...]

    Die meisten Attributwerte _müssen_ in Anführungszeichen stehen. Wenn Du nicht mit _Sicherheit_ weißt, dass dem in einem bestimmten Fall nicht so ist, setze sie ein. Hier beispielsweise ist das Fehlen von Anführungszeichen falsch.

    exit(0);

    Jiargl. Sowas setzt man eigentlich nur für einen vorhergesehenen unvorhersehbaren Fehlerfall ein. In einer sauberen Programmstruktur ist ein exit() ansonsten unnötig - ganz besonders wenn der Rückgabewert nicht ausgewertet werden soll, was ich im CGI-Kontext mal ganz mutig als wahr bezeichne.

    @Formularfelder = split(/&/, $Input);

    Ab hier kräuseln sich mir die Zehennägel hoch, deswegen lösche ich den Rest mal einfach :-)

    BITTE HELFT MIR !!!

    Du brauchst weder zu schreien, noch Füllplenks zu verwenden, noch mittels multipler Ausrufezeichen Mutmaßungen über Deinen Geisteszustand zu provozieren. Suche im Archiv bitte auch nach "Terry Pratchett".

    Cheatah

    --
    X-Will-Answer-Email: No