cgi



  • hallo

    ich möchte ein c programm (exe) aus einer html seite starten (klick auf einen Button). Kann mir jemand einen beispiel posten wie ich das anstellen muss.
    danke



  • Hallo,

    dumme Frage:
    soll das C-Prog bei dir am Rechner gestartet werden oder irgendwo auf einem Server?

    Im ersten Fall muss ich dich leider enttäuschen.
    Normalerweise ist es nicht möglich, Programme vom Browser aus zu starten.
    (Ausnahme: im IE findest du bestimmt irgendwo eine passende Sicherheitslücke 😉 )

    Da du unter dem Titel "CGI" gepostet hast, geh ich aber davon aus, dass das Prog auf dem dem Server laufen soll.

    <form action="http://example.com/test.exe" method="post">
    <input type="submit" value="Programm auf dem Server starten">
    </form>
    

    cu
    Martin

    PS: natürlich kannst du aber auf deinem Rechner einen HTTP Server laufen lassen und auf diese Weise das Prog doch daheim starten 😉



  • hallo
    das programm befindet sich auf dem server



  • stellt sich nun die frage: was ist das für ein server? hast du die rechte, dort programme auszuführen?

    wenn es ein apache ist, brauchst du die rechte vom "servermeister". dann bekommst du meist einen ordner, den du speziell aufrufen kannst und dort deine binaries ablegst.
    die binaries kannst du dann wie php starten. achte drauf, daß du ihnen nach dem hochladen ausführungsrechte einräumst.

    aber die wenigsten sever erlauben ausführbaren code einfach so.



  • Hi,

    Wie kann ich mir selbst diese adminrechte geben ?
    Hab auf meinem Rechenr apache installiert mit php. Wo in der Cfg kann ich das ändern ?

    Cu



  • Wenn du Apache hast dann hast du auch einen cgi-bin. Dort deine Datei rein und mit dem Browser aufrufen. Sollte es nicht gehen dann Poste hier.



  • so wie unix-tom sagt, und dann noch den apache dazu bringen, daß er es dir erlaubt:

    die folgenden zeilen in die httpd.conf an die richtige stelle einfügen:

    # ScriptAlias: This controls which directories contain server scripts.
        # ScriptAliases are essentially the same as Aliases, except that
        # documents in the realname directory are treated as applications and
        # run by the server when requested rather than as documents sent to the client.
        # The same rules about trailing "/" apply to ScriptAlias directives as to
        # Alias.
        #
    
        ScriptAlias /cgi-bin/ "D:/Apache/cgi-bin/"
    
        #
        # "D:/Apache/cgi-bin" should be changed to whatever your ScriptAliased
        # CGI directory exists, if you have that configured.
        #
        <Directory "D:/Apache/cgi-bin">  
            AllowOverride None
    	Options ExecCGI
    	Order deny,allow
    	Deny from all
    	Allow from 127.0.0.1
    
        </Directory>
    


  • Hi,
    klappt bei mir immer noch nicht!
    Bei mir wird dann immer FlashGet gestartet um die File zu downloaden.

    ScriptAlias /cgi-bin/ "F:/Development/Starcrusade/sources/src_main/www/cgi-bin/"
        ScriptAlias /php/ "/apache/php/" 
    
        #
        # "c:/apache/cgi-bin" should be changed to whatever your ScriptAliased
        # CGI directory exists, if you have that configured.
        #
        <Directory "F:/Development/Starcrusade/sources/src_main/www/cgi-bin">
            AllowOverride None
            Options ExecCGI 
            Order allow,deny
            Allow from all
        </Directory>
    

    Hab ich irgent etwas falsch eingestellt =



  • Wenn FlashGet sich die Datei downloaden will ist das kein Problem mit der Server-Konfiguration, sondern eine Einstellungssache von FlashGet!
    Kommt FlashGet denn auch, wenn du die exe als Form-action Ziel angegeben hast? Klappt es denn, wenn du während des Anklickens die alt-Taste gedrückt hältst?



  • Hi,
    klappt alles wunderbar. Hatte was übersehen. Thx an alle.

    Cu



  • Hallo

    ich habe einen thttpd server (ist eine kleine version eines httpd servers der auf einem microcontroller läuft).
    Das mit der berechtigung habe ich auch schon bemerkt. Ich konnte mein programm nicht starten. aber wenn ich das richtig verstanden habe, muss ich mein alle programme die ich ausführen möchte in der konfiguration angeben.

    dann habe ich noch eine andere frage:
    ist es möglich übergabe parameter beim programm aufruf zu über geben? ich habe es versucht aber wenn ich folgenden aufruf habe

    <form action="../../test.out r" method="post"> 
    <input type="submit" value="test"> 
    </form>
    

    (r ist mein übergabe parameter)
    leider funktioniert dieser aufruf nicht das das lehrrzeichen als %20 interpretiert wird (glaube ich zumindest).


  • Mod

    hi schrieb:

    (r ist mein übergabe parameter)
    leider funktioniert dieser aufruf nicht das das lehrrzeichen als %20 interpretiert wird (glaube ich zumindest).

    warum nicht einfach:
    <input type="hidden" name="wert" value="r">

    und dann einfach im Programm stdin auslesen, da müsste dann
    wert=r
    drinnen stehen. bei mehreren werte steht:
    wert=r&wert2=r2
    drinnen.

    so übergibt man Parameter 🙂



  • hallo
    ich dachte das man eben beim programmstart einen parameter übergeben kann



  • Shade Of Mine schrieb:

    hi schrieb:

    (r ist mein übergabe parameter)
    leider funktioniert dieser aufruf nicht das das lehrrzeichen als %20 interpretiert wird (glaube ich zumindest).

    warum nicht einfach:
    <input type="hidden" name="wert" value="r">

    und dann einfach im Programm stdin auslesen, da müsste dann
    wert=r
    drinnen stehen. bei mehreren werte steht:
    wert=r&wert2=r2
    drinnen.

    so übergibt man Parameter 🙂

    Hm hast du es schonmal ausprobiert, oder denkst du dass es so gehen muss ?
    Das ganze hört sich irgentwie unplausiebel an 🙂


  • Mod

    [Numerus] schrieb:

    Hm hast du es schonmal ausprobiert, oder denkst du dass es so gehen muss ?
    Das ganze hört sich irgentwie unplausiebel an 🙂

    natürlich habe ich es schon probiert.

    Hast du schonmal mit CGI gearbeitet?
    GET liegt in der umgebungsvariable QUERY_STRING und POST befindet sich in stdin

    Nimm doch ein x-beliebige CGI Library für C - dann sparst du dir das parsen...



  • hallo
    welche cgi library würdest du denn empfehlen? oder hast du gerade ein beispiel wie das mit dem auslesen gemacht wird?




Log in to reply