Inviare un form (metodo post) utilizzando un bottone testuale
Ho perso circa 3 ore a trovare la soluzione a questo problema, problema che mi sono posto quando ho deciso di impuntarmi su una cosa che realmente non mi serviva, tanto per cambiare.
Il web è pieno di superfighi esempi che permettono di creare degli effetti rollover su delle immagini che interagiscono con la posizione del nostro mouse, consentendoci di inviare un form tramite un immaginetta, invece che tramite il classico bottone. Ma si trovano pochissimi esempi su come abbandonare l’orrendo bottoncino grigio a favore del vecchio, caro e personalizzabile testo.
Alla fine ho trovato la soluzione adatta, anzi, più soluzioni adatte. Purtroppo tutte prevedono l’utilizzo di javascript, ma nulla di troppo invasivo per fortuna. E ormai il 95% dei sistemi ha la spunta su attivo, quindi il rischio si può correre.
<form name="pwd" id="pwd" method="post" action="ip.php"> <a href="#" onclick="document.forms['pwd'].submit(); return false;">invia</a><br> <a href="#" onclick="document.pwd.submit(); return false;">invia</a> </form>
Non penso serva una spiegazione, vero?
Ma…e se volessimo passare una variabile?la situazione si fa più complicata. Ho provato combinando questi codici fra di loro parecchie volte, ma complice la mia scarsa abilità in Javascript e un google foriero di cattive nuove, non sono riuscito a trovare la soluzione adatta.
Ho quindi cambiato strada, o meglio, sono stato indirizzato in questa zona:
<form name="pwd" id="pwd" method="post" action="ip.php">
<input name="pwd" type="hidden" value="<?=$password?>" />
<a href="#" onclick="document.getElementById('pwd').submit()">Invia</a>
</form>
In pratica assegniamo il valore ad un campo input nascosto, che passerà il valore una volta inviato il form. La variabile =$password?> l’avremo definita in precedenza. E andremo a recuperarla, nella pagina ip.php, con qualcosa di simile:
<?php
$password = $_POST["pwd"];
if ($password <> 'miapwd') {
echo "Non sei autorizzato ad entrare in quest'area";
} else {
echo "La password inserita è corretta.";
}
?>
foto by doryexmachina











grazie per il post, m’è stato utile…
fai solo attenzione che i campi nascosti dei form non sono per nulla sicuri in quanto:
1) sono visibili client side
2) con qualunque plugin tipo Tamper Data un qualunque utente può modificare il valore del campo hidden come gli pare
non è un metodo che consiglierei
però è solo un parere…
Ciao, lieto ti sia stato utile… anche se, dovessi scrivere questo post oggi, probabilmente sarebbe molto diverso
Userei senz’altro JQuery, anche se il “sistema” dei campi hidden è purtroppo imprescindibile. Non c’è altra via per passare dei dati che stabilisco io, negando all’utente la possibilità di modifica (parlo di dati variabili, se poi sono delle costanti posso direttamente definirli nella pagina di ricezione).
Sono visibili nel sorgente ed è effettivamente un problema per la sicurezza, ma è facilmente risolvibile facendo dei controlli sui dati a livello server. Il cattivello di turno può modificare quel che vuole, ma se faccio dei controlli ha poco da fare
Grazie ancora per essere passato