- Home
- Categorie
- Coding e Sistemistica
- PHP
- Input type: Submit o Image?
-
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!
-
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
-
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
-
grazie a tutti e due, domani pomeriggio provo a modificare il file di controllo e vi dico come è andata!
-
@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]AlessandroAnche io ho imparato una cosa nuova