Moin!
Hallo Christian,
Im Code habe ich es dann natürlich nicht mehr vermerkt, da hast du Recht.
Allerdings ist kein Fehlverhalten aufgetreten, selbst beim Aufruf der Datei ohne gänzliche Parameter.Das heisst nichts ;) Gerade auf Systemen, wo nicht die GNU-Libs benutzt werden (also auf FreeBSD oder Solaris) gibts da gerne schonmal Abstürze, wenn du Glück hast.
OK. Das sollte mir sagen, dass bei solchen Dingen generell ganz genau aufgepasst werden sollte.
Im Umgang mit Pointern, und letztendlich sind C-Strings und C-Arrays nichts Anderes, musst du generell Vorsicht walten lassen, weil ein falscher Gebrauch davon eine der Sicherheitslücken schlechthin ist, Stichwort Buffer Overflow, ungeprüfter Pointerzugriff, Manipulation der Rücksprungadresse.
Wie formatiert man diesen nun am besten um? Und bekommt auch Sonderzeichen wieder so, wie sie übergeben wurden?
Naja, von Hand. Query-String durchgehen, bei & trennen, bei = trennen, der Teil vor dem = ist der Feld-Name, der Teil danach der Wert. Kodierung ist %<Hex-Ziffer><Hex-Ziffer>, also ist die Dekodierung auch ziemlich einfach.
Ich habe mir so etwas schon fast gedacht.
Bei POST sieht das anscheinend etwas anders aus, aber da habe ich eine ganz gute Quelle gefunden.
Wie Christian schon angedeutet hat: Der einzige Unterschied zwischen GET und POST ist (unter den normalen Voraussetzungen, also nicht multipart/form-data), dass bei POST der Querystring durch die Standardeingabe (stdin bzw. std::cin) hereinkommt, wobei dessen Länge in der Umgebungsvariable CONTENT_LENGTH steht. Genaueres dazu findest du im Selfhtml-Abschnitt <http://de.selfhtml.org/servercgi/cgi/formularverarbeitung.htm@title=HTML-Formulare und CGI>.
Wegen dem RDBMS:
Ich habe gehört, dass MySQL offenbar einige Performance-Probleme hat. Wäre für mich da ein anderer Server besser geeignet, z. B. PostgreSQL?
Was hast du denn vor? Die Bereiche, in denen PostgreSQL seine Performance-Vorteile gegenüber MySQL ausspielen kann, erreichst du IMHO erst, wenn deine Datenbank-Anwendung wirklich stark beansprucht wird. Dafür bietet PostgreSQL allerdings Features, die es in neueren MySQL-Versionen oder bislang noch gar nicht gibt (referenzielle Integrität, Trigger, Views, Subselects).
Viele Grüße,
Robert