View Full Version : [PHP] Controllo su form
Eccomi qui con l'ennesimo problema:
Come posso controllare che i caratteri inseriti in una form corrispondano alla struttura di una email (xxxxx@xxxx.xx)?
La form utilizzata è il classico <input type=text"
Eccomi qui con l'ennesimo problema:
Come posso controllare che i caratteri inseriti in una form corrispondano alla struttura di una email (xxxxx@xxxx.xx)?
La form utilizzata è il classico <input type=text"
un idea potrebbe essere questa:
http://www.smartwebby.com/dhtml/email_validation.asp
Sarebbe molto meglio una espressione regolare. Se intendi da javascript, eccola:
<script language="javascript">
function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus
return false;
}
}
</script>
ovviamente devi fare lo stesso lato server, nel tuo linguaggio :read:
Sarebbe molto meglio una espressione regolare. Se intendi da javascript, eccola:
<script language="javascript">
function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus
return false;
}
}
</script>
ovviamente devi fare lo stesso lato server, nel tuo linguaggio :read:
Ok, però non capisco una cosa, se già lo faccio lato client cosa mi serve controllarlo anche lato server?
Ogni browser degno di questo nome permette di disattivare javascript se si vuole. Se non controlli lato server rischi di far finire roba pericolosa (ad esempio script javascript) nel database
Dunque, conviene farlo solo lato server :p
Quindi tutti i controlli che ho fatto lato client (controllo sui campi vuoti, password diverse e mail diverse) dovrei farli anche lato server?
Per questioni di sicurezza sì, a meno che non imponi l'utilizzo di Javascript per poter accedere.
Per questioni di sicurezza sì, a meno che non imponi l'utilizzo di Javascript per poter accedere.
Come faccio a imporre l'utilizzo di javascript?
Beh, uno dei modi potrebbe essere quello di preparare una DIV col messaggio in cui richiedi il Javascript e la metti al posto della form di login.
Quindi, nell'header del tuo file metti un'istruzione Javascript che cancella questa DIV, così la vede solo chi non ha Javascript, mentre gli altri vedranno direttamente la form della login.
Beh, uno dei modi potrebbe essere quello di preparare una DIV col messaggio in cui richiedi il Javascript e la metti al posto della form di login.
Quindi, nell'header del tuo file metti un'istruzione Javascript che cancella questa DIV, così la vede solo chi non ha Javascript, mentre gli altri vedranno direttamente la form della login.
La DIV sarebbe una sorta di layer che sovrapposto al login lo nasconderebbe, giusto?
<script language="javascript">
function checkEmail() {
var email = document.getElementById('emailaddress');
var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus
return false;
}
}
</script>
Ho provato questo codice ma non riesco a farlo funzionare, la form della e-mail è questa:
<input type="text" name="email" style="width: 230px"/>
Quali sono le parti di codice da cambiare per adattarlo alla mia form?
Grazie
document.getElementById('emailaddress') deve avere l'id del tuo campo email (che non hai settato). Il campo deve specificarela funzione OnSumit da invocare (quando viene appunto inviato il form) con quella che fa il check dell'email.
cruyffissimo
26-10-2009, 19:31
il controllo lato client lo fai subito nella pagina del form, mentre il controllo lato server lo fai nella pagina php, chiaramente..
serve perchè se una persona non abilita il javascript potrebbe anche passare il controllo se è solo client-side...
ti posto un controllo lato client javascript:
<script type="text/javascript">
function controllo()
{
var nome;
var pw;
var flag=1;
nome=document.form.nome.value;
pw=document.form.pw.value;
if(nome=="")
{
flag=0;
alert("campo nome vuoto!");
}
if(pw=="")
{
flag=0;
alert("campo pw vuoto!");
}
if(flag!=1)
{
document.form.action="form_login.html";
}
else
{
alert("dati inviati");
document.form.submit();
}
}
</script>
<body>
<form action="controllo.php" method="post" name="form" onsubmit="controllo()" enctype="multipart/form-data">
<table border="2" align="center">
<tr><td>Inserire nome</td><td><input type="text" name="nome"></td></tr>
<tr><td>Inserire pw</td><td><input type="password" name="pw"></td></tr>
<td align="center" colspan="2"><input type="submit" value="Accedi"></td>
</table>
</form>
se vuoi ti posto anche il codice php :Prrr:
<script language="javascript">
function checkEmail() {
var email = document.getElementById('email');
var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value)) {
alert('Please provide a valid email address');
email.focus
return false;
}
}
</script>
ho provato a inserire il codice cosi ma ancora non funziona...
puoi farmi l'esempio con il mio caso?
Il controllo va fatto sia lato client che lato server, o al limite solo lato server.
Ma farlo solo lato client equivale a non farlo...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.