Inhalt eines HTML-Formulares anhand von C++ auslesen.
-
Wie kann ich unter C++ auf den Inhalt eines in HTML ausgefüllten Formulars, ganz ohne CGI, zugreifen? Normalerweise greift man auf den Inhalt über bestimmte Umgebungsvariablen der CGI zu. Da das ganze aber lokal auf einem Rechner laufen soll, brauche ich keine CGI Schnittstelle.
Hoffe es kann mir jemand helfen!Gruß,
Dennis
-
servus
ich versuche dir mal mit meinen bescheidenen fähigkeiten zu helfen und hoffe daß die gurus nicht ausflippen wenn sie meine idee lesen
du machst dir einen stream, der deine datei auslesen kann ( ifstream(), header <fstream> ). ich denke mal in deinem fromular sind gewisse stellen wie "name =" oder <name> oder soetwas, jedenfalls anhaltspunkte für die stellen an denen die interessanten daten liegen. diese stellen suchst du in deinem stream und was danach kommt speicherst du ab.
ich weis ehrlich gesagt nicht genau wie ein ausgefülltes formular aussieht, aber ich lese so ähnlich werte von textdateien ein. dazu muss die datei zwar jedes mal "gleich" aussehen, aber bei einem formular sollte das erfüllt sein
-
Hallo Floh!
So kompliziert braucht man das gar nicht machen, da der eingetragene Inhalt des Formulares, nach drücken des Submit-Buttons, direkt in einen String geschrieben wird. Dieser String wird normalerweise in eine Umgebungsvariable von CGI gespeichert und kann daraufhin bequem bearbeitet werden. Nur möchte ich ganz ohne CGI programmieren, da ich das ganze nicht über einen Server laufen lassen möchte, sondern lokal auf einen Rechner.
Mein Problem ist nun, dass ich nicht weiss wie ich jetzt auf diesen String zugreifen kann.Dennis
-
Hallo,
ein Standard-C++ Problem ist das nicht. Standard-C++ kennt weder HTML noch Formulare. Ich verschiebe dich am Besten mal nach Rund um.
-
Nur in Umgebungsvariablen?
gabs da nicht ne Möglichkeit den String auf stdin zu bekommen?
-
jo, mit method="post" im Formular, wird doch dein Programm einfach mit den Daten in der Standardeingabe aufgerufen!
-
hmmm, da gibts aber zwei Probleme. Erstens: was muss ich dann in das Attribut "action=" eintragen? Direkt die .exe Datei? Dort wird ja normalerweise die CGI Anbindung eingetragen.
Zweitens: Fehlt mir die Länge des Strings. Diese wird normalerweise ebenfalls in den Umbegungsvariablen abgespeichert.Die HTML-Datei einfach komplett einlesen bringt auch nichts, weil dann die eingetragenen Werte des Anwenders fehlen.
Gruß,
Dennis
-
Ja, ich denk mit action="bla.exe" sollte das gehen (?)
Prinzipiell kann doch da alles stehen, dem Browser ist das egal, der lässt nur ausführen und wartet aufs Ergebnis.
Die Länge des Strings brauchst du doch nicht: Du liest von stdin bis zum erreichen von EOF.
-
Hmm, nun komm ich doch ins Zweifeln.
Ich weiss nicht, ob die CGI-Aufrufe über das "action=" vom Browser direkt ausgeführt werden (wenn sie lokal verfügbar sind), oder ob da immer eine entsprechende Anfrage an einen Web-Server dahinter steckt.
Wenn ja, müsstest du zum testen einen lokalen Webserver installieren.
Frag doch mal unsere Freunde im Webzeugs Forum.
-
ja so wie du es geschrieben hast, also action="bla.exe" liest er einfach nur den kompletten Quelltext ein, also nicht den Inhalt des Formulares. Ausserdem musste ich extra angeben, das ich die .exe Datei jetzt öffnen möchte
-
@dennis
wenn du die benutzerdaten in einem formular an dein programm übergeben haben willst, dann musst du dir entweder einen eigenen http-server programmieren, oder einen fertigen benutzen. anders geht es nicht, da der browser die daten per http-protokoll (mit post oder get) an die url im action attribut sendet.
schau dir mal auch die RFC zum http protokoll an...Gruß mathik
-
Hallo,
ich bin leider kein gute C++ Progger, habe aber ne ahnung mit Websachen.
Wenn man ein Formular per get abschickt werde die Eingaben als Variablen in der url an ein script übermittelt wie:
test.php?name=hans&email=hans@hans.de
Das ist also denke ich uninteressant!Wenn man per post schickt macht er folgenden
Aus Selfhtml: werden die Daten des augefüllten Formulars vom Web-Server über den Standardeingabekanal zur Verfügung gestellt.
Dadurch kann man per php oder cgi die daten mit einfachen Befehlen holen.
Die im action aufgerufene Datei muss auf dem server liegen und wird auch auf diesem ausgeführt. Deshalb brauchst du einen lokalen Server (ich empfehle Apache, wenn du mehr infos brauchst pm.) Ob du jetzt mit c++ an die Daten rankommst weis ich net, progg c++ erst seit ein paar Tagen.
such mal in google nach "c++ cgi"
Mehr Tipps kann ich leider net geben, ich hoffe das hilft.
-
Vielen dank für die Antworten. Hab mir jetzt auch einen lokalen Apache-Server installiert und es funktioniert auch wunderbar mit C++, gibt sogar eine passende Libary dafür
Wer auch an soetwas interesse hat, dem kann ich nur folgende Adresse empfehlen:http://www.pronix.de/Perl_cgi/cgi/c_programmierung_27.shtml
Gruß,
Dennis