• User

    Input type: Submit o Image?

    Ciao ragazzi, ho un problema.. a prima vista è banale ma non ho ancora trovato una soluzione..

    nella pagina index.php ho un form fatto così

    <form name="login" method="post" action="check.php">
    <input type="text" name="username" value="il tuo username" onfocus="if(this.value=='il tuo username') this.value='';">
    <input type="password" name="password" value="la tua password" onfocus="if(this.value=='la tua password') this.value='';">
    <input type="submit" name="login" id="invia" value="Invia" >
    </form>

    la pagina di controllo check.php inizia così:

    if(isset($_POST['login']))
    { //controlla utente }
    else echo "nessun utente da controllare";

    tutto funziona alla perfezione.

    ora ho deciso di sostituire il pulsante di invio del form con una immagine.
    in index.php al posto di
    <input type="submit" name="login" id="invia" value="Invia" >
    ho messo
    <input type="image" name="login" id="invia" src="images/icon_login.png">

    ma la pagina check.php ora non mi riconosce più il modulo come "settato". Perchè? Cosa devo cambiare?

    Grazie in anticipo!


  • User Attivo

    Si purtroppo è una mancanza del PHP.

    Io di solito aggiungo un campo hidden di controllo..

    se quel campo è pieno (quando viene inviato il form) allora esegue i comandi.

    Non so se mi sono spiegato bene 🙂


  • User Attivo

    Ciao,
    con la modifica che hai inserito, il controllo di verifica di invio del form che esegui risulta errato.
    Questo perchè modificando il tipo di input da submit a image, non viene più inviato il solo dato "login", ma due dati "login_x" e "login_y" corrispondenti alle coordinate del punto dell'immagine su cui hai cliccato.
    Ovvero con

    
    <input type="submit" name="login" id="invia" value="Invia" >
    
    

    fai il controllo
    [PHP]
    if(isset($_POST['login']))
    [/PHP]
    mentre con

    
    <input type="image" name="login" id="invia" src="images/icon_login.png">
    
    

    puoi fare questo
    [PHP]
    if(isset($_POST['login_x']))
    [/PHP]
    In casi come questo in cui vuoi verificare solamente se sono o non sono stati inviati dati tramite GET o POST puoi fare questo altro controllo che è più "generico":
    [PHP]
    //Invio tramite POST
    if(count($_POST))

    //Invio tramite GET
    if(count($_GET))
    [/PHP]

    Alessandro


  • User

    grazie a tutti e due, domani pomeriggio provo a modificare il file di controllo e vi dico come è andata!


  • User Attivo

    @Magicale said:

    Ciao,
    con la modifica che hai inserito, il controllo di verifica di invio del form che esegui risulta errato.
    Questo perchè modificando il tipo di input da submit a image, non viene più inviato il solo dato "login", ma due dati "login_x" e "login_y" corrispondenti alle coordinate del punto dell'immagine su cui hai cliccato.
    Ovvero con

    >
    <input type="submit" name="login" id="invia" value="Invia" >
    
    >```fai il controllo 
    [php]
    if(isset($_POST['login']))
    [/php]mentre con
    

    <input type="image" name="login" id="invia" src="images/icon_login.png">

    [php]
    if(isset($_POST['login_x']))
    [/php]In casi come questo in cui vuoi verificare solamente se sono o non sono stati inviati dati tramite GET o POST puoi fare questo altro controllo che è più "generico":
    [php]
    //Invio tramite POST
    if(count($_POST))

    //Invio tramite GET
    if(count($_GET))
    [/php]Alessandro

    Anche io ho imparato una cosa nuova 😉