Seite 1 von 2

Linux CGI Beispiel

Verfasst: 12.05.2005 17:15
von DarkDragon
Guten Abend,

Ich habe hier ein kleines Beispiel unter coLinux geschrieben:

Code: Alles auswählen

printn("CONTENT-TYPE: text/html"+chr(10)+chr(10))
printn("<!DOCTYPE HTML PUBLIC "+chr(34)+"-//W3C//DTD HTML 4.0//EN"+chr(34)+" "+chr(34)+"http://www.w3.org/TR/REC-html40/strict.dtd"+chr(34)+">"+chr(10))
printn("<html lang="+chr(34)+"en"+chr(34)+" dir="+chr(34)+"LTR"+chr(34)+">"+chr(10))
printn("<body>"+chr(10))
printn("Your IP: "+PeekS(getenv_("REMOTE_ADDR"))+chr(10))
printn("</body>"+chr(10))
printn("</html>"+chr(10)+chr(10))
PrintN() gibt immer etwas aus. Zuerst muss jedoch immer der Inhalts-typ festgelegt werden. Dies geschieht durch printn("CONTENT-TYPE: text/html"+chr(10)+chr(10)). Zu beachten sind auch die beiden Chr(10)+Chr(10), die immer an dieser Zeile vorhanden sein müssen. Bei printn("Your IP: "+PeekS(getenv_("REMOTE_ADDR"))) habe ich noch ein weiteres Feature eingefügt. Durch getenv_ kann man eine Umgebungsvariable auslesen. In diesem fall REMOTE_ADDR(Die Internet IP-Adresse des Users).

Hier kann man das Packet herunterladen:
http://www.bradan.net/downloads/cgi_example.zip

Die EXE bitte nicht unter Windows starten, es ist eine Linux Anwendung.

Hier noch der Output:
http://www.bradan.net/cgi-bin/test

Und hier noch eine Liste der Umgebungsvariablen mit'n paar Beispielwerten:

HTTP_USER_AGENT="Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.3) Gecko/20041020"
SERVER_PORT=80
HTTP_HOST=localhost
DOCUMENT_ROOT="/var/www/html"
HTTP_ACCEPT_CHARSET="iso-8859-1,*,utf-8"
SCRIPT_FILENAME="/var/www/cgi-bin/env.sh"
REQUEST_URI="/cgi-bin/env.sh"
SCRIPT_NAME="/cgi-bin/program.cgi"
HTTP_REFERRER="http://localhost/web-page.html"
HTTP_CONNECTION=Keep-Alive""
REMOTE_PORT=32984
PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
PWD="/var/www/cgi-bin"
SERVER_ADMIN="root@localhost"
HTTP_ACCEPT_LANGUAGE=en
HTTP_ACCEPT='text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'
REMOTE_ADDR='127.0.0.1'
SHLVL=1
SERVER_NAME=localhost
SERVER_SOFTWARE='Apache/2.0.52 (Fedora)'
QUERY_STRING=
SERVER_ADDR='127.0.0.1'
GATEWAY_INTERFACE='CGI/1.1'
SERVER_PROTOCOL='HTTP/1.1'
HTTP_ACCEPT_ENCODING=gzip
REQUEST_METHOD=POST
CONTENT_LENGTH=47
CONTENT_TYPE='application/x-www-form-urlencoded'
POST_DATA='formval1=VALUE1&formval2=VALUE2&formval3=VALUE3'

Verfasst: 12.05.2005 17:44
von benny
@DDragon:

Absolut keine Ahnung ... aber sofern Du mit Deinem Account überhaupt
eigene CGI's benutzen darfst, würde ich den all-inkl-Support mal fragen.

Ich habe von denen immer sehr schnell und sehr gute Hilfe bekommen :!:

Verfasst: 12.05.2005 18:05
von DarkDragon
benny hat geschrieben:@DDragon:

Absolut keine Ahnung ... aber sofern Du mit Deinem Account überhaupt
eigene CGI's benutzen darfst, würde ich den all-inkl-Support mal fragen.

Ich habe von denen immer sehr schnell und sehr gute Hilfe bekommen :!:
Darf ich ja, sonst hätt ich damit ja nie angefangen ^^.

