Textfeld aus CGI_File beschreiben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Textfeld aus CGI_File beschreiben

    Hallo!
    Ich möchte über eine HTML-Seite ein CGI-File (in C geschrieben) öffnen. Das CGI-File soll dann einen String (erstmal "hallo") per stdout (POST) an die HTML-Seite "senden". Der soll dann in dem Textfeld "daten" dargestellt werden.

    Der Ablauf ist aber folgendermaßen:

    Wenn ich im HTML-Dokument

    http://localhost/Datenbank_CGI.html

    auf dem Submitbutton drücke, wird das CGI-File ausgeführt. Anschließent wird mir im Browser die Seite:

    http://localhost/cgi-bin/datenbank_cgi.cgi

    mit folgendem Inhalt angezeigt:

    steuerung=1&daten=hallo

    Ich wollte aber erreichen, das der Text hallo in das Textfeld daten geschrieben wird. Was mach ich denn da Falsch?

    Schon mal vielen Dank für Eure Hilfe!

    Gruß Tobias

    Hier die dazugehörigen POrogramme:

    Datenbank_CGI.html:

    <html>
    <body>
    <h1 align="center">Datenbank für Haushaltsgeräte</h1> </br></br>
    <hr>


    <form method="post" action="http://localhost/cgi-bin/datenbank_cgi.cgi">
    <pre>
    Datensatzauswahl:

    voriger<input type="radio" name="steuerung" value="-1"><input type="submit"value="OK"><input type="radio" name="steuerung" value="1" checked>nächster

    <input type="text" name="daten" size=100>
    </pre>

    </form>
    <hr>
    </body>
    </html>


    datenbank_cgi.c:

    # include <stdio.h>
    # include <stdlib.h>
    # include <string.h>



    int main (void)
    {
    FILE *fptr = NULL;
    FILE *p_stdin = NULL;
    FILE *p_stdout = NULL;
    char* p_String_Laenge = 0;
    int Laenge = 0;
    char Eingabe[500] = {0};
    char Ausgabe[500] = {0};
    char* p_Eingabe = Eingabe;
    char zahl = 0;


    printf("Content-type: text/html\n\n");


    // um zu sehen, ob das File ausgeführt wurde...
    p_String_Laenge = getenv("CONTENT_LENGTH");
    Laenge = *p_String_Laenge;
    p_stdin = stdin;


    fread(Eingabe, Laenge, 1, p_stdin);
    Eingabe[Laenge+1] = '\0';
    zahl = Eingabe[10];
    fptr = fopen("datenbank.txt","a+");
    fprintf(fptr, "%s...%c\n",Eingabe,zahl);
    fclose(fptr);

    //strcpy(Ausgabe, "steuerung=1&daten=hallo\0");

    //p_stdout = stdout;
    //fwrite(Ausgabe,(int)23,1, p_stdout);
    fprintf(stdout, "steuerung=1&daten=hallo\n");

    //printf("<a href='http://localhost/Datenbank_CGI.html'>");

    return EXIT_SUCCESS;
    }

  • #2
    Bin jetzt nicht der C-Profi, aber du machst anscheinend schon vom Prinzip was falsch.

    Du sendest das Formular ab.
    Dadurch ändert sich die angezeigte Seite ( auf datenbank_cgi.cgi).
    Das Formular ist jetzt also gar nicht mehr da. Also kannst du auch nichts ins Textfeld reinschreiben.

    Kommentar


    • #3
      Wie kann ich das denn machen, dass der wieder zu meiner HTML-Seite zurück geht?
      Kann ich in dem CGI-File irgend ein Veweis, oder Link zu meiner HTML-Seite angeben?

      Gruß Tobias

      Kommentar


      • #4
        Hi,

        bist du sicher dass du das so machen willst ? Du hast weder von cgi noch von c
        ahnung. Aber wenn du es wirklich probieren willst, tu dir selbst ein gefallen und
        google mal ausgiebig zum thema cgi, und dann schau im C-buch deiner weil nochmal
        im kapitel zeiger und stringoperation nach.

        Grundsätzlich läuft es so.

        lies den wert des feldes "daten" im querystring aus
        sende http-header (text/html)
        schreibe html-quelltext auf die standardausgabe.
        ersetze dabei das value-feld des input-feldes durch den wert aus dem querystring.

        greets
        (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

        Kommentar

        Lädt...
        X