| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: get parameter in cgi/c++ abfragen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige kann mir vl. mal wer sagen, wie man in cgi/c++ zum henker die get parameter abfragt!? ich krach schon ...
![]() |
| | #1 (permalink) |
| Anzeige kann mir vl. mal wer sagen, wie man in cgi/c++ zum henker die get parameter abfragt!? ich krach schon fast zusammen vor lauter googlen. also dokumentationen und tutorials zu c++ über cgi sind wohl echt ne seltenheit!? | |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Lang ist es her, dass ich C/C++ für CGIs benutzt habe. *in.erinnerungen.kram* Wenn ich mich recht entsinne, wird die Umgebungsvariable QUERY_STRING gesetzt, die man dann einfach mittels getenv() abfragt. Code: ...
char *request = getenv("REQUEST_METHOD");
char *cgi_string;
if( strcmp(request, "GET") == 0 ) {
cgi_string = getenv("QUERY_STRING");
if(cgi_string == NULL) {
// keine parameter
} else {
// parameter verarbeiten
}
}
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter | ehm ja und was ist der query string jetz fürn typ. echt string? soll ich mir das jetz selbst in ein struct array zerlegen? sone kacke. aber danke. // edit. AH. das fragezeichen is nich mit drin kein prob |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Ja, es ist echt ein String, den du selbst zerlegen musst. Im Buch 'C von A bis Z' ist aber ein entsprechendes Beispiel drin: Code: struct CGI_DATEN *erstellen(char *str) {
char* s;
char* res;
/* Irgendwo gibt es auch eine Grenze, hier sind
MAX_PAARE erlaubt */
char *paare[MAX_PAARE];
struct CGI_DATEN *ptr_daten = NULL;
struct CGI_DATEN *ptr_anfang = NULL;
int i=0, j=0;
/* Zuerst werden die Variablen/Werte-Paare anhand des Zeichens
* '&' getrennt, sofern es mehrere sind */
s=str;
res=strtok(s,"&");
while( res != NULL && i < MAX_PAARE) {
/* Wert von res dynamisch in char **pair speichern */
paare[i] = (char *)malloc(strlen(res)+1);
if(paare[i] == NULL)
return NULL;
paare[i] = res;
res=strtok(NULL,"&");
i++;
}
/* Jetzt werden die Variablen von den Werten getrennt und
* an die Struktur CGI_DATEN übergeben */
while ( i > j ) { /* Das erste Element ? */
if(ptr_anfang == NULL) {
ptr_anfang =(struct CGI_DATEN *)
malloc(sizeof (struct CGI_DATEN *));
if( ptr_anfang == NULL )
return NULL;
res = strtok( paare[j], "=");
if(res == NULL)
return NULL;
ptr_anfang->variable =(char *) malloc(strlen(res)+1);
if( ptr_anfang->variable == NULL )
return NULL;
ptr_anfang->variable = res;
res = strtok(NULL, "\0");
if(res == NULL)
return NULL;
ptr_anfang->wert =(char *) malloc(strlen(res)+1);
if( ptr_anfang->wert == NULL )
return NULL;
ptr_anfang->wert = res;
/* printf("%s %s<br>",
* ptr_anfang->variable, ptr_anfang->wert); */
ptr_anfang->next = (struct CGI_DATEN *)
malloc(sizeof (struct CGI_DATEN *));
if(ptr_anfang->next == NULL)
return NULL;
ptr_daten = ptr_anfang->next;
j++;
}
else { /* Die restlichen Elemente */
res = strtok( paare[j], "=");
if(res == NULL)
return NULL;
ptr_daten->variable =(char *) malloc(strlen(res)+1);
if(ptr_daten->variable == NULL)
return NULL;
ptr_daten->variable = res;
res = strtok(NULL, "\0");
if(res == NULL)
return NULL;
ptr_daten->wert =(char *) malloc(strlen(res)+1);
if(ptr_daten->wert == NULL)
return NULL;
ptr_daten->wert = res;
/* printf("%s %s<br>",
* ptr_daten->variable, ptr_daten->wert); */
ptr_daten->next = (struct CGI_DATEN *)
malloc(sizeof (struct CGI_DATEN *));
if( ptr_daten->next == NULL )
return NULL;
ptr_daten = ptr_daten->next;
j++;
}
}
ende = ptr_daten;
/* Anfangsadresse der Liste struct CGI_DATEN zurückgeben */
return ptr_anfang;
} Code: struct CGI_DATEN {
char *variable;
char *wert;
struct CGI_DATEN *next;
};
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #5 (permalink) | |
| Themenstarter | Code: #include <iostream>
#include <stdlib.h>
#include <vector>
using namespace std;
struct CGI_DATEN {
char *variable;
char *wert;
struct CGI_DATEN *next;
};
struct CGI_DATEN *erstellen(char *str)
{
unsigned short int MAX_PAARE = 10;
char* s;
char* res;
/* Irgendwo gibt es auch eine Grenze, hier sind MAX_PAARE erlaubt */
char *paare[MAX_PAARE];
struct CGI_DATEN *ptr_daten = NULL;
struct CGI_DATEN *ptr_anfang = NULL;
int i=0, j=0;
/* Zuerst werden die Variablen/Werte-Paare anhand des Zeichens
* '&' getrennt, sofern es mehrere sind */
s=str;
res=strtok(s,"&");
while( res != NULL && i < MAX_PAARE) {
/* Wert von res dynamisch in char **pair speichern */
paare[i] = (char *)malloc(strlen(res)+1);
if(paare[i] == NULL)
return NULL;
paare[i] = res;
res=strtok(NULL,"&");
i++;
}
/* Jetzt werden die Variablen von den Werten getrennt und
* an die Struktur CGI_DATEN übergeben */
while ( i > j ) { /* Das erste Element ? */
if(ptr_anfang == NULL) {
ptr_anfang =(struct CGI_DATEN *)
malloc(sizeof (struct CGI_DATEN *));
if( ptr_anfang == NULL )
return NULL;
res = strtok( paare[j], "=");
if(res == NULL)
return NULL;
ptr_anfang->variable =(char *) malloc(strlen(res)+1);
if( ptr_anfang->variable == NULL )
return NULL;
ptr_anfang->variable = res;
res = strtok(NULL, "\0");
if(res == NULL)
return NULL;
ptr_anfang->wert =(char *) malloc(strlen(res)+1);
if( ptr_anfang->wert == NULL )
return NULL;
ptr_anfang->wert = res;
/* printf("%s %s<br>",
* ptr_anfang->variable, ptr_anfang->wert); */
ptr_anfang->next = (struct CGI_DATEN *)
malloc(sizeof (struct CGI_DATEN *));
if(ptr_anfang->next == NULL)
return NULL;
ptr_daten = ptr_anfang->next;
j++;
}
else { /* Die restlichen Elemente */
res = strtok( paare[j], "=");
if(res == NULL)
return NULL;
ptr_daten->variable =(char *) malloc(strlen(res)+1);
if(ptr_daten->variable == NULL)
return NULL;
ptr_daten->variable = res;
res = strtok(NULL, "\0");
if(res == NULL)
return NULL;
ptr_daten->wert =(char *) malloc(strlen(res)+1);
if(ptr_daten->wert == NULL)
return NULL;
ptr_daten->wert = res;
/* printf("%s %s<br>",
* ptr_daten->variable, ptr_daten->wert); */
ptr_daten->next = (struct CGI_DATEN *)
malloc(sizeof (struct CGI_DATEN *));
if( ptr_daten->next == NULL )
return NULL;
ptr_daten = ptr_daten->next;
j++;
}
}
//ende = ptr_daten;
/* Anfangsadresse der Liste struct CGI_DATEN zurückgeben */
return ptr_anfang;
}
int main(int argc, char *argv[])
{
cout << "Content-Type: text/html\r\n\r\n";
cout << "<html><head><title>hello</title></head><body><h1>Welcome</h1>" << endl;
if (strcmp(getenv("REQUEST_METHOD"), "GET") == 0)
{
CGI_DATEN *get_parameters = erstellen(getenv("QUERY_STRING"));
unsigned short int CGI_DATEN_COUNT = sizeof(get_parameters) / sizeof(CGI_DATEN);
for (unsigned short int i = 0; i < CGI_DATEN_COUNT; i++)
{
cout << "<p>" << CGI_DATEN.valiable << " = " << CGI_DATEN.wert << "</p>" << endl;
CGI_DATEN = CGI_DATEN.next;
}
}
cout << "</body></html>";
return 0;
} Zitat:
| |
| | |
| | #6 (permalink) |
| CGI_DATEN.valiable ?
__________________ Wenn keiner zuschaut, teile ich heimlich durch Null! Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter | |
| | |
| | #7 (permalink) | |
| Member of Honour ![]() | Zitat:
| |
| | |
| | #8 (permalink) |
| Themenstarter | ehm, jo. shit happened. korrigiert. selbe fehlermeldung. was jetzt? |
| | |
| | #9 (permalink) |
| Registriert seit: 22.10.05 ![]() Likes: 3 | Wenn ich mich nicht täusche, ist CGI_DATEN eine Struktur. Davon direkt die Members abzufragen macht ja relativ wenig Sinn. Im letzten Absatz hast du einen Pointer auf CGI_DATEN erstellt mit dem Namen get_parameters. Innerhalb der Schleife musst du natürlich dann auch auf genau den Pointer zugreifen. So sollte der Inhalt der for-Schleife aussehen: Code: cout << "<p>" << get_parameters->variable << " = " << get_parameters->wert << "</p>" << endl; get_parameters = get_parameters->next; |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| per JS aktuelle URL abfragen... | Watchme | (Web-) Design und webbasierte Sprachen | 2 | 27.08.09 22:48 |
| Netzwerkauslatung abfragen | Antibus | Code Kitchen | 2 | 17.03.08 16:22 |
| mit C++ phpTicketsystem abfragen | MaUs# | Code Kitchen | 4 | 09.05.07 19:53 |
| C - ARP Puffer abfragen | Heinzi | Code Kitchen | 2 | 07.10.05 15:22 |
| Cursortasten abfragen | icecreamman | Code Kitchen | 6 | 29.01.05 00:37 |