Frameset und Frame im selben Skript!
knisterq
- perl
Ich versuche ein Script zu schreiben, in dem sowohl das frameset, wie auch die frames erzeugt werden(thanx to alexbaus):
&frame_set;
sub frame_set {
print <<FRAME;
<html>
<head></head>
<frameset rows="10,90" frameboarder="yes">
<frame src="skript.cgi?src=head_line" scrolling="no">
<frameset cols="20,80" frameboarder="yes">
<frame src="skript.cgi?src=nav_leiste" scrolling="no">
<frame src="skript.cgi?src=main_frame" scrolling ="no">
</frameset>
</html>
FRAME
}
sub head_line {
}
sub nav_leiste {
}
sub main_frame {
}
In dieser Form wird mir jedesmal das gesamte skript ausgelesen und nicht die einzelnen sub's.
Vielleicht weiß jemand um Rat, Danke.
Hi,
so, wie Du schreibst, fehlt eine Abfrage der uebergebenen Parameter:
if (src eq "head_line") { &head_line }
wuerde ich da mal schreiben, damit eine Prozedur wirklich nur aufgerufen wird, wenn das Skript mit einem entprechenenden Parameter gestartet wurde.
Gruesse
speedy
Hi,
so, wie Du schreibst, fehlt eine Abfrage der uebergebenen Parameter:
if (src eq "head_line") { &head_line }
wuerde ich da mal schreiben, damit eine Prozedur wirklich nur aufgerufen wird, wenn das Skript mit einem entprechenenden Parameter gestartet wurde.
Gruesse
speedy
Damit löst sich das Problem auch nicht wirklich. Der Fehler liegt glaube ich im Aufruf:
<frame src="skript.cgi?src=nav_leiste">
Also:
Wie ruft man ein Unterprogramm aus der Befehlszeile
http://127.0.0.1/cgi-bin/skript.cgi...
richtig auf?
P.S.:Mit "nav_leiste" geht's auch nicht!
Hi,
ach du willst eine _sub_Routine direkt aus der URL-Zeile des Browsers aufrufen? Da bin ich leider ueberfragt. Ich wuerde es nach wie vor mit einer IF-Abfrage machen: Parameter per CGI einlesen und mit if-Abfragen die einzelnen Subs aufrufen...
CU
speedy
Hallo knisterq,
Ich versuche ein Script zu schreiben, in dem sowohl das frameset, wie auch die frames erzeugt werden(thanx to alexbaus):
&frame_set;
sub frame_set {
print <<FRAME;
<html>
<head></head>
<frameset rows="10,90" frameboarder="yes">
<frame src="skript.cgi?src=head_line" scrolling="no">
<frameset cols="20,80" frameboarder="yes">
<frame src="skript.cgi?src=nav_leiste" scrolling="no">
<frame src="skript.cgi?src=main_frame" scrolling ="no">
<!--hier muß das 2te frameset geschlossen werden-->
</frameset>
</frameset>
</html>
FRAME
}
[ein paar Subroutinen]
»»
In dieser Form wird mir jedesmal das gesamte skript ausgelesen und nicht die einzelnen sub's.
Eigentlich sollte das nicht passieren, da Du nur die Subroutine &frame_set aufrufst. Tut (tutut ;-) es gewiss auch nicht, Du interpretierst vielleicht nur die Ausgabe falsch :-) Starte das obige Skript einfach mal von der Kommandozeile aus, und schau Dir den Output an, wenn auch in den anderen Subroutinen eine Ausgabe steht.
Um jetzt Dein Skript mit jeweils verschiedenen Subroutinen aufzurufen, musst Du den Parameter aus der entsprechenden Umgebungsvariable lesen, und anhand des Wertes auf die Unterprogramme verzweigen, so ähnlich wie es schon speedy vorgeführt hat (nur daß src eine Variable sein sollte: $src ;-)).
Ich hoffe das hilft Dir weiter, falls nicht, frag in diesem Thread noch mal nach.
Gruß AlexBausW
Hallo knisterq,
Ich versuche ein Script zu schreiben, in dem sowohl das frameset, wie auch die frames erzeugt werden(thanx to alexbaus):
&frame_set;
sub frame_set {
print <<FRAME;
<html>
<head></head>
<frameset rows="10,90" frameboarder="yes">
<frame src="skript.cgi?src=head_line" scrolling="no">
<frameset cols="20,80" frameboarder="yes">
<frame src="skript.cgi?src=nav_leiste" scrolling="no">
<frame src="skript.cgi?src=main_frame" scrolling ="no">
<!--hier muß das 2te frameset geschlossen werden-->
</frameset>
</frameset>
</html>
FRAME
}
[ein paar Subroutinen]
»»
In dieser Form wird mir jedesmal das gesamte skript ausgelesen und nicht die einzelnen sub's.Eigentlich sollte das nicht passieren, da Du nur die Subroutine &frame_set aufrufst. Tut (tutut ;-) es gewiss auch nicht, Du interpretierst vielleicht nur die Ausgabe falsch :-) Starte das obige Skript einfach mal von der Kommandozeile aus, und schau Dir den Output an, wenn auch in den anderen Subroutinen eine Ausgabe steht.
Um jetzt Dein Skript mit jeweils verschiedenen Subroutinen aufzurufen, musst Du den Parameter aus der entsprechenden Umgebungsvariable lesen, und anhand des Wertes auf die Unterprogramme verzweigen, so ähnlich wie es schon speedy vorgeführt hat (nur daß src eine Variable sein sollte: $src ;-)).Ich hoffe das hilft Dir weiter, falls nicht, frag in diesem Thread noch mal nach.
Gruß AlexBausW
Hallo nochmal!
Mein Problem ist, daß ich über die Kommandozeile nicht mal direkt auf
mein frameset zugreifen kann. Wie kann ich also über ...cgi-bin/skript.cgi... mein Unterprogramm ausführen?
Hi knisterq,
Du weist aber schon, wie man von der Kommandozeile bzw. den gesetzten Umgebungsvariablen Parameter einlesen kann?
Hier noch mal einfach:
Aufruf aus einer Htmldatei (href="" oder src=""), oder der Adresszeile:
http://domain/cgi-bin/deinskriptname.cgi?src=frame_set (bzw. die gewünschte Subroutine)
------Skript---------
#!/pfad/zu/perl -w
use CGI (:standard);
&frame_set if param('src') eq "frame_set";
.
. hier das selbe für die anderen Subroutinen
.
sub frame_set {}
.
. hier die weiteren Subroutinen
.
Versuch das mal auf Dein Skript umzusetzen. Falls das nicht klappt, wirst Du um das Abarbeiten von perldoc nicht drumherum kommen ;-)
Gruß AlexBausW
P.S.: Bitte kein fullquotes, denn ich glaub ich kann mich auch so noch an mein Geschreibsel erinnern ;-) und zur Not (bin ja auch nicht mehr der Jüngste) schlag ich`s halt noch mal nach *g*
Hi knisterq,
Du weist aber schon, wie man von der Kommandozeile bzw. den gesetzten Umgebungsvariablen Parameter einlesen kann?
Hier noch mal einfach:
Aufruf aus einer Htmldatei (href="" oder src=""), oder der Adresszeile:http://domain/cgi-bin/deinskriptname.cgi?src=frame_set (bzw. die gewünschte Subroutine)
------Skript---------
#!/pfad/zu/perl -w
use CGI (:standard);ich hoffe der Gebrauch der CGI.pm ist korrekt, da ungetestet
»»
&frame_set if param('src') eq "frame_set";
.
. hier das selbe für die anderen Subroutinen
.sub frame_set {}
.
. hier die weiteren Subroutinen
.Versuch das mal auf Dein Skript umzusetzen. Falls das nicht klappt, wirst Du um das Abarbeiten von perldoc nicht drumherum kommen ;-)
Gruß AlexBausW
P.S.: Bitte kein fullquotes, denn ich glaub ich kann mich auch so noch an mein Geschreibsel erinnern ;-) und zur Not (bin ja auch nicht mehr der Jüngste) schlag ich`s halt noch mal nach *g*
Ist schon alles klar - Danke nochmal euch beiden!
Mit "src" oder was auch immer funktionierts(meiner Meinung nach)innerhalb des frameset nicht. Man muß beide Umgebungsvariablen(wer es nicht weiß:$path_info und $script_name) verwenden.
P.S.:Mit dieser Form "http://domain/cgi-bin/deinskriptname.cgi?src=frame_set" hab ich's schon versucht, aber das führt mir trotzdem nicht mein Unterprogramm aus?!?!?!?!?
Und so hab ich's gelöst:
use CGI;
$abi = new CGI;
$path_info = $abi->path_info;
if (!$path_info) {
&print_frameset;
exit 0;
}
&head_line if $path_info=~/head_line/;
&nav_leiste if $path_info=~/nav_leiste/;
&main-frame if $path_info=~/main_frame/;
&mes_board if $path_info=~/mes_board/;
sub print_frameset {
$script_name = $abi->script_name;
print <<FRAME;
<html>
<head>
</head>
<frameset rows="15,85" frameborder="yes">
<frame src="$script_name/head_line" scrolling="no">
<frameset cols="15,85" frameboarder="yes">
<frame src="$script_name/nav_leiste" scrolling="no">
<frame src="$script_name/main_frame" name="main">
</frameset>
</frameset>
</html>
FRAME
;
exit;
}
Wenn jemand einen anderen Weg kennt, würde er mich brennend interessieren!
knisterq
Hallo !
Eine lustige Diskussion, die Ihr hier führt!
Wie man so dermaßen aneinander vorbeireden kann, ist immer wieder erheiternd.
Wenn jemand einen anderen Weg kennt, würde er mich brennend interessieren!
Knisterq, das haben die anderen beiden doch versucht, aber Du wolltest scheinbar nicht.
Ist schon alles klar - Danke nochmal euch beiden!
Mit "src" oder was auch immer funktionierts(meiner Meinung nach)innerhalb des frameset nicht. Man muß beide Umgebungsvariablen(wer es nicht weiß:$path_info und $script_name) verwenden.
Wieso muss ich hier an den ersten 'Werner'-Film denken?
'Was heißt hier ja ja ? Ja ja heisst leck' mich am Arsch!'
Nichts für Ungut.
Gruss,
Kerki