Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: output cgi

  1. #1

    output cgi

    Salve a tutti
    premesso che di cgi ne so poco o niente
    vado ad esporvi la mia problematica :

    Ho una form in php (form.php) che invia un valore numerico (5027870) ad un file cgi.
    fatto questo il mio file cgi lancia un programma su una cartella remota del server
    (programma.cmd + valore che passo con il php) e mi restituisce a video il risultato, che sono dei valori numerici.

    I miei problemi sono 2 :
    1. non riesco a passare al file cgi il valore numerico dovrei fare una cosa del tipo:
    http://server/cgi/nomefile.cgi?valorenumerico

    2. a video riesco a stampare il risultato del file cgi.
    Ma come faccio a passarlo nuovamente al file php?

    Grazie in anticipo a chi mi può aiutare
    Denny3D

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Anzitutto devi chiarire cosa intendi TU con la parola CGI.
    Sembra che la usi come sinonimo di programma.

    CGI piu` che un programma e` un protocollo di interfaccia client-server; per estensione si puo` considerare un CGI come un programma (o script) che si interfaccia direttamente sul Web attraverso il webserver.

    Invece dal contesto sembrerebbe che vuoi avere un programma (suppongo in Perl) chiamato da un PHP e che deve ritornare il risultato al PHP.
    Se questa interpretazione e` corretta, credo che da un lato devi cambaire il modo incui chiami il programma dal tuo PHP, dall'altro devi valutare se la risposta puo` essere contenuta in una unica variabile o se non sia il caso di usare un file come deposito per passare la risposta al PHP. Pero` devo dire che in questo non sono molto preparato, per cui magari qualcun altro puo` dare una risposta corertta e piu` chiara.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    infatti ho fatto un po di confusione, spiego meglio:

    Ho un file php che mi invia ad un file *.cgi un valore testo.

    Il file cgi non fa altro che lanciare un programma sul server un file *.cmd
    associandogli il valore che gli ho passato dal php.

    Quello che non riesco a fare è: far ritornare il mio risultato al file php.
    Esempio:

    php -> cgi ->programma.cmd -> cgi (stampo a video il risultato) -> php

    è lìultima parte che non riesco a fare.

    Il file cgi è molto semplice è lo posto sotto:

    ******************
    #!/bin/sh


    echo Content-type: text/plain
    echo

    /usr/xxxx/programma.cmd $1
    ********************************
    Denny3D

  4. #4
    infine, se non è possibile inviare il risultato che ho a video al file php, è possibile salvare il risultato come un file testo?
    esempio un file risultato.csv?

    Grazie
    Denny3D

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da Denny3D
    infatti ho fatto un po di confusione, spiego meglio:

    Ho un file php che mi invia ad un file *.cgi un valore testo.
    Non puoi farlo. Il CGI deve partire da una pagina HTML, non da un programma PHP (nota l'uso di pagina e programma - non esistono le pagine PHP esistono semmai pagine HTML generate dal PHP)

    Il file cgi non fa altro che lanciare un programma sul server un file *.cmd
    associandogli il valore che gli ho passato dal php.
    Che istruzione usi per lanciare il programma? Cosa intendi con .cmd? E` un programma/script scritto in linguaggio proprio del server?

    Quello che non riesco a fare è: far ritornare il mio risultato al file php.
    Esempio:

    php -> cgi ->programma.cmd -> cgi (stampo a video il risultato) -> php

    è lìultima parte che non riesco a fare.

    Il file cgi è molto semplice è lo posto sotto:

    ******************
    #!/bin/sh


    echo Content-type: text/plain
    echo

    /usr/xxxx/programma.cmd $1
    ********************************
    Vedo ora cosa intendi per .cgi.
    Mi spiace non conosco il linguaggio di shell sh. So qualcosa di csh, o tcsh; ma per quelle cose in linea di massima preferisco il Perl, dove ci sono tre istruzioni per chiamare progr. esterni: system, exec, `...` ognuna con cartteristiche diverse.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    nessuno mi sa aiutare?

    Grazie comunque dell'interessamento
    Denny3D

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da Denny3D
    nessuno mi sa aiutare?
    Shishii non passa da qui tutte le ore, ma sa molte cose e potrebbe riuscire a spiegarti quello che io non sono riuscito.

    Ma se vuoi aiuto, dovresti cercare di spiegarti meglio, ed usare i termini correttamente.
    Come dicevo la tua richiesta contiene molte imprecisioni, e questo limita molto l'aiuto che riesci ad ottenere.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    php -> cgi ->programma.cmd -> cgi (stampo a video il risultato) -> php

    analizziamo questo flusso:

    php -> cgi: ovvero
    dati inseriti in un form di una pagina html (generata da php, ma è irrilevante come detto da Mich_) da passare ad un cgi... Non ci sono problemi.
    se il form è questo:

    <form action="/cgi-bin/cmd.cgi" method="GET">

    <input type="text" name="numero">

    <input type="submit" value="Invia">

    </form>

    il browser invierà al CGI cmd.cgi i dati che saranno contenuti nella variabile di sistema $QUERY_STRING, quindi nel cgi la raccoglierai così:

    #!/bin/sh

    dati = $QUERY_STRING

    in dati vi sarà "numero=xxxxxx", a te sta a separare il nome del campo dal valore, non conosco abbastanza la bash per dirtelo. Io uso Perl.

    Proseguiamo:

    cgi ->programma.cmd -> cgi (stampo a video il risultato)

    tutto ok. Va bene anche come lo fai, ma qui si chiude, nel senso che la connessione tra server e client viene chiusa e non puoi inviare più nulla al browser, quindi il passaggio dopo:

    cgi (stampo a video il risultato) -> php

    non è possibile, se intendi passare qualcosa ad una pagina diversa da quella generata dal CGI.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  9. #9
    ok grazie shishii delle delucidazioni

    ma vado a farti un ultima domanda:
    se non posso passare i dai dal file cgi al php,
    Posso almeno nel file cgi salvare un file ?

    cioè invece di vedere a video l'output posso salvarlo in un file che si chiamerà

    nomefile_(valore che ho inviato con il php).csv?

    Ciao e grazie
    Denny3D

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Certo che lo puoi fare.

    Il CGI e` un programma (scritto in un linguaggio opportuno) a tutti gli effetti.
    La cosa che lo rende CGI (Common Gateway Interface) e` l'interfaccia diretta con il canale del Web e le proprieta` di accesso attribuite dal SO e dal Webserver.

    Per creare un file, devi semplicemente aprirlo in scrittura e scriverci dentro.
    Non so nel dettaglio come si faccia cio` con sh, probabilmente riesci a farlo con un cat.

    Attenzione pero` al path del file: non puo` essere la dir dove sta il CGI, ma dev'essere una dir speciale, permessa dalle permission del SO e dal Webserver (altrimenti crei buchi di sicurezza nel tuo server: rischi di aprire porte ai malintenzionati).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.