20 commenti tutorial, jquery, php

Esistono diversi plugin jquery per validare i form ma quello che personalmente preferisco è sicuramente Validation.

I motivi per i quali la mia preferenza ricade su tale plugin sono molteplici ma fra di essi quelli che ritengo maggiormente importanti sono:

  • disponibilità di una vasta serie di metodi "build-in", cioè già presenti di base, per eseguire le validazioni "standard" (campi obbligatori, validazione email, etc.).
  • possibilità di introdurre in modo semplice nuovi metodi personalizzati di validazione (ad esempio validazione attraverso espresisoni regolari).
  • possibilità di eseguire validazioni tramite ajax.

 

In questo tutorial esamineremo questi tre aspetti rimandando per ulteriori approfondimenti sulla pagina ufficiale del plugin Validation.

 

Validazione di un form di registrazione

In particolare andremo a validare un form di registrazione. Ecco di seguito ciò che andremo a realizzare:

DEMO DOWNLOAD

 

Iniziamo con il nostro markup del nostro form:

<html>
<head>
<title>Registrazione</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js"></script> 
	<!-- jquery validazioni //--> 
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"></script> 
<script type="text/javascript" src="validation_reg.js"></script>

<link rel="stylesheet" href="style.css" type="text/css" /> 
</head>
<body>
<form action="pagina_di_registrazione.php" method="post" id="form_register">
	<fieldset>
	<legend>Registrazione<legend>

		<label for="reg_user">Username*</label>
		<input type="text" name="username" id="reg_user" />
		
		<label for="reg_email">Email*</label>
		<input type="text" name="email" id="reg_email" />

		<label for="reg_pass1">Password*</label>
		<input type="password" name="pass1" id="reg_pass1" />

		<label for="reg_pass2">Conferma Password*</label>
		<input type="password" name="pass2" id="reg_pass2" />

		<input type="submit" name="register" value="registrati" id="reg_submit" />
		<input type="reset" name="cancella" value="cancella" id="reg_reset" />
	</fieldset>

</form>
</body>
</html>

 

La validazione che faremo sarà la seguente:

  • username:
    1. obbligatorio;
    2. con una lunghezza minima di 3 caratteri;
    3. verifica della sintassi tramite un metodo personalizzato (una mia regex specifica);
    4. verifica che non si tratti di un utente già registrato (ajax).
  • email:
    1. obbligatoria;
    2. verifica della sintassi tramite un metodo builin di validate;
    3. verifica che non si tratti di un'email già registrata (ajax).
  • Password
    1. obbligatoria;
    2. con una lunghezza minima di 8 caratteri.
  • Conferma password
    1. Corrispondenza tra le due password

 

Prima di passare nel dettaglio della seguente validazione vediamone in temini generali la modalità di implementazione del plugin.

 

Funzionamento di base

Per ciascun campo da validare occorrerà indicare le rules, ovvero le regole di validazione, specificando i metodi (build-in o personalizzati) da applicare.

Inoltre, sarà possibile (opzionale ma preferibile) indicare i messages, ovvero messaggi di errore per ciascun campo e metodo di validazione applicato.

Avremo, quindi, una implementazione esemplificativa di questo tipo:

$(document).ready(function()
{
$("#form_register").validate({
	rules:{
		'name_campo1':{
			metodoA: parametro,
			metodoB: parametro
			},
		'name_altro_campo':{
			metodoC: parametro
			}
	},
		
	messages:{
		'name_campo1':{
			metodoA: "messaggio di errore per questo metodo.",
			metodoB: "messaggio di errore per questo metodo."
			},
		'name_altro_campo':{
			metodoC: "messaggio di errore per questo metodo."
			}
		
	}
});
});

 

I metodi build-in

I tipi di validazione che eseguiamo sui nostri form spesso si ripetono. Ad esempio: campo obbligatorio, lunghezza minima e massima di un campo, validazione dell'indirizzo email o di un URL, etc etc.

Per tutti questi genere di validazioni "standard" il plugin Validate dispone di metodi pronti all'utilizzo.

