einlesen von daten
Pitt
- cgi
0 Stefan Bach0 Pitt
0 Michael Schröpl
hi,
ich habe eine html-seite wo ich den namen von einer person ermittle, danach kann die person auf einen knopf drücken und kommt auf eine nächtste html-seite wo die person die restlichen daten eintragen kann. jetzt kann die person auf ein submit-button klicken und ein cgi-programm wird aus geführt. das cgi-programm liest die daten aus und speichert sie dann auf einer neuen html-seite.
aber das cgi-programm liest die daten nur aus der zweiten html-seite, also wo die restlichen daten abgefragt werden aus.
das cgi-programm sollte aber auch die erste seite mit dem namen auslesen.
wie mache ich das??
mein cgi-script:
-----------------
#!/usr/bin/perl
use strict;
use CGI;
my $CGI = new CGI;
use CGI::Carp qw(fatalsToBrowser);
open(HTML, ">>Neue_Seite.html");
print HTML cgi->param('name');
print HTML cgi->param('daten');
close(HTML);
-----------------
danek im voraus
Hallo,
ich habe eine html-seite wo ich den namen von einer person ermittle, danach kann die person auf einen knopf drücken und kommt auf eine nächtste html-seite wo die person die restlichen daten eintragen kann. jetzt kann die person auf ein submit-button klicken und ein cgi-programm wird aus geführt. das cgi-programm liest die daten aus und speichert sie dann auf einer neuen html-seite.
Ist ja auch logisch, oder? Woher soll denn dein CGI Programm die Daten der ersten Seite wissen, wenn es nur die der zweiten gesendet bekommt. Du musst hier entweder
a) mit Sessions arbeiten und die Daten nach jedem Verschicken in deiner Session speichern
oder in deinem Fall viel einfacher
b) die Daten der ersten Seite nach dem Abschicken in der zweiten Seite in <input type="hidden"> Felder eintragen.
Viele Grüße,
Stefan
Ach so. Und wie mache ich so ne sessions? Oder kann ich
mir des hier irgendwo bei Selfhtml durchlesen?
Hallo,
Ach so. Und wie mache ich so ne sessions? Oder kann ich
mir des hier irgendwo bei Selfhtml durchlesen?
Ich denke mal du solltest die oben angesprochene Möglichkeit b) verwenden. Die bekommst du sicher ohne große Probleme selber hin.
Viele Grüße,
Stefan
Hi Pitt,
ich habe eine html-seite wo ich den namen von einer person ermittle, danach kann die person auf einen knopf drücken und kommt auf eine nächtste html-seite
... die selbst bereits eine serverseitige (CGI-)Anwendung sein muß.
wo die person die restlichen daten eintragen kann.
jetzt kann die person auf ein submit-button klicken und ein cgi-programm wird aus geführt.
Yep, das ist jetzt die zweite CGI-Anwendung innerhalb Deiner Verarbeitung.
das cgi-programm liest die daten aus
Äh, ja. Aber nicht so, wie Du das tust, sondern über die CGI-Schnittstelle.
und speichert sie dann auf einer neuen html-seite.
Streiche "auf". Mache Dir bewußt, was CGI ist. (Nein, CGI ist _keine_ Programmiersprache.)
aber das cgi-programm liest die daten nur aus der zweiten html-seite,
Schon das darf es nicht tun.
das cgi-programm sollte aber auch die erste seite mit dem namen auslesen.
Es existiert keine "erste Seite".
open(HTML, ">>Neue_Seite.html");
Und wenn zwei Besucher gleichzeitig Deinen Dialog-Pfad durchlaufen, dann schreiben sie hier gleichzeitig in dieselbe Datei => Chaos in Laos. Nein, so geht das nicht.
Genau um so etwas zu verhindern, gibt es CGI-Parameter.
print HTML cgi->param('name');
print HTML cgi->param('daten');
Die CGI-Parameter, welche Du korrekterweise eingelesen hast, müssen schon von der ersten CGI-Anwendung selbst wiederum in einen Link, ein Formular, ein was-auch-immer eingetragen werden, mit dem Du von der ersten zur zweiten Seite navigierst.
Dann kann die zweite CGI-Anwendung diese Werte ebenfalls über die CGI-Schnittstelle wieder einlesen.
Viele Grüße
Michael