Schrift
[thread]514[/thread]

Architektur einer dynamischen Web-Anwendung: HTML-Seiten ausgeben und nicht ....cgi



<< >> 6 Einträge, 1 Seite
baerli56
 2005-06-17 14:10
#5123 #5123
User since
2005-06-10
5 Artikel
BenutzerIn
[default_avatar]
Hallo,
vielen Dank für die Antworten zu meiner Frage zu Templates.

Als Autodidakt, der irgendwann demnächst semi-professionell arbeiten will, werde ich Euch wohl noch öfters mit "dummen" Fragen löchern. Ich sehe mir die Konstruktion vieler Webseiten an, und dabei bekomme ich das Gefühl, vollkommen kompliziert zu programmieren.

Ich will eine Art von Portal erstellen. Diverse Abfragen ergeben ja unterschiedlichste Ergebnisse. Nur der Seitenaufbau bleibt gleich. Also muss ich (ist das richtig?) mit Templates arbeiten.

Jetzt stelle ich z.B. im HTML-Quellcode von anderen Seiten fest, dass die Ergebnisseite einer Abfrage nur HTML-Dateien referenziert. Also auch z.B. bei einer Navigation (die ersten 10,20... Ergebnisse: href="...../.10.html, ...../.20.html u.s.w.).

Ich nehme an, dass diese Dateien mittels Template in Folge der Abfrage temporär erstellt werden. Dies gelingt. Ich kann natürlich diese Dateien mittels LWP auch ausgeben. Allerdings bleibt dann als Adresse http://localhost/..../abfrage.cgi, während in den meisten anderen Anwendungen eine HTML-Datei als Adresse steht.

Weitere Frage. ich habe folgenden Code gefunden:
Code: (dl )
<form method="post" name="searchform" action="http://.../unterkuenfte-ausgabe.html">


Wie soll das gehen. Wie kommt da das CGI-Skript ins Spiel, das die Parameter des Formulars verarbeitet?

Danke für weitere Anregungen
esskar
 2005-06-17 14:26
#5124 #5124
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
* nicht alle webseiten sind dynamisch
* man kann dem webserver sagen, dass er anstatt der Datei "unterkuenfte-ausgabe.html" an den browser zu schicken, ein cgi-script starten, und dessen output dann an den server schickt!
baerli56
 2005-06-17 16:14
#5125 #5125
User since
2005-06-10
5 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,17.06.2005, 12:26]* man kann dem webserver sagen, dass er anstatt der Datei "unterkuenfte-ausgabe.html" an den browser zu schicken, ein cgi-script starten, und dessen output dann an den server schickt![/quote]
Genau das ist meine Frage:
Mit einem CGI-Skript erzeuge ich Output.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
use HTML::Template;
my $tmpl = HTML::Template->new(filename=>'../htdocs/rems-murr/templates/templ1.html');
my $output = &get_all_unterkunft($dbh);
$tmpl->param("output"=>$output);
....
sub get_all_unterkunft{
my $dbh = shift;
my $output = $dbh->selectall_arrayref("SELECT uname, uort, ukat, upreisinfo, ulogo  FROM BETRIEBE", {Slice=>{}});
return $output;
}


Da wo ich ... geschrieben habe, kann ich den Output ausgeben:
1.
Code: (dl )
1
2
3
$dbh->disconnect();
print "Content-type: text/html\n\n";
print $tmpl->output();

oder
2.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
my $datei = "C:/apachefriends/xampp/htdocs/rems-murr/output.html";
open (DATEI, ">$datei");
print DATEI $tmpl->output();
close (DATEI);
my $UA = LWP::UserAgent->new();
my $url = "http://localhost/rems-murr/output.html";
my $req = HTTP::Request->new('GET' => "$url");
my $result = $UA->request($req);
print "Content-type: text/html\n\n";
print $result->content();

In beiden Fällen (naiv ausgedrückt) steht in meiner Adresszeile: http://localhost/cgi-bin/abfrage.cgi

Wie ist es möglich, dass in vielen Web-Anwendungen, die dynamisch Ergebnisse einer Abfrage generieren, der Output eine HTML-Datei ist (Adresse: http://....../datei.html).

Ich hab keine Erklärung, wie z.B.
Code: (dl )
1
2
3
4
<form method="post" name="searchform" action="http://www.eifel.de/unterkuenfte-ausgabe.html">
.....
<input name="Suchen" type="submit"  id="Suchen" value="Suchen" />
</form>

funktioniern soll. In dem Formular werden diverse Input-Felder gefüllt, also muss die Ausgabe dynamisch generiert werden. ?
pq
 2005-06-17 16:27
#5126 #5126
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wie esskar schon sagte, man muss das dem webserver sagen. du musst einfach mal von
dem gedanken weg, "http://.../blabla.html" ist eine HTML-datei. es ist eine URL. der browser macht
daraufhin einen GET-request an den server, und der webserver kann damit machen, was er will.
wenn du Apache über eine RewriteRule gesagt hast, dass "/blabla.html" auf ein script geht, dann
wird halt das skript aufgerufen. für den browser ist das unsichtbar.\n\n

<!--EDIT|pq|1119011327-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ptk
 2005-06-17 18:12
#5127 #5127
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Einee Moeglichkeit waere die Verwendung von Location:
Code: (dl )
1
2
3
4
<Location /irgendetwas.html>
SetHandler perl-script
PerlHandler Ein::Perl::Handler
</Location>
sri
 2005-06-18 08:30
#5128 #5128
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wer macht denn heutzutage noch plain old cgi? das is ja so 90er Jahre! :)

Wie waers einfach mit Catalyst?
Hier is auch nen Artikel dazu...
<< >> 6 Einträge, 1 Seite



View all threads created 2005-06-17 14:10.