sombrero2007 Geschrieben 7. Mai 2007 Geschrieben 7. Mai 2007 Hi @all, ich hab hier ein Kleines CGI Skript, der zwei Funktion und HTML Seiten auf generiert, die dritte Funktion soll eine HTML Seite aufrufen. Kann mir jemand sagen, wie ich das Bewerkstelligen kann? Ich dachte an einer Weiterleitung, aber dass hat nicht geklappt, weil er eine neue Seite aufgemacht hat. #!/usr/bin/perl # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ USE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Perl Funktionen use CGI; use Switch; # Eigene Funktionen use checkSAMBA; use checkDISK; # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variablen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Values der Radiobuttons $value_dienste="dienste"; $value_disk="disk"; $value_samba="samba"; # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HTML ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Neues Objekt $query erzeugen $query = new CGI; print $query->header(); # HTML Header ausgeben print" <html> <!-- Kopfzeile --> <head> <title>Web-Interface für Servercheck</title> <link rel=shortcut icon href=favicon.ico /> </head> <!-- Body --> <body> <!-- Überschrift --> <center><h2>Web-Interface für Servercheck</h2></center> <!-- Formular --> <form method=post action=servercheck.cgi> <p>Bitte Wählen Sie eine Abfrage aus:</p> <p> <input type=radio name=abfrage value=dienste> Dienste<br> <input type=radio name=abfrage value=disk> Disk Usage<br> <input type=radio name=abfrage value=samba> Samba<br> <input type=radio name=abfrage value=all> ALLES TESTEN<br> </p> <br> <br> <!-- Submit Button --> <input type=submit value=submit> </form> </body> </html>"; # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PERL Auswertung ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Ausgabe einer Trennlienie print "<hr>"; # Welchr Button wurder gewählt? # Mit der Methode param wird der value der einzelenen Buttons ausgelesen. # Die Variable $value wird mit diesen Wert gesetzt. $value = $query->param('abfrage'); # TEST WECHER BUTTON WURDE AUSGEWÄHLT #print "Button: <b>$value</b>"; #print "<br>"; # TEST WECHER BUTTON WURDE AUSGEWÄHLT # An Hand der values, werden hier die Funktionenen für die einzelnen Aufgaben aufgerufen switch ($value){ case "$value_dienste" { print "<meta http-equiv=\"refresh\" content=\"0; URL=http:\/\/de.selfhtml.org\/\">" }; case "$value_disk" { &checkDISK::checkDISK }; case "$value_samba" { &checkSAMBA::checkSAMBA }; } Zitieren
geloescht_JesterDay Geschrieben 7. Mai 2007 Geschrieben 7. Mai 2007 Ich dachte an einer Weiterleitung, aber dass hat nicht geklappt, weil er eine neue Seite aufgemacht hat. Du kannst nicht erst deine Seite ausgeben und dann am Ende denken, er leitet auf eine andere um. Deswegen steht der HTML-Meta zum Umleiten immer im Head, nicht im Body. Prüf vor irgendeiner Ausgabe ob du was ausgeben oder woanders hin umleiten willst. Und dann leite am besten per HTTP um, nicht erst per HTML. z.B. HTTP Header ReDirect Mehr kann ich dir dazu nicht sagen, hab mit Perl noch nie was gemacht. Zitieren
sombrero2007 Geschrieben 7. Mai 2007 Autor Geschrieben 7. Mai 2007 Hi, danke für dein Post. Ich bin jetzt hier nicht der HTML Crack, dass ich sagen könnte, warum das nicht funz. Möchte eigentlich auch nur eine Stinknormale HTML Seite generieren. Leider funkt das nicht mit dem beispiel. Zitieren
sombrero2007 Geschrieben 7. Mai 2007 Autor Geschrieben 7. Mai 2007 Ich hab eine andere Lösung, ich öffne die Datei und lese die einfach aus:[...] switch ($value){ [B][COLOR="Red"] case "$value_dienste" { open HTML, "/srv/www/htdocs/dienste.html"; while ($line=<HTML>){ print $line; } }[/COLOR][/B] case "$value_disk" { &checkDISK::checkDISK }; case "$value_samba" { &checkSAMBA::checkSAMBA }; } [...] Mich würde aber Trotzdem interessieren, wie man eine HTML seite in einer HTML seite aufrufen kann. Zitieren
geloescht_JesterDay Geschrieben 7. Mai 2007 Geschrieben 7. Mai 2007 Ich bin jetzt hier nicht der HTML Crack, dass ich sagen könnte, warum das nicht funz. Das hat mit HTML jetzt auch nichts zu tun In dem Beispiel hat mir auch der Statuscode gefehlt, aber ich kenn Perl wie gesagt nicht. Ich versuch es einfach mal #!/usr/local/bin/perl print "HTTP/1.x 307 Temporary Redirect\n"; print "Location:http://feedthebulldog.com\n\n"; __END__ Das gibt zumindest eine korrekte HTTP Antwort. Also der Statuscode 307, der besagt dass es eine temporäre Umleitung ist, und dann wohin. Also ich bin mir nicht sicher ob das so in Perl geht, das sollte zumindest aber beim Browser so ankommen Zitieren
sombrero2007 Geschrieben 7. Mai 2007 Autor Geschrieben 7. Mai 2007 Funzt so nicht ... Ich hab jetzt auch mal etwas gegoogelt, aber nichts brauchbares gefunden. Zitieren
Amstelchen Geschrieben 7. Mai 2007 Geschrieben 7. Mai 2007 du verwendest doch schon das geniale, magische, allumfassende CGI-modul an, welches doch auch die methode redirect anbietet. dies ist natürlich nur dann einsetzbar, wenn zuvor noch kein content an den client hinausgeschrieben wurde. Funzt so nicht ... das heisst jetzt im kontext von JesterDays beispiel was? s'Amstel Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.