Entwickler-Ecke
Internet / Netzwerk - CGI-Scripte mit Delphi
Danny87 - Do 02.03.06 17:52
Titel: CGI-Scripte mit Delphi
Hi zusammen,
Da ich vorhabe auf meiner Website eine Art Mitgliederlogin oder eine Umfrage oder so zu integrieren, möchte ich gern ein eigenes CGI-Script schreiben.
Dass das mit C++ möglich ist, weiss ich, aber geht das auch mit Delphi?
Wenn ja: wie?
gruss daniel
Moderiert von
AXMD: Link entferntModeriert von
AXMD: Topic aus Sonstiges (Delphi) verschoben am Do 02.03.2006 um 16:59
AXMD - Do 02.03.06 17:58
Prinzipiell kannst du das mit jeder Sprache machen, sofern der Server es erlaubt/unterstützt. Auf einem Unix-Server wirst du dir mit Delphi beispielsweise schwer tun :P
AXMD
PS. Was jetzt nicht heißt, dass es mit Kylix nicht ginge...
//EDIT: CGI ist übrigens eine Schnittstelle, keine Skriptsprache. Perl ist beispielsweise eine Sprache, die über das CGI (
COMMON GATEWAY INTERFACE) genutzt werden kann.
Alfons-G - Mo 06.03.06 18:46
Bei den älteren Delphi-Versionen (bis 7) gibt es CGI-Beispiele im Demos-Verzeichnis.
Prinzipiell ist das Erstellen von CGI-Anwendungen mit Delphi sehr einfach. Man kann theoretisch CGI-Anwendungen "zu Fuß" erstellen, da das Programm den HTTP-Request über die Standardeingabe empfängt und den HTTP-Response über die Standardausgabe zurückliefert. Allerdings nehmen einem die entsprechenden Delphi-Komponenten viel Arbeit ab, da sie selbst die übergebenen Parameter auswerten und die korrekten HTTP-Header erzeugen. Es gibt dazu auch ein paar Tutorials im Web.
Danny87 - Mo 03.04.06 10:41
hmm... okay. das mit dem erstellen hab ich jetzt dank der demos hingekriegt.
allerdings weiss ich nicht wie ich die jetzt zB in <form></form> aufrufen soll.
wenn ich zB <form action="blabla.exe"> oder so ähnlich mache, dann will er die datei runterladen.
da muss man doch auch noch parameter angeben, aber wie mach ich das?
gruss daniel
Alfons-G - Mo 03.04.06 11:50
Hallo,
das Verzeichnis, in dem die Exe liegt, muß natürlich Ausführungsrechte besitzen. Beim IIS kannst Du das im IIS-Admin einstellen. Sonst versucht der Webserver, die Datei zum Download anzubieten.
8)
Danny87 - Mo 03.04.06 12:06
ich hab jetzt mal die zugriffsrechte (CHMOD) alle auf 777 (voller schreib-lesezugriff) gesetzt.
wenn ich jetzt <form action="tt/ding.exe" method="post"> mache, dann erscheint
| Zitat: |
Method Not Allowed
The requested method POST is not allowed for the URL /tt/ding.exe.
Apache/1.3.33 Server at dannys-software.de Port 80
|
wenn ich allerdings <form action="tt/ding.exe" method="get"> mache, dann will er die datei runterladen.
mach ich vielleicht bei dem aufruf irgendwas falsch?
gruss daniel
Timosch - Mo 03.04.06 12:10
Du musst in der .profile (geht verzeichnisweit auch in der .htaccess) einstellen, dass dieses Verzeichnis als CGI-Bin genutzt wird. Keine Ahnung, wie das geht.
Danny87 - Mo 03.04.06 12:18
okay, das hab ich jetzt gemacht (hab die exe ins cgi-bin verzeichnis aufem server geschoben -.-). jetzt bekomme ich eine andere meldung:
| Zitat: |
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@dannys-software.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Apache/1.3.33 Server at dannys-software.de Port 80
|
die versteh ich jetzt nicht ganz.
Danny87 - Di 04.04.06 09:40
Ich poste einfach mal den Code.
Delphi-Code (ding.exe)
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| program ding;
{$APPTYPE CONSOLE}
uses SysUtils;
begin write('<HTML>'); write('<HEAD></TITLE>Site von Anwendung erzeugt</TITLE></HEAD>'); write('<BODY>'); write('<FONT COLOR="#000099">'); write('<b>Fett</b><br>'); write('<i>Kursiv</i><br>'); write('<u>Unterstrichen</u>'); write('</FONT>'); write('</BODY>'); write('</HTML>'); end. |
HTML-Code (bla.html)
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <TITLE> Ein Test ! </TITLE> </HEAD> <BODY> <FORM action="cgi-bin/ding.exe" enctype="text/html" method="GET" name="Testform"> <INPUT type="submit" value="Okay" action="submit"> </FORM> </BODY> </HTML> |
Die Dateien bla.html und ding.exe haben beide CHMOD 777. Genauso das Verzeichnis cgi-bin.
Mache ich vielleicht was generelles falsch (wie zB den Aufruf aus dem Formular heraus)?
gruss daniel
Sy- - Di 04.04.06 14:25
Warum überhaupt so umständlich?
Mein Rat ist PHP, damit kannste alles und das verdammt konfortabel.
CGI ist sogesehen im Internet ausgestorben.
Holst dir einfach ein Texteditor oder Dreamweaver oä. und machst normale HTML Dateien,
mit der Endung .php und schon kannste da wo du nur möchtest PHP Skripte rein basteln.
Hilfe findest du auf
http://www.php.de/
http://www.selfphp.info/
und in Google :wink:
Viel Spaß damit
Gruß
Sy
Danny87 - Di 04.04.06 14:49
meine seiten sind für gewöhnlich alle mit php geschrieben^^ *lol*
der haken is nur, dass ich mich damit nicht wirklich auskenne.
nur include, echo und so.
und es geht mir ja auch ums prinzip, dass das mal so funktioniert mit dem cgi^^
gruss daniel
Sy- - Di 04.04.06 15:00
Also Zeitvertreib :wink:
Nun gut, dann wünsch ich dir noch viel erfolg.
Wenn du kein Bock mehr hast, denk an mich :)
Gruß
Danny87 - Di 04.04.06 15:08
wenn du mir sagen kannst wie ich ne benutzerverwaltung (registrierung und so) mit MySQL und php machen kann,
bin ich gerne bereit dazuzulernen^^
greet'z
Sy- - Di 04.04.06 15:13
Wenn du magst kann ich dich heute abend via E-Mail anschreiben.
Bin zurzeit auf Arbeit.
Gruß
Danny87 - Di 04.04.06 15:19
ich bin auch auf der arbeit.
ich geb dir mal meine icq: 310-973-755
meine email auch noch^^:
danny@dannys-software.de
greet'z
Lossy eX - Di 04.04.06 15:30
Na ja. Ich denke mal es sollte ausreichen, wenn du mal überlegst wie du die Benutzerverwaltung im Delphi gestalten würdest. Und zwar so, dass du irgendwo deine Benutzerdaten + Passwort (indeals MD5 Hashwert) ablegst. Genau so machst du es dann auch mit PHP. Dabei kannst du vom Prinzip auch eine einfache Textdatei benutzen. Diese liest du ein und vergleichst deine Eingabe mit dem der Textdatei. Wenn du jemanden gefunden hast dann ist er eingelockt anderenfalls nicht. Du musst dann dafür sorgen, dass die Datei nur von deinem Skript gelesen werden kann. Entweder liegt die außerhalb des WWW Roots oder ist eben nicht mit den globalen rechten versehen.
Das kannst du natürlich noch beliebig komplizierter (MySQL Datenbank) gestalten. Das war nur das einfachste Beispiel. Musst dann aber auch aufpassen, dass dein Skript sich nicht durch fehleingaben aus dem Tritt bringen lässt. Nichts anderes würdest du in Delphi auch machen. :zwinker:
Danny87 - Di 04.04.06 15:34
nur dumm für mich, dass es bei php keine visuellen komponenten wie zB TQuery gibt^^
Lossy eX - Di 04.04.06 15:41
Tja. Es gibt halt auch ein Leben neben den visuellen Komponenten. ;-) Zu mindest was Webentwicklung angeht. Und da ist php ziemlich das Beste was man finden kann.
Sy- - Di 04.04.06 15:45
Najaaaa.... du hast dir wohl nie wirklich PHP angeschaut @ Lossy eX :wink:
Sy- - Di 04.04.06 15:47
bezüglich vorherigem post :wink:
Lossy eX - Mi 05.04.06 08:29
Sy- hat folgendes geschrieben: |
| Najaaaa.... du hast dir wohl nie wirklich PHP angeschaut @ Lossy eX :wink: |
Hä? Wie meinste denn das jetzt? Aber ja. PHP mache ich nebenbei immer mal wieder. Aber selbst in Delphi gibt eine Welt neben den visuellen Komponenten...
Sy- - Mi 05.04.06 09:36
Naja, bei PHP ist einfach alles integriert und bei allem mitgedacht.
Mitlerweile ist es sogar so, dass du dich garnicht mehr drum kümmern musst, dass zB ein ' in der eingabe steht wenn du ein MySQL oä. eintrag machst, weil automatisch es mit einem backslash gesichert wird (und noch so dinger).
Da heißt es einfach nur umsetzen, statt auf jede kleinigkeit zu achten.
Sprich: So ganz das selbe wird es nicht sein
Lossy eX - Mi 05.04.06 10:34
Gut es ist natürlich schon klar, dass man den Code nicht einfach so übernehmen kann aber die Funktionsweise kann man schon übernehmen. Sonst hast du natürlich schon recht. PHP ist auf einfache Webprogrammierung ausgelegt und kümmert sich um vieles selber. Dennoch bin ich der Meinung, dass man wissen sollte was man tut und auch darauf achten muss nicht grob fahrlässig irgendwelche Lücken rein zu reißen.
Hatte bis vor kurzem ein Kontaktformular auf meiner Seite. Das hat so weit auch funktioniert und konnte auch nicht für andere Zwecke missbraucht werden. Dachte ich zu mindest. Das hatten schon mehrere Erfolglos ausprobiert. Bis jemand systematisch alle möglichen Eingaben ausprobiert hatte und diese verfeinerte. Schlussendlich hat er doch einen Weg gefunden. Was er aber nicht wegbekommen hatte waren die Mails an mich. Also habe ich jeden Schritt gesehen den er gemacht hat und konnte das Leck stopfen. 8-)
In diesem Falle war es für mich ein bisschen Komfort was aber eine Lücke hineingerissen hatte. Also sollte man nicht allzu sorglos mit dem Ganzen umgehen. Speziell was Websachen angeht sollte man sich schon überlegen wo man evtl welche Schwachstellen haben kann. Das ist zu mindest meine Meinung. Kann jeder sehen wie er will nur ich wurde in dieser Sache noch mal bestärkt und werde demnächst noch stärker aufpassen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!