CGI in C - Browserargumente korrekt auslesen



  • Hallo C-Programmierer,

    zur Zeit schreibe ich ein kleines CGI in C.

    Der Code, um das Argument eines Browsers (z.B. localhost/?mon=1) zu holen ist dabei recht simpel:

    if (argc != 2){
        default_parameter = 0;
     } else {
        char *p;
        p = getenv("QUERY_STRING");
            if(p !=0){
                parameter = p;
                }
     }
     printf("<br/>Parameter: %s", parameter);
    

    Diese Funktion funktioniert bestens, so lange die im Browser übergebenen Argumente Buchstaben enthalten. Sobald jedoch ein "=", "&", o.ä. in der Browserzeile steht, wird der Pointer, welcher auf den String zeigt nicht korrekt verarbeitet und wird defaultmäßig auf null gesetzt.

    Daher meine Frage: muss ich den String aus getenv("QUERY_STRING") umgehend verarbeiten ohne vorher den Pointer zu übergeben - oder gibt es eine sinnvollere/bessere/schnellere Möglichkeit, die Argumente aus dem Browser zu holen?

    Lg

    Jan





  • Hallo lowbyte,

    vielen Dank für den Link. Der von MS aufgeführte Quelltext läuft unter meinem Unix nicht einwandfrei.

    Da ich für das CGI nur einen Wert benötige habe ich das Problem folgendermaßen umgangen:

    parameter = argv[1][0];
         printf("<br/>Parameter: %c\n", parameter);
    
         int test = atof(++argv[1]);
         printf("<br/>Parameter: %d\n", test);
    

    Besten Dank und LG

    Jan



  • Hallo

    Sorry wusste nicht das du unter Unix arbeitest.
    Dachte da an wgetenv() == UNICODE.

    Grüsse


Anmelden zum Antworten