http://all-inkl.com/index.php?content=a ... r=&domain=
CGI / Perl 5.xx eigene CGI's möglich Ja Ja Ja
[EDIT]
OK, alles funzt prima nun! ;)

Verfasst: 15.05.2005 15:28
von bluejoke
Hallo!

Könnt ihr mir das bitte nochmal langsam erklären: Wie krieg ich CGI-Teil aus meinem PB-Sourcecode?

Danke,
Simon

Verfasst: 17.05.2005 13:30
von 125
Hi :)
Hab mir das gerade mal angeguckt, aber wie kann ich werte die ein Formular gepostet hat bekommen oder Werte getten die so übergeben wurden CGI?Variable=xxx ?

Schonmal Danke in voraus :)


//Edit: bei mir gibt das immer nen ServerFehler :(
Serverfehler!

Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
Premature end of script headers: test

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 500

mfg
125

Verfasst: 17.05.2005 13:36
von freedimension
125 hat geschrieben:Hi :)
Hab mir das gerade mal angeguckt, aber wie kann ich werte die ein Formular gepostet hat bekommen oder Werte getten die so übergeben wurden CGI?Variable=xxx ?
IMHO müsste das analog zum obigen Beispiel eigentlich auch über getenv_("Variable") funktionieren.

Verfasst: 17.05.2005 13:40
von Danilo
freedimension hat geschrieben:IMHO müsste das analog zum obigen Beispiel eigentlich auch über getenv_("Variable") funktionieren.
ProgramParameter() sollte man auch mal probieren. Ich habe
da was im Hinterkopf das da auch was ankommt... kann es aber
nicht sicher sagen.

Verfasst: 17.05.2005 13:43
von 125
THX, werd ich mal probieren.
Aber aus irgendeinem Grund funktioniert das Beispiel (kompiliert, oder selbst kompiliert) nicht bringt mir immer nen 500er aufm Server :(.

Woran kann das liegen? (Wer mal guckn will : http://125.gpfclan.de/cgi-bin/cgi.exe )

mfg
125

Verfasst: 17.05.2005 13:43
von DarkDragon
125 hat geschrieben:Hi :)
Hab mir das gerade mal angeguckt, aber wie kann ich werte die ein Formular gepostet hat bekommen oder Werte getten die so übergeben wurden CGI?Variable=xxx ?

Schonmal Danke in voraus :)


//Edit: bei mir gibt das immer nen ServerFehler :(
Serverfehler!

Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
Premature end of script headers: test

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 500

mfg
125
Also, Variablen etc. werden bei GET über die Umgebungsvariable QUERY_STRING übergeben. Diese kannst du durch getenv_() auslesen.
bluejoke hat geschrieben:Hallo!

Könnt ihr mir das bitte nochmal langsam erklären: Wie krieg ich CGI-Teil aus meinem PB-Sourcecode?

Danke,
Simon
Das CGI-Teil ist die Anwendung(du erstellst einfach eine Executable). Diese muss allerdings auf dem Betriebssystem deines Hosters geschrieben werden. Dann ladest du sie einfach in deinen cgi-bin und alles ist in ordnung.

[EDIT]
125 hat geschrieben:THX, werd ich mal probieren.
Aber aus irgendeinem Grund funktioniert das Beispiel (kompiliert, oder selbst kompiliert) nicht bringt mir immer nen 500er aufm Server :(.

Woran kann das liegen? (Wer mal guckn will : http://125.gpfclan.de/cgi-bin/cgi.exe )

mfg
125
Welchen CHMOD hat dein CGI-BIN? Und hat dein Server überhaupt CGI-Funktionalität? Und ist es ein Windows oder ein Linux Server?

Verfasst: 17.05.2005 13:57
von 125
DarkDragon hat geschrieben: Welchen CHMOD hat dein CGI-BIN? Und hat dein Server überhaupt CGI-Funktionalität? Und ist es ein Windows oder ein Linux Server?
chmod ist 777
und ein Suse 9.0 Root-Server. und der server unterstützt CGI.
:( Aber er nimmt die executable trotzdem nit :(
(hab sie mit pb auf Debian compiliert -> geht nicht, deine compilierte genommen-> geht nicht :( )

pls help
mfg
125