cgi request-Datei mit css verbinden


maozetung

Grünschnabel
hallo Zusammen,
ich habe nicht so viel Ahnung von CGI.
Ich benutze ein einfaches E-Mail Formular und das Script, welches eine Mail verschickt.
Das funktioniert.

Ich möchte die Ausgabe jedoch nun mit meiner CSS versehen, oder so das ich das Script meiner html anpassen kann. Ein wenig habe ich schon (z.B. ab: print HTMLKopf) eingefügt. Wie füge ich meine externe css dort ein?


hier der
Code:
#!/usr/bin/perl


# --> Ziel-Mailadresse, an die gesendet werden soll:
$mailto = 'info@xyz.de';


use CGI;


$query = new CGI;
@names = $query->param;


$delimiter = $query->param('delimiter');  # ---> Begrenzerzeichen zwischen name und value
$returnhtml = $query->param('return');    # ---> URL für Dankeseite
$subject = $query->param('subject');      # ---> E-Mail-Subject

$subject =~ s/\s/ /g;


$mailtext = "";
foreach(@names) {
  $name = $_;
  @values = "";
  @values = $query->param($name);
  if($name ne "return" && $name ne "subject" && $name ne "delimiter") {
    foreach $value (@values) {
      $mailtext = $mailtext.$name;
      $mailtext = $mailtext.$delimiter;
      $mailtext = $mailtext.$value."\n";
    }
  }
}

# -------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
print MAIL "$mailtext\n";
close(MAIL);

# -------> Dankeseite an Browser senden:


print HTMLKopf("body","background-color: red; color:blue");
print HTMLCode("h1","Dankeschön!","font-size:13pt; font-weight:bold; background-color: red; font-family: verdana;color:black");
print HTMLCode("p","Ihre Nachricht wurde verschickt. <br />wir melden sich umgehend bei Ihnen.","font-size:10pt; font-weight:bold; font-family: verdana; background-color: red; color:black");
print HTMLFuss("p","font-size:10pt; font-weight:bold; font-family: verdana; background-color: red; color:black");


sub HTMLKopf {
 my $Kopf = "Content-type: text/html\n\n".
  '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n".
  "<html><head><title>Nachricht-best&auml;tigung </title></head>
  <body>\n";
  
 return($Kopf);
}

sub HTMLFuss {
my $Fuss = "<script type=\"text/javascript\"><!--\n".
            # ------->            "document.write(\"URL-Adresse: \"+document.URL);\n//--></script>\n".
           
            "</body></html>\n";
 return($Fuss);
}

sub HTMLCode {
 my $Tag = shift;
 my $Inhalt = shift;
 my $Style = shift;
 unless(defined($Style) and length($Style)) {
  return("<$Tag>$Inhalt</$Tag>");
 }
 else {
  return("<$Tag style=\"$Style\">$Inhalt</$Tag>");
 }
}

danke
Beste Grüße
 

deepthroat

Erfahrenes Mitglied
Hi.
hallo Zusammen,
ich habe nicht so viel Ahnung von CGI.
Ich benutze ein einfaches E-Mail Formular und das Script, welches eine Mail verschickt.
Das funktioniert.

Ich möchte die Ausgabe jedoch nun mit meiner CSS versehen, oder so das ich das Script meiner html anpassen kann. Ein wenig habe ich schon (z.B. ab: print HTMLKopf) eingefügt. Wie füge ich meine externe css dort ein?
Wo ist das Problem? Du gibst halt per <link> die externe Datei an:
Perl:
sub HTMLKopf {
 my $Kopf = "Content-type: text/html\n\n".
  '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n".
  "<html><head><title>Nachricht-best&auml;tigung </title>".
  '<link rel="stylesheet" type="text/css" href="..."></head><body>\n";
  
 return($Kopf);
}
gruß
 

maozetung

Grünschnabel
Mhm,
ich bekomme die return.pl zurück, allerdings nur in weiss.
Der Quelltext dieser pl stimmt mit print und supKopf überein.

Ist das die css falsch?

Danke
 

maozetung

Grünschnabel
Naja,

der Firefox gibt mir die richtige return, bloss der IE nicht..
Die CSS liegt auf einem anderen Server in einem cgi-bin

Gerne kannst Du das Ausprobieren (habe die unwichtigen Inhalte gelöscht) mit den beiden Browsern, abschicken reicht:

test

danke
 

maozetung

Grünschnabel
Mhm,

so geht es leider nicht.
der kopf ist falsch:
Code:
   1.
      sub HTMLKopf {
   2.
       my $Kopf = "Content-type: text/html\n\n".
   3.
        '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n".
   4.
        "<html><head><title>Nachricht-best&auml;tigung </title>".
   5.
        '<link rel="stylesheet" type="text/css" href="..."></head><body>\n";
   6.
       
   7.
      return($Kopf);
   8.
      }



Ich habe jetzt Kopf und Fuss in den Zustand vor der Einfügung des CSS-Link gesetzt.

Jetzt zeigt wieder Firefox und IE die Return von Server an.
mit dem
Code:
 ...

print HTMLKopf("body","background-color: red; color:blue");
print HTMLCode("h1","Dankesch&ouml;n!","font-size:13pt; font-weight:bold; background-color: red; font-family: verdana;color:black");
print HTMLCode("p","Ihre Nachricht wurde verschickt. <br />wir melden sich umgehend bei Ihnen.","font-size:10pt; font-weight:bold; font-family: verdana; background-color: red; color:black");
print HTMLFuss("p","font-size:10pt; font-weight:bold; font-family: verdana; background-color: red; color:black");


sub HTMLKopf {
 my $Kopf = "Content-type: text/html\n\n".
  '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n".
  "<html><head><title>Nachricht-best&auml;tigung </title></head><body>\n";
  
 return($Kopf);
}

sub HTMLFuss {
my $Fuss = "<script type=\"text/javascript\"><!--\n".
            # ------->            "document.write(\"URL-Adresse: \"+document.URL);\n//--></script>\n".
           
            "</body></html>\n";
 return($Fuss);
}
...
Vielleicht gibt es ja noch eine andere elegante Lösung eine Return-Mail als Bestätigung einer E-Mail-Versendung.
Return-Anzeige in einer Webseite, das ist ja eine Ajax-Anwendung, oder? Bin für jeden Tipp zu haben.
Danke