Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    36

    Passare due argomenti con lo stesso tasto html

    Ciao

    Ho una paginetta che recita :


    <select name="scelta">
    <option VALUE="">Seleziona Pin</option>
    <option VALUE="valore1 valore2">Opzione1</option>
    <option VALUE="valore3 valore4">Opzione2</option>

    <INPUT TYPE="Submit" Name="esegui" VALUE="Esegui Test">
    <?php
    if (isset($_POST['esegui']))
    {
    echo exec('test.sh ' .escapeshellarg($_POST['scelta']));
    }
    ?>

    Con l'intenzione che una volta scelta Opzione1 oppure Opzione2 dal menu a tendina e cliccato sul tasto Esegui Test , allo script test.sh vengano passati come argomenti:

    "valore1" e "valore2"
    oppure
    "valore3" e "valore4"

    (in modo che lo script test.sh li interpreti come $1 e $2)

    Cosa che pero' non avviene perche' in realta' allo script viene passato un singolo argomento che si chiama
    "valore1(spazio)valore2"


    Come posso ovviare a questa cosa ????
    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, non è un singolo argomento, dipende come cerchi di recuperare i valori
    V1(spazio)V2 dovresti averli lato script in $_SERVER['argv'];

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    36
    Non ho capito cosa intendi con $_SERVER['argv'];

    Supponiamo che il menu a tendina sia cosi' :

    <select name="scelta">
    <option VALUE="">Seleziona Pin</option>
    <option VALUE="Mario Rossi">Opzione1</option>
    <option VALUE="Franco Bianchi">Opzione2</option>

    e il mio script test.sh sia cosi':

    echo "Hai scelto il nome $1 e cognome $2"

    quando clicco il tasto "esegui" che mi richiama
    echo exec('test.sh ' .escapeshellarg($_POST['scelta']));

    lo script mi restituisce :

    Hai scelto il nome Mario Rossi e cognome


    In pratica considera il valore di
    VALUE="Mario Rossi"
    come il primo argomento e non esiste un secondo

    Non si puo' fare qualcosa del tipo :

    <option VALUE="Mario" VALUE="Rossi">Opzione1</option>
    oppure
    <option VALUE1="Mario" VALUE2="Rossi">Opzione1</option>

    ??????
    (ho gia' provato ma chiaramente non funziona....)

    Grazie per qualsiasi suggerimento.




  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Codice PHP:
    if (isset($_POST['esegui']))
    {
        
    $dati explode(' ',$_POST['scelta']);
        echo 
    exec('test.sh ' .escapeshellarg($dati[0],$dati[1]));

    Funzionerà solo per nomi e cognomi semplici però (1 nome e 1 cognome), per esempio con "Luca Cordero Di Montezemolo" invierebbe Luca e Cordero, il resto no.

    EDIT: come non detto, mi sono confuso sulla funzione escapeshellarg().
    Il parsing della stringa lo dovrebbe fare l'altro tuo script sapendo che il separatore è lo spazio.
    Ultima modifica di Alhazred; 14-12-2013 a 19:33

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    36
    Quindi il tuo esempio cosi' com'e' non funzionerebbe ????

    Se io invece la faccio piu' semplice evado off-topic dal php alla shell :

    abbiamo detto che con
    <option VALUE="Mario Rossi">Opzione1</option>
    viene passato allo script l'UNICO argomento "Mario Rossi", come modifico lo script shell per far estrarre da Mario Rossi le due variabili:

    nome= Mario
    cognome=Rossi

    in modo da poter eseguire

    echo "Hai scelto il nome $nome e cognome $cognome"

    (tipo con grep, sed, ecc.ecc.)???

    Grazie




  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Non avevo capito cosa volevi fare.. ad ogni modo non la vedo una stabile decisione.
    Piuttosto nel value se proprio devi mettici un separatore tipo:

    value="Mario;-;Rossi" e poi nell'altro script saprai per certo dove separare, se no come dice
    Alhazred avrai possibili casi e problemi.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    36
    per il momento ho risolto con test.sh in questo modo :

    set `eval echo $1`
    nome=$1;
    cognome=$2;
    echo "Hai scelto il nome $1 e cognome $2"

    non sara' molto ortodosso ma.....funziona.

    Grazie per i suggerimenti
    Ciao

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 © 2025 vBulletin Solutions, Inc. All rights reserved.