$parse_form
Birdman
- cgi
Hallo,
ich möchte den Wert einer Variable "varneu" eines mit "FORM ACTION" übergebenen Bewertungschemas an ein CGI-Skript übergeben und von dort in einer Ausgabedatei ausgeben. Es handelt sich um ein fertiges Skript eines Sharewareprogramms, die Übergabe der Variable "survey" funktioniert z.B. problemlos, da voreingestellt. Die Ausgabe funktioniert mit dem Befehl "$FORM{'survey'}" (s. 3. "library.cgi).
Ich bin inzwischen dahintergekommen, daß es wohl was mit "$parse_form" zu tun haben muß. Nur weiß ich nicht genau, wo und wie ich die neue Variable dort ansprechen/definieren muß. Ich habe nachfolgend mal die Skripte angehängt, auch wenn es wohl eher eine Zumutung ist. Wäre für Hilfe wirklich sehr dankbar, oder zumindest für einen Tip, wo ich was anchlesen könnte. Habe im Archiv etc. zumindest für mich Laien nix Verständliches gefunden.
Birdman
Nachfolgend Extrakte der 3 Dateien:
1. Eingabedatei
2. survey.cgi
3. library.cgi
(in der auch im Skript genannten Datei "config.cgi" stehen nur feste Einstellungen für Variablennamen und Formatierungen, also keine von der Eingabedatei beeinflußten Variablen)
1. EXTRAKT der HTML-Eingabedatei:
********************************
<FORM ACTION="http://web22.server3.ascis.de/cgi-bin/survey.cgi" METHOD="POST">
<INPUT TYPE="HIDDEN" NAME="action" VALUE="vote">
<INPUT TYPE="HIDDEN" NAME="survey" VALUE="Test">
<INPUT TYPE="HIDDEN" NAME="redirect" VALUE="http://web22.server3.ascis.de/cgi-bin/survey.cgi?action=view&survey=Test">
<INPUT TYPE="HIDDEN" NAME="varneu" VALUE="Ausgabetext">
2. Extrakt CGI-Skript "survey.cgi":
***********************************
#!/usr/bin/perl
require 'config.cgi';
require 'postoffice.lib';
require 'library.cgi';
use Socket;
&parse_form;
$ref = 0;
if(! @referers) {
$ref = 1;
}
foreach $referer (@referers) {
if($ENV{'HTTP_REFERER'} =~ /$referer/i) {
$ref = 1;
last;
}
}
if(! $ref) {
&error("The HTTP REFERER was not allowed to access this script.");
}
if($FORM{'action'} eq "") {
# No action means that Survey Office should either list the current surveys
# or print the appropriate survey form.
if($FORM{'survey'} ne "") {
if(! -e "$surveyoffice_base_dir/$FORM{'survey'}.info") {
&error("The survey name, $FORM{'survey'}, does not exist!");
}
# Generate the survey form
&header;
print &generate_form("$FORM{'survey'}");
&footer;
}
else {
&header;
print qq!
<CENTER>
<TABLE BGCOLOR="$table_bgcolor" CELLSPACING="$table_cellspacing" CELLPADDING="$table_cellpadding" BORDER="$table_border" WIDTH="$table_width">
<TR BGCOLOR="$table_caption_row_color"><TD COLSPAN=2>
<FONT FACE="$font_type" SIZE="$caption_font_size" COLOR="$table_font_caption_color"><B>
Current Available Surveys</B></FONT></TD></TR>
!;
opendir(SOFFICE,"$surveyoffice_base_dir") || &error("Unable to read from Survey Office directory");
while($file = readdir(SOFFICE)) {
if($file =~ /^(.*).info$/) {
$survey = $1;
3. Extrakt CGI-Skript "library.cgi" zur Ausgabe:
************************************************
#!/usr/bin/perl
#require 'config.cgi';
&parse_form;
$lockfile_max_try = 10;
@days = ('Sunday','Monday','Tuesday','Wednesday',
'Thursday','Friday','Saturday');
@months = ('January','February','March','April','May','June','July',
'August','September','October','November','December');
sub header {
print "Content-Type: text/html\n\n";
if(-e "$surveyoffice_base_dir/$header_file") {
open(FILE,"$surveyoffice_base_dir/$header_file") || die "Can't open header file: $surveyoffice_base_dir/$header_file";
my @HEADER =<FILE>;
close(FILE);
print @HEADER;
}
else {
print qq!
<HTML>
<HEAD>
<TITLE>MMBici</TITLE>
</HEAD>
<FONT FACE="Arial" SIZE=2>
<table border="0">
<col width="120">
<col width="300">
<tr><td><a href="http://www.mmbici.de/termine/term.htm#$FORM{'survey'}" target="_self"><img src="../images/but-term.gif" alt="Zurück zu Termine" border="0" width="65" height="20"></a></td>
<td> </td></tr>
<tr><td><a href="http://www.mmbici.de/wertung/$FORM{'survey'}.htm" target="_self"><img src="../images/but-wert.gif" alt="Zurück zur Bewertung" border="0" width="65" height="20"></a></td>
<td><H3>MMBici Tourbewertung $rtf</H3></td></tr>
</table></FONT>
<TABLE WIDTH=550 BORDER=0>
<TR><TD>
<FONT FACE="Arial" SIZE=-1>
!;
}
}
Hi,
ich möchte den Wert einer Variable "varneu" eines mit "FORM ACTION" übergebenen Bewertungschemas an ein CGI-Skript übergeben
ceci n'est pas une variable. Es handelt sich um Parameter, _nicht_ um Variablen.
Die Ausgabe funktioniert mit dem Befehl "$FORM{'survey'}" (s. 3. "library.cgi).
Was von diesem Müll zu halten ist, recherchiere bitte im Archiv. Kleiner Tipp, in einem Wort zusammengefasst: Abstand. Wie man es richtig macht, erfährst Du ebenfalls im Archiv und in
perldoc CGI
Cheatah
»»» Was von diesem Müll zu halten ist, recherchiere bitte im Archiv. Kleiner Tipp, in einem Wort zusammengefasst: Abstand. Wie man es richtig macht, erfährst Du ebenfalls im Archiv und in
perldoc CGI
Cheatah
Mag ja durchaus sein, aber es ist nun mal ein vorgegebenes Skript, daß ich nicht grundsätzlich ändern möchte und auch gar nicht kann.
Birdman
Hi,
perldoc CGI
Mag ja durchaus sein, aber es ist nun mal ein vorgegebenes Skript, daß ich nicht grundsätzlich ändern möchte
dann such Dir eines, das vernünftig programmiert ist und nicht geändert werden muss - ganz einfach. Das bisherige ist _mies_, und Du kannst froh sein, dass es seinen Dienst versagt.
und auch gar nicht kann.
Dagegen lässt sich etwas unternehmen.
Cheatah
Danke für die Hilfe!
Mit solchen schwarz-weiß-Kommentaren schafft man es bei so hoch frequentierten Foren, daß das Hilfeersuchen soweit nach unten rutscht und einem niemand mehr Hilfe gibt. Steht ja schließlich schon eine Antwort dort, dann wird dem ja sicher schon geholfen.
Kannst Du Dir vorstellen, daß es Menschen gibt, die z.B. einem Hobby nachgehen und deshalb gewisse Informationen übers Internet austauschen möchten. Die aber deswegen nicht soviel Zeit haben, sich in alle Feinheiten einzuarbeiten und komplette CGI-Skript-Programmierungen zu lernen.
Angenommen Du suchst Hilfe in einem Rennradforum, weil Du gerade ein neues Rad von Hersteller X gekauft hast und Du gerne ein Zubehör anbringen möchtest. Wie gefiele Dir dann die Antwort, Dein Rad sei ja total veraltet und erstmal solltest Du den Carbonrahmen selber kleben, dann können wir über das Anbringen eines Tachos reden? So kommt mir Dein Posting leider vor. Und da ich jetzt wohl keinerlei hilfreiche Ratschläge mehr zu meinem (wie ich dachte kleinen) Problem bekommen werde, müssen sich halt meine HP-Besucher ihre Bewertungen ohne Zusatzinfo ansehen.
Nix für ungut,
Birdman
Moin Moin !
Ist Dir aufgefallen, daß Du Dich gerade als Lernverweigerer geoutet hast ? Mir wäre das echt peinlich.
Cheatah hat versucht, Dir zu helfen. Aber er hat Dir keinen Code geschrieben. "Dies ist SelfHTML, nicht GetHTML", hat heute hier jemand (Cheatah ?) gepostet. Das Forum und der Rest (SelfAktuell, SelfHTML) ist Hilfe zur Selbsthilfe.
Alexander
Hi,
"Dies ist SelfHTML, nicht GetHTML", hat heute hier jemand (Cheatah ?) gepostet.
ja, ich. Und um bei Birdmans Vergleich zu bleiben: Wenn Du in einem Fahrrad-_Selbstbau_-Forum nach Zubehör fragst, wirst Du ebenfalls[1] Hilfe dazu bekommen, wie Du es Dir selbst herstellst.
Das Forum und der Rest (SelfAktuell, SelfHTML) ist Hilfe zur Selbsthilfe.
Das zitiere ich einfach noch mal, in der Hoffnung, dass es einmal mehr gelesen wird.
Cheatah
[1] Sofern es sich selbst herstellen lässt, versteht sich - deswegen hinkt der Vergleich, denn alles, worum es in diesem Forum geht, lässt sich mit einem Texteditor erledigen.
Hi Birdman,
Kannst Du Dir vorstellen, daß es Menschen gibt, die z.B. einem Hobby nachgehen und deshalb gewisse Informationen übers Internet austauschen möchten. Die aber deswegen nicht soviel Zeit haben, sich in alle Feinheiten einzuarbeiten und komplette CGI-Skript-Programmierungen zu lernen.
das ist ja auch gar nicht verlangt worden. Es gibt Skripte, die besser lesbar sind - man muß nicht alles selbst schreiben.
Man muß aber auch nicht mit Müll ankommen und ihn hier im Forum reparieren lassen wollen.
Und da ich jetzt wohl keinerlei hilfreiche Ratschläge mehr zu meinem (wie ich dachte kleinen) Problem bekommen werde
Du hast den hilfreichsten Hinweis bereits erhalten: Suche Dir ein besser wartbares Skript für diese Aufgabenstellung - das ist umso wichtiger, je _weniger_ Du selbst von CGI-Programmierung verstehst.
Viele Grüße
Michael