Entwickler-Ecke
Internet / Netzwerk - CGI-Anwendungen
DeCodeGuru - Do 27.06.02 11:26
Titel: CGI-Anwendungen
Hi,
kann mir einer ein kleines Codebeispiel für eine CGI-Anwendung geben?
Wichtig dabei wäre, dass beim Aufrufs des Programm eine ein Parameter übergeben wird.
Wäre echt super, wenn mir einer helfen könnte.
MfG DeCodeGuru
crip - Sa 29.06.02 16:51
In Delphi Hilfe schon mal nachgeguckt?
Ok ich hab da nicht durchgeblickt aber wahrscheinlcih gibs du dir mehr Muehe als ich :D
MfG
Crip :arrow:
MerlinElMago - Do 11.07.02 16:52
Titel: kein problem...
die einfache methode ist sicherlich eine neue web applikation zu öffnen und die ganzen events zu beantworten. aber ich möchte dir mal eine ganz andere (jedoch HARDCORE :twisted: ) lösung nahebringen. ich persönlich bin einer von der alten garde und deswegen mache ich lieber sachen per hand als das ein komponent mir meine probleme löst, denn mit komponenten weiss man nie so richtig was die machen.
ich setze natürlich voraus das du TP kenntnisse hast, denn in meinem beispiel wird alles OHNE komponenten gemacht.
als erstes, mach' eine console applikation und dann hast du ein leeres programm. gut.
merke dir:
alles was mit writeln in stdout geschrieben wird, kommt beim remote user als http daten an. also musst du nur noch eine komplette seite aufbauen.
ein beispiel wäre:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| program Project; {$APPTYPE CONSOLE} uses SysUtils; begin { TODO -oUser -cConsole Main : Insert code here }
// AB HIER GEHT DIE HTML ÜBERTRAGUNG LOS...
WriteLN('content-type: text/html'); WriteLN;
// HIER IST DER HEADER ZUENDE UND DER MUSS IMMER DA SEIN DAMIT DER BROWSER WEISS DASS EIN DOKUMENT FOLGT!
WriteLN('<HTML><BODY>'); WriteLN('<H1> Hallo DeCodeGuru</H1>' WriteLN('</BODY></HTML>')
// HIER IST DAS DOKUMENT ZUENDE UND DAMIT AUCH UNSER PROGRAMM end. |
der header ist sehr wichtig und der
MUSS so wie ich ihn hier geschrieben habe präsent sein. es sei denn, du möchtest einen file verschicken oder ähnliches... dann ist das eine andere geschichte. aber belassen wir es erstmal hierbei.
wenn du interaktivität möchtest, dann kannst du environmentvariablen auslesen. wie das geht? ganz einfach :
Quelltext
1:
| GetEnvironmentVariable('MEINE VARIABLE'); |
diese funktion gibt die variable als string aus die man wissen möchte.
eine liste aller variablen kannst du hier sehen...
http://lightning.prohosting.com/~relsom/variables.shtml
eigentlich sind die variablen für cgi scripts auf unix maschienen, aber die namen sind die gleichen in delphi.
ich hoffe ich hab' dir geholfen wenn noch fragen sind dann poste oder schick' mir 'ne PM.
gruss
merlin
DeCodeGuru - So 14.07.02 10:39
Hey danke erstmal,
ich kam gestern abend erst ausm Urlaub zurück
@MerlinElMago: Das habe ich bisher auch schon hinbekommen. Und meine CGI-Anwendung hat auch Parameter ausgewertet, leider musste ich feststellen, dass meine JavaScript und HTML-Kentnisse leider nicht ausgereicht haben. Also, mittlerweile wäre meine Frage, wie ich aus einem JavaScriptformular meinem Programm die Eingaben direkt übergeben kann. Wenn ihr dazu was wisst, wäre das auch super.
MerlinElMago - So 14.07.02 11:26
Titel: -->
hallöchen.
toll dass es dir weitergeholfen hat.
auf deine frage eingaben in dein cgi programm zu übertragen, kann ich nur sagen, dass du es mit normalem HTML hinkriegst ohne zwingenderweise JavaScript zu benutzen (obwohl es mit JS genauso geht).
dazu brauchst du den
<FORM> tag von HTML.
alles was zwischen
<FORM> und
</FORM> steht, wird dein formular. siehe->
http://www.htmlhelp.com/reference/html40/forms/form.html
es gibt im form tag eine besondere methode die exact das macht was du möchtest, nämlich werte an eine cgi anwendung schicken. das geht einfach mit:
Quelltext
1:
| <form method=GET action="http://meine.cgianwendung.com/cgi-bin/hier.exe"> |
oder mit
Quelltext
1:
| <form method=POST action="http://meine.cgianwendung.com/cgi-bin/hier.exe"> |
POST wird benutzt wenn die zu übertragenden zeichen nicht url konform sind, also "©" oder ähnliche, und
GET ist dazu da url konforme zeichen zu übertragen.
das alles kann (wie du sicher schon weisst) mit der
QUERY_STRING variable ausgelesen werden.
gruss
merlin
DeCodeGuru - So 14.07.02 22:16
Hi MerlinElMago,
danke erstmal für deine Antwort. Werde das auch gleich mal ausprobieren, aber leider weiss ich noch nicht, wie ich die Daten einlesen soll. Bisher habe ich einfach die Parameter, die ich meinem CGI-Prog übergeben habe ausgewertet. Kannste mir das kurz erklären (Nur wenn es nicht zu viel ausmacht), wie das geht.
DeCodeGuru - Mo 15.07.02 11:22
Ähm tut mir leid, dass ich so voreilig gepostet habe, aber ich habe es hinbekommen :oops:
Ich hoffe, dass ich dir nicht zuviel Zeit gekostet habe ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!