Christoph Schnauß: Premature end of script headers

Beitrag lesen

hallo Roland,

Stimmt. Es war mal dieses Script, das ich vor Jahren mal runtergeladen und geändert habe.  :-)))

Kannst mal sehen, das Forum hier kriegt alles raus ;-)

Bei T-Online habe ich Module dazugemietet, um eigene Scripts einsetzen zu können. Nur leider ist T-Online soooo teuer geworden

Oh. Dann entfällt das natürlich. Ich habe, weil ich meine DSL-Flatrate bei t-online habe, seit rund zwei Jahren auch die üblichen 10 MB Webspace dort. Irgendwelche Module dazuzumieten, würde mir eh nicht einfallen. Also muß ich wohl weiterhin zu meinen Scripts bei anderen ISP's greifen. Macht ja nix.

Werde deine Ratschläge befolgen und werde hoffentlich diesen Fehler ausmerzen können.

Ich mache mal etwas, was ich außerordentlich selten mache (weil es in gewisser Weise dem SELF-Prinzip widerspricht): ich hänge dir ein kleines Suchscript an, das ebenfalls aus dem alten Matt-Wright-Script entwickelt wurde (dürfte allerdings schwerer zu bemerken sein) und gut funktioniert. Allerdings müßtest du natürlich deine ganzen Arrays da wieder reinstopfen, aber vielleicht genügt es als Vergleich. Es hat den Vorteil, daß es bereits ganz auf das CGI-Modul setzt, was du noch nicht drin hast.
Im Eingabeformular hat das input-Feld für den Suchbegriff den Namen "begriff", daher kommt die im Script eingesetzte Variable, und da es zunächst auf einer Windows-Kiste gelaufen ist, sieht die shebang eben so aus, wie sie aussieht.

---Beispiel---

#!D:/Perl/bin/perl.exe -w
use strict;
use CGI;
my $cgi = new CGI;
use vars qw(
  $basedir $baseurl $css
  $begriff $dateien @dateinamen
  @liste @liste1 $liste $string $link @links
  %name $name %namen $namen $zeile
  @ausdruecke $ausdruck
  %include $include $key $titel @titel $text
);
$basedir = 'I:/root/forum/beitraege';
$baseurl = 'http://pc1/online/forum/beitraege';
$css     = 'http://pc1/online/scripts/forum.css';
if (defined $cgi->param('begriff')) { $begriff = $cgi->param('begriff'); }

opendir(VERZ,"$basedir") || die $!;
for $dateien (grep {/.htm/} readdir VERZ) { push(@dateinamen, $dateien);}
closedir(VERZ);

foreach $name (@dateinamen) {
   open(LISTE,"$basedir/$name") || die $!;
   @liste1 = <LISTE>;
   close(LISTE);
   foreach $zeile (@liste1) { push(@liste, $zeile);}

$string = join(' ',@liste1);
   $string =~ s/\n//g;
   $liste = join(' ',@liste);
   @ausdruecke = split(/\s+/,$begriff);

if ($begriff) {
      foreach $ausdruck (@ausdruecke) {
         $ausdruck =~ s/ä/&auml;/g;
         $ausdruck =~ s/ö/&ouml;/g;
         $ausdruck =~ s/ü/&uuml;/g;
         $ausdruck =~ s/Ä/&Auml;/g;
         $ausdruck =~ s/Ö/&Ouml;/g;
         $ausdruck =~ s/Ü/&Uuml;/g;
         $ausdruck =~ s/ß/&szlig;/g;
         if ($liste =~ /$ausdruck/) { $text =  "<b>$begriff</b> ist in den unten aufgeführten Dateien gefunden worden:";
         } else { $text = "<b>$begriff konnte leider nirgends gefunden werden.</b>";}
         if (!($string =~ /$ausdruck/i)) { $include{$name} = 'nein';
         } else {
            $include{$name} = 'ja';
            $link =  "<a href="$baseurl/$name">$name</a>\n";
            push(@links, $link);
         }
         if ($string =~ /<title>(.*)</title>/i) { $namen{$name} = "$1";
         } else { $namen{$name} = "";
         }}} else {
      $text = "<b>Sie haben versäumt, einen Suchbegriff einzugeben.<br />Bitte wiederholen Sie Ihre Anfrage.</b>";
}}
foreach $key (keys %include) {
   if ($include{$key} eq 'ja') {
      $titel = "<li>$namen{$key}</li>\n";
      push(@titel, $titel);
}}

print $cgi->header().$cgi->start_html(-title =>'Verzeichnis durchsuchen', -style =>{'src'=>$css})."\n";
print <<ENDE;
<table border="0" cellspacing="5" cellpadding="8" width="100%"><tr>
<td colspan="2">$text</td>
</tr><tr>
<td>@links</td><td><br /><ul>@titel</ul></td>
</tr></table>
ENDE
print $cgi->end_html();

exit;

Grüße aus Berlin

Christoph S.