[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    850

    Question CGIDEV2 und Webserver

    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 .

    Gruss
    Michael

  2. #2
    Registriert seit
    Sep 2006
    Beiträge
    8
    Hallo Michael

    Ich arbeite damit und hoffe Dir helfen zu können

    Gruss
    Edgar

  3. #3
    Registriert seit
    Jan 2001
    Beiträge
    850

    Wink

    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

  4. #4
    Registriert seit
    Sep 2006
    Beiträge
    8
    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

  5. #5
    Registriert seit
    Jan 2001
    Beiträge
    850
    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

  6. #6
    Registriert seit
    Sep 2006
    Beiträge
    8
    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
    zu finden.

    Gruss
    Edgar

  7. #7
    Registriert seit
    Jan 2001
    Beiträge
    850
    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

  8. #8
    Registriert seit
    Sep 2006
    Beiträge
    8
    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

  9. #9
    Registriert seit
    Jan 2001
    Beiträge
    850
    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

  10. #10
    Registriert seit
    Sep 2006
    Beiträge
    8
    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

  11. #11
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo Edgar,

    perfekt, danke Dir.

    Ich bin immer wieder erstaunt was man mit einfachen Mitteln
    alles auf der Maschine erreichen kann.

    Gruss
    Michael


    PS: Wenn ich was vorzeigbares habe melde ich mich wieder

  12. #12
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hallo Edgar,

    ich muss leider nochmal eine Frage stellen.

    In meinem Beispielprogramm wollte ich über die meta Angaben
    ein paar Variablen füllen.

    Ich habe gedacht das die meta Angaben auch beim einlesen
    der HTML Datei zur Verfügung stehen würden.

    Beispiel:
    <meta http-equiv="CGI_ERR" content="**Missing Data**">

    Leider bekomme ich die Variablen mit zhbgetvar aber nicht.

    Geht das überhaupt oder habe ich einen Gedankenfehler?

    Gruss
    Michael

Similar Threads

  1. AS400 als webserver
    By cc in forum NEWSboard Linux
    Antworten: 5
    Letzter Beitrag: 09-08-06, 11:37
  2. Net.Data unter V5R2
    By Peet in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 04-10-04, 13:11
  3. Antworten: 10
    Letzter Beitrag: 23-06-03, 07:55
  4. IBM - Webserver (Prüfliste???)
    By stefan400 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-01-03, 15:41
  5. Schnellster Webserver der Welt von IBM
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 13-08-01, 14:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •