Anmelden

View Full Version : CGIDEV2 und Webserver



Seiten : [1] 2

mk
29-01-07, 10:32
Hallo *all,

arbeitet jemand von mit cgi RPG und dem Webserver ?

Einige Sachen sind mir nicht so ganz klar und ich hätte
da ein paar Fragen.

Vielleicht kann mir jemand auf die Sprünge helfen :rolleyes: .

Gruss
Michael

gimmix
30-01-07, 08:48
Hallo Michael

Ich arbeite damit und hoffe Dir helfen zu können

Gruss
Edgar

mk
30-01-07, 09:12
Hallo Edgar,

schön das jemand damit arbeitet.

Bis jetzt klappt folgendes.
- Webserver läuft
- RPG CGI Programm funktioniert
- IFS HTML Files können verarbeitet werden
- HTML Files werden vom Browser angezeigt
Der Grundaufbau ist also okay.

Jetzt aber folgende Frage:

Auf der Sample Page habe ich einen Link auf
xyz.html

Die Seite xyz.html wird auch angezeigt. Auf der Seite ist ein Formular mit Eingabefeldern. Die Values der Felder sollen mit
den Variablen /%aName1%/ etc.. gefüllt werden. Mit dem
Download Button wird der Post durchgeführt und die
Formularfelder verarbeitet.

Da bei dem Link aber nicht das CGI Programm durchlaufen wird
werden beim ersten mal die Felder mit /%aName%/ etc. angezeigt.

Kann man einen Link aufrufen indem direkt das CGI Programm
gestartet wird und man im CGI erkennen kann was zu tun ist ?

Ich hoffe es ist verständlich?


Gruss
Michael

gimmix
31-01-07, 08:26
Hallo Michael
Der Link in der Sample Page darf nicht auf die html - Datei verweisen, sondern auf ein CGI, das die HTML Datei aus dem IFS liest und die Variablen mit den Inhalten ersetzt und diese dann über den WebServer ausgibt.
Im Prinzip genauso wie Du bei dem Download Button über Post die Verarbeitung startest, must Du beim ersten Mal das auch machen , entweder aus einer Datei die Inhalte auslesen oder nur einfach mit Leerzeichen ausüllen.

Gruss
Edgar

mk
31-01-07, 08:45
Hallo Edgar,

danke für die Antwort, aber da fehlt bei mir noch ein bischen
Hintergrunfwissen.

- wie müsste denn der Link auf das CGI Programm aussehen ?
- wie kann ich in meinen CGI Programm feststellen welche
Seite jetzt ausgegeben werdne soll?


Danke für deine Bemühungen
Gruss
Michael

gimmix
31-01-07, 09:33
Hallo Michael
z.B. http://ip-adresse/CGIBIN/tg01.pgm
aber wie rufst Du das CGI mit dem Download Button in deinem Formular auf?

Frage 2 :
das muss man eben programmieren, ggf über eine Sitzungs-ID feststellen, ob das der erste Aufruf ist , dann eben Seite 1 aufrufen , ist die Sitzungs-ID gefüllt die Daten noch einmal anzeigen mit Seite 2 , die entweder die Möglichkeit bietet das ganze zu speichern , oder auf eventuelle Fehler in der Eingabe hinweist.

Bei meiner CGIDEV2 Installation war eine Dokumentation sowie Beispielprogramme unter der Adresse
http://ip-adresse as400/cgidev2/start (http://ip-adresse%20as400/cgidev2/start)
zu finden.

Gruss
Edgar

mk
31-01-07, 10:00
Hallo Edgar,

zu 1:
Wenn ich das CGI Programm so aufrufe kommt natürlich nichts
weil das PGM nicht weiß welche HTML Datei geöffnet werden soll.
In dem HTML wird das PGM mit POST aufgerufen. In der
HTML Datei ist duch ein Hidden Feld gekennzeichnet welche HTML Datei
verarbeitet wird.

zu 2:
wie hast Du denn eine Session ID realisiert ?

Die Beispielanwendung habe ich auch installiert. Ich werde
mir das nochmal in Ruhe ansehen.

Gruss
Michael

gimmix
31-01-07, 10:21
Hallo Michael

zu 1
Gut bei dem ersten Aufruf gibt es kein Hidden Feld, das heisst der Wert , der den Namen der HTML Datei beinhalten soll, ist leer. Im CGI-Programm ist dieser Zustand abzufragen , dann weiss mann, es ist der erste Aufruf und füllt den Namen der HTML Datei sowie es in der Situation gebraucht wird.

zu 2
Ich schreibe grundsätzlich immer eine Datei mit. Ist die ID nicht gefüllt, vergebe ich einen eindeutigen Wert und schreibe einen neuen Satz, ansonsten nehme ich immer Bezug auf die bestehende ID und kann Plausis ansetzen auf Sitzung abgelaufen, Benutzer , Daten , Vorgangsart , usw. usw. was auch immer in dieser Datei an Daten mitgeführt werden soll, kann oder muss. Die ID kann ermittelt werden aus Zufallszahl , Zeitstempel, fortlaufende Nummerierung je nach gewünschtem Sicherheitsgrad.

Gruss
Edgar

mk
07-02-07, 11:04
Hallo Edgar,

soweit klappt es mit dem Webserver und den RPG CGI Programmen.



Der Aufruf mit einem Programm funktioniert auch soweit.
Ich muss nochmal eine Frage stellen:

Ich starte z.B. http://ip-adresse/CGIBIN/ww01.pgm

Kann man dem Programm auch Parameter mitgeben also z.B
http://ip-adresse/CGIBIN/ww01.pgm 'seite1' oder
http://ip-adresse/CGIBIN/ww01.pgm 'seite1'

Ich möchte vermeiden das ich für jeden Aufruf ein eigenes Programmm
erstellen muss.

Hiermit stelle ich fest das es sich um ein GET Request handelt.
C callp getinput(indata:inactln:ReqMethod)
Allerdings ist das Feld indata leer.




Desweiteren noch die Frage:
In einem Formular sind 5 Buttons definiert.
Bei den Buttons wird der POST ausgelöst.
Kann man feststellen von welchem Button der POST kommt ?


Gruss
Michael
ein Benutzer angeklickt hat

gimmix
07-02-07, 14:15
Hallo Michael
Der Link muss dann so aussehen :
http://ip-adresse/CGIBIN/ww01.pgm?indata=seite1

Das Auslesen von GET oder POST Daten mache ich bisher immer über zhbgetvar:

eval ##indata = zhbgetvar('indata')

zu Frage Button
anhand von 2 buttons:
<input type="submit" name=b1 value="A">
<input type="submit" name=b2 value="B">
kann hierüber abgefragt werden:
eval ##b1 = zhbgetvar('b1')
eval ##b2 = zhbgetvar('b2')
und nur der Wert des gedrückten Buttons kommt zurück ins Programm.

Gruss
Edgar