In questo tutorial fra i metodi build-in disponibili applicheremo:

  • required: il cui parametro è true e determina che un campo sia obbligatorio;
  • minlength: il cui parametro è semplicemente un numero intero indicante la lunghezza minima;
  • email: il cui parametro è true e verifica la sintassi dell'indirizzo email;
  • equalTo: il cui parametro è il campo da confrontare in modo da verificare la corrispondenza fra due campi.

 

Ovviamente per gli ulteriori metodi si rimanda al documentazione ufficiale.

 

Con questi metodi possiamo implementare il plugin, con il file validation_reg.js, nel modo seguente:

$(document).ready(function()
{
		
    $("#form_register").validate(
    {
        rules:
        {
		'username':{
			required: true,
			minlength: 3
			},
		'email':{
			required: true,
			email: true
			},
		'pass1':{
			required: true,
			minlength: 8
			},
		'pass2':{
			equalTo: '#reg_pass1'
			}
		},
        messages:
        {
		'username':{
			required: "Il campo username è obbligatorio!",
			minlength: "Scegli un username di almeno 4 lettere!"
			},
		'email':{
			required: "Il campo email è obbligatorio!",
			email: "Inserisci un valido indirizzo email!"
			},
		'pass1':{
			required: "Il campo password è obbligatorio!",
			minlength: "Inserisci una password di almeno 8 caratteri!"
			},
		'pass2':{
			equalTo: "Le due password non coincidono!"
			}
        }
    });	
});

 

Estendere il plugin e aggiungere nuovo metodo di validazione

In alcuni casi può succedere che il tipo di validazione di cui abbiamo bisogno non è disponibile tra i metodi build-in e pertanto occorrerà implementarlo.

In sostanza bisognerà creare un ulteriore metodo di validazione in aggiunta a quelli già presenti. Per fare ciò si utilizzerà la funzione addMethod.

 

La funzione addMethod accetta tre parametri di cui il terzo è opzionale: il nome del metodo, la funzione che esegue la validazione e il messaggio di errore di default (cioè il messaggio di errore che comparirà in caso di mancata definizione dei messages).

In particolare la funzione che eseguirà la validazione avrà come parametri il valore del campo da validare, element (il valore boleano) ed eventuali parametri.

 

Nel nostro caso specifico abbiamo la necessità di validare la sintassi dell'username con una regex (espressione regolare).

Pertanto andremo a creare un metodo, che chiameremo username_regex:

$.validator.addMethod("username_regex", function(value, element) { 
	return this.optional(element) || /^[a-z0-9\.\-_]{3,30}$/i.test(value); 
	}, "Please choise a username with only a-z 0-9."); 

A questo punto all'interno delle rules, oltre ai metodi build-in, potremo impiegare il nostro nuovo metodo username_regex.

 

Validazioni con ajax

La semplicità con la quale è possibile eseguire validazioni tramite ajax è, a mio parere, il maggiore vantaggio fornito da tale plugin.

 

Nel caso del nostro form di registrazione dovremo evitare registrazioni con username o email già utilizzati da altri utenti. Ciò potrà essere verificato solo tramite una richiesta lato server (con php).

All'interno delle rules il metodo che andremo ad utilizzare è remote il quale ci consentirà di fare richieste asincrone lato server, cioè AJAX. Esso richiede come parametro obbligatoro l'url del file a cui rivolgere la richiesta ma opzionalmente è possibile fornire anche altri dati (fra cui il metodo di invio POST o GET).

 

Dovremo, quindi, anzitutto creare un file php a cui rivolgere tali richieste.

Molto semplicemente andremo a creare un file che chiameremo validatorAJAX.php il quale sarà:

<?php
// connessione al db
$connessione = mysql_connect('localhost', 'root', '') or die(mysql_error());
$selezione_db = mysql_select_db('test', $connessione) or die(mysql_error());
// funzione per verificare l'esistenza dell'username
function isset_username($username){
	$username = trim($username);
	$query = "SELECT COUNT(*) AS num FROM utenti WHERE username='" .mysql_real_escape_string($username). "'";
	$result = mysql_query($query) or die(mysql_error());
	$row = mysql_fetch_array($result);
	if($row['num']>=1){
		return TRUE; // true se utente esiste
		}
	else{
		return FALSE;
		}
	}

// funzione per verificare l'esistenza dell'email
function isset_email($email){
	$email = trim($email);
	$query = "SELECT COUNT(*) AS num FROM utenti WHERE email='" .mysql_real_escape_string($email). "'";
	$result = mysql_query($query) or die(mysql_error());
	$row = mysql_fetch_array($result);
	if($row['num']>=1){
		return TRUE; // true se utente esiste
		}
	else{
		return FALSE;
		}
	}

/*
PROCESSIAMO LA RICHIESTA AJAX
*/
if(isset($_POST['username'])){
	if(!isset_username($_POST['username'])){
		echo 'true';
		}
	else{
		echo 'false';
		}
	}
else if(isset($_POST['email'])){
	if(!isset_email($_POST['email'])){
		echo 'true';
		}
	else{
		echo 'false';
		}
	}
?>

 

Implementazione delle validazioni personalizzate e ajax

A questo punto possiamo completare validation_reg.js aggiundendocila validazione tramite il metodo username_regex, la validazione ajax dell'username e dell'email:

$(document).ready(function()
{
	// my method for validate username
	$.validator.addMethod("username_regex", function(value, element) { 
		return this.optional(element) || /^[a-z0-9\.\-_]{3,30}$/i.test(value); 
		}, "Please choise a username with only a-z 0-9.");
		
	$("#form_register").validate(
	{
        rules:{
		'username':{
			required: true,
			minlength: 3,
			username_regex: true,
			remote:{
				url: "validatorAJAX.php",
				type: "post"
				}
			},
		'email':{
			required: true,
			email: true,
			remote:{
				url: "validatorAJAX.php",
				type: "post"
				}
			},
		'pass1':{
			required: true,
			minlength: 8
			},
		'pass2':{
			equalTo: '#reg_pass1'
			}
		},
        messages:{
		'username':{
			required: "Il campo username è obbligatorio!",
			minlength: "Scegli un username di almeno 4 lettere!",
			username_regex: "Hai utilizzato caratteri non validi. Sono consentiti solo lettere numeri!",
			remote: "L'username è già utilizzato da un altro utente!"
			},
		'email':{
			required: "Il campo email è obbligatorio!",
			email: "Inserisci un valido indirizzo email!",
			remote: "Esiste già una registrazione per questo indirizo email! Esegui la procedura di smarrimento password!"
			},
		'pass1':{
			required: "Il campo password è obbligatorio!",
			minlength: "Inserisci una password di almeno 8 caratteri!"
			},
		'pass2':{
			equalTo: "Le due password non coincidono!"
			}
		}
	});
});

 

Personalizzare gli errori

Gli errori compariranno sotto il campo input all'interno di un tag label class="error" e questi saranno personalizzabili tramite css. Ad esempio nella demo è stato adottato il seguente style:

#form_register label.error{
	color: #f33;
	padding: 0;
	margin: 2px 0 0 0;
	font-size: 0.5em;
	padding-left: 18px;
	background-image: url('error.png');
	background-position: 0 0;
	background-repeat: no-repeat;
	}

Nel link per il download troverete l'intero foglio di stile impiegato nella demo.

DEMO DOWNLOAD

Olimpio Romanella

Sono un appassionato di Web Developing con un particolare debole per php. Mi dedico principalmente dello sviluppo back-end ed in particolare programmazione lato server con php, sviluppo di database relazionali MySql e progettazione di CMS di piccole e medie dimensioni.

Mi avvalgo del framework javascript Jquery, utilizzando molti dei suoi plugin e nei dei miei progetti utilizzo spesso il framework MVC Codeigniter.

20 Commenti presenti

avatar Fabio

Fabio

22 June 2014 ore 13:24

@Guido:

Ciao Guido,

Ho provato il tuo codice e sembra funzionare alla grande. Soloc he lo vorrei implementare in questa maniera qua. Ossia invece di mettere solo la "X" che indica che c'è un errore, vorrei mettere anche una "V" che indica che lo username, l'email e le password vadano bene. Quindi un controllo diretto dei campi inseriti nel db. Come posso modificare il tuo esempio affinchè mi faccia ciò ??? Spero di ricevere una tua risposta con qyualche esempio pratico. Per il resto lo script lo trovo semplice e funzionale.

avatar Guido

Guido

06 February 2014 ore 16:09

@Olimpio Romanella:

Ciao,

avrei una domanda, forse un pò OT, però legata anche a questi controlli ...
Ho fatto tutti i controlli con Javascript, mando in elaborazione la pagina a PHP, dove vengono eseguiti i controlli di congruenza, prima di salvare tutto nel DB ... mettiamo che trovo un errore e voglio riproporre la pagina per le correzzioni, come posso fare ? se la ricarico, perdo tutti i dati inseriti !

avatar Guido

Guido

03 February 2014 ore 14:38

@Olimpio Romanella:
..in effetti è più corretto !

ho anche implementato tre controlli personalizzati, per i campi data, codice fiscale e partita iva .. per adesso funzionano !

un unico neo, la partita iva per me non è obbligatoria, ma avendo messo il controllo, mi dava sempre errore, ho bypassato mettendo il controllo su pi vuota

// aggiungo il controllo data valida
jQuery.validator.addMethod("datavalida", function(value, element) {
var bits = value.split('/');
var d = new Date(bits[2], bits[1] - 1, bits[0]);
return d && (d.getMonth() + 1) == bits[1] && d.getDate() == Number(bits[0]);
}, "Inserire una data valida");

// aggiungo il controllo codice fiscale valido
jQuery.validator.addMethod("cfvalido", function(value, element) {
var cf = value.toUpperCase();
var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
if (!cfReg.test(cf))
return false;
var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
var s = 0;
for( i = 1; i <= 13; i += 2 )
s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
for( i = 0; i <= 14; i += 2 )
s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
return false;
return true;
}, "Inserire un codice fiscale valido");


// aggiungo il controllo partita iva valida
jQuery.validator.addMethod("pivalida", function(value, element) {
var pi = value;
if (pi.length == 0 ) { return true; }
else
{
var piReg = /\d{11}/;
if (!piReg.test(pi))
return false;
var s = 0;
for( i = 0; i <= 9; i += 2 )
s += pi.charCodeAt(i) - '0'.charCodeAt(0);
for( i = 1; i <= 9; i += 2 ){
c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
if( c > 9 ) c = c - 9;
s += c; }
if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
return false;
return true;}
}, "Inserire una partita IVA valida");

avatar Guido

Guido

03 February 2014 ore 10:57

@Olimpio Romanella:
..in effetti è più corretto !

ho anche implementato tre controlli personalizzati, per i campi data, codice fiscale e partita iva .. per adesso funzionano !

un unico neo, la partita iva per me non è obbligatoria, ma avendo messo il controllo, mi dava sempre errore, ho bypassato mettendo il controllo su pi vuota

// aggiungo il controllo data valida
jQuery.validator.addMethod("datavalida", function(value, element) {
var bits = value.split('/');
var d = new Date(bits[2], bits[1] - 1, bits[0]);
return d && (d.getMonth() + 1) == bits[1] && d.getDate() == Number(bits[0]);
}, "Inserire una data valida");

// aggiungo il controllo codice fiscale valido
jQuery.validator.addMethod("cfvalido", function(value, element) {
var cf = value.toUpperCase();
var cfReg = /^[A-Z]{6}d{2}[A-Z]d{2}[A-Z]d{3}[A-Z]$/;
if (!cfReg.test(cf))
return false;
var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
var s = 0;
for( i = 1; i <= 13; i += 2 )
s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
for( i = 0; i <= 14; i += 2 )
s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
if ( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
return false;
return true;
}, "Inserire un codice fiscale valido");


// aggiungo il controllo partita iva valida
jQuery.validator.addMethod("pivalida", function(value, element) {
var pi = value;
if (pi.length == 0 ) { return true; }
else
{
var piReg = /d{11}/;
if (!piReg.test(pi))
return false;
var s = 0;
for( i = 0; i <= 9; i += 2 )
s += pi.charCodeAt(i) - '0'.charCodeAt(0);
for( i = 1; i <= 9; i += 2 ){
c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
if( c > 9 ) c = c - 9;
s += c; }
if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
return false;
return true;}
}, "Inserire una partita IVA valida");

avatar Olimpio Romanella

Olimpio Romanella

03 February 2014 ore 10:49

@Guido: il pulsante con history back dovrebbe essere type="button"

avatar Guido

Guido

03 February 2014 ore 10:38

@Olimpio Romanella:

Su Java e Javascript, hai assolutamente ragione, ma , come dicevo sono neofita e confondo le due cose !

Nel frattempo, smanettando, sono riuscito a risolvere in questo modo:

<div class="row">
<div class="small-3 columns">
<input type="submit" name="reg_submit" value="Registrati" id="reg_submit" >
</div>
<div class="small-3 columns">
<input type="reset" name="cancella" value="cancella" id="reg_reset" >
</div>
<div class="small-3 columns">
<input type="submit" name="annullo" value="Annullo" id="reg_annulla" onClick="javascript:history.back();return false" >
</div>
</div>

Di fatto il primo submit manda la form al PHP di controllo, la seconda (reset) ripristina i valori precedenti e la terza manda indietro la pagina, senza controlli.

Dici che è corretto, come funzionamento intendo !

avatar Olimpio Romanella

Olimpio Romanella

31 January 2014 ore 23:52

@Guido:anzitutto java e javascript non sono assolutamente la stessa cosa.
dipende da come è fatto il "classico bottone" a cui accenni.

Se hai un link in cui posso visionare o uno snipet di codice su uno dei siti di condivisione codice.

avatar Guido

Guido

31 January 2014 ore 21:30

Ciao ! Ho trovato validissimo il tuo esempio e mi ha permesso di realizzare la mia prima pagina con controlli Java !!

Ti chiedo aiuto però, perchè ho un piccolo problema, nel mio form c'e' anche il classico bottone "esci", con il quale dovrei tornare alla pagina precedente, ma si blocca tutto, chiedendomi ad esempio di compilare i campi vuoti, etc. etc.

Da quel che ho capito, i controlli java vengono prima che sia processato il post dal php, quindi lì non posso cambiare nulla, magari una if (bottone esci cliccato) esci dal controllo ?

Grazie ancora !

avatar Md Masud

Md Masud

03 December 2013 ore 18:40

Ciao , Grazie per questo articolo utilissimo. io sento piu comodo lavorare con JQuery invece di javascript. io provato il metodo AJAX per fare validazione in mio projetto Codeigniter.

avatar pritul

pritul

03 December 2013 ore 16:51

ciao,thanks for share with us your work. for my work the same thing i need to use but i need to add 2 more field in this form.sorry if i write english cause i can,t write italian.anyway i am not very expert in jquery.i try to modify your code but i think it is not my work is not corect.if you kindly write here juqery code for me it will me kind help.i need something like that
Nome-
cognome-
email-
Nà di telefono-
password-
retype password-
thanks in advance.

avatar Marco panu

Marco panu

24 September 2013 ore 22:30

Ciao, complimenti per il breve tutorial, molto utile per chi come me cerca di apprendere, ho seguito con molta attenzione ma non riesco a capire la logica del funzionamento. Tu hai il seguente form con action post
<form action="pagina_di_registrazione.php" method="post" id="form_register">
la chiamata ajax avviene prima del post o dopo, non avendo pagina_di_registrazione.php non capisco come funziona.
dopo il controllo, pagina_di_registrazione.php dovrebbe restituire la risposta al form principale, io ho provato ma senza questa mi rimane su una pagina bianca!!
Puoi dirmi cosa devo impostare perchè dopo il return true o false rientri nel form con il messaggio?
Grazie.

avatar Domenico

Domenico

20 September 2013 ore 01:34

Ciao, ho usato il tuo script per un form mail, funziona tutto bene solo che vorrei fare in modo che quando non ci sono errori di validazione il form mail manda la mail, una cosa del tipo:

if controlli nessun errore

script php per invio mail

Grazie

avatar oly1982

oly1982

19 January 2013 ore 18:30

@Massimo: mssql_real_escape_string() è una funzione non esistente.
Hai due possibilità:
1) utilizzare addslashes()
2) utilizzare il PDO, soluzione preferibile.

avatar Massimo

Massimo

18 January 2013 ore 18:52

è possibile usare questo script con una mssql e non mysql?
Ho il problema di validazione del username, pero sono obbligato a usare php con MSSQL, questo è dovuto al fatto che il database è residente su un server Windows.
Ho provato a sostituire mssql_real_escape_string con mssql_real_escape_string, pero non funziona. Avete un'idea?
Grazienif and

avatar oly1982

oly1982

16 September 2011 ore 19:22

Ciao Cristian,

Le osservazioni che fai sono esattissime.
Il controlli e le validazioni degli input fatti con tecniche lato client (e quelle in ajax sono una di queste) non sono mai sufficienti. Senza fare cose complicatissime basterebbe disattivare javascript al browser per bypassare tutti i controlli.

Le validazioni fatte in javascript serviranno semplicemente per migliorare l'esperienza di navigazione dell'utente ma non ha nulla a che vedere con questione legate alla sicurezza.

Pertnato, gli stessi controlli dovranno essere eseguiti anche lato server con php. A tal proposito in un distinto articolo in cui parlo di registrazione e login (Semplice registrazione e login degli utenti) puoi vedere come nel metodo check_input_registrazione eseguo gli analoghi controllo che in questo articolo faccio lato client con questo plugin.

avatar Christian

Christian

16 September 2011 ore 16:42

Io avevo un dubbio sulla sicurezza.
Se dovessi usare questo script sicuramente potrei trovare in questa situazione sgradevole:

Un utente che volesse inserire dei dati, oltrepassando il validatore lato server, potrebbe salvare la pagina modificare opportunamente il file "validation_reg.js" e rimuovere i parametri remote.

La validazione lato server non dovrebbe essere fatta a prescindere se uno script lato client richieda o meno la validazione?

avatar max

max

04 August 2011 ore 17:27

Ciao, bel tutorial e fatto bene.
Volevo chiederti di integrare un'informazione in più: se ho le necessità di definire una regola del tipo: "deve essere pieno il campo A OPPURE il campo B" come posso fare?
Grazie

avatar Piero

Piero

21 July 2011 ore 15:53

Ho risolto quel problema, ma se ne presenta un altro. Praticamente io ho questo login, dove richiedo un'email e una password.

La maggior parte delle volte, dopo aver inserito i dati e senza aver avuto un avviso di errore da parte del plugin, non mi effettua il login. Il codice php l'ho controllato miliardi di volte e sono sicuro che sia giusto, perché l'ho fatto controllare ad altre 5 persone che se ne intendono.

Ho scoperto che il problema è il file validator.js che importo e che fa uso del plugin. C'è qualche comando da inserire per far andare a buon fine il login dopo aver cliccato sul bottone di input del form? Perché visto che non mi da errori una volta inseriti i dati, molto probabilmente il problema si propone dopo...

avatar oly1982

oly1982

21 July 2011 ore 10:29

ciao Piero,
non posso risponderti perchè dipende sicuramente dalle specificità del tuo script php che processa la richiesta ajax.

avatar Piero

Piero

19 July 2011 ore 08:25

Bella guida, molto utile! :)

Sto provando ad implementare il tutto su un form di login su un sito che sto facendo, ma il debugger mi da errore 500 (Internal Server Error). Sai come posso risolverlo?