Login con AJAX e PHP

di Gianni Tomasicchio - 3 gennaio 2007

AJAX Javascript UTF-8

Il PHP per AJAX

Lo script PHP che si occupa di ricevere il form inviato via AJAX e un comune script per la gestione del POST. La logica di funzionamento è molto semplice ma è necessario adottare alcuni accorgimenti per gestire correttamente le codifiche dei caratteri. Ecco i passaggi essenziali:

  • username e password vengono estratti dall'array $_POST, privati di eventuali spazi alle estremità e salvati nelle variabili $username e $password.
  • Se nel php.ini è abilitato il magic_quotes, vengono eliminati gli eventuali backslash inseriti automaticamente da PHP.
  • Poiché username e password sono stati inviati dal client via AJAX, questi sono codificati in UTF8. E' necessario pertanto convertirli in ISO-8859-1 con la funzione utf8_decode().
  • username e password possono finalmente essere passati alla funzione login() che, dopo una banale verifica per confronto con username "ivan" e password "segreto", restituisce un codice numerico che identifica l'esito dell'operazione.
  • Il risultato del controllo deve essere inviato al client, ma non prima che questo venga convertito in UTF8, codifica utilizzata da AJAX sul browser, attraverso la funzione utf8_encode().
  • Infine il codice con l'esito dell'operazione viene inviato al browser, con una semplicissima echo.

login.php

<?php
// prelevo username e password dal POST,
// eliminando eventuali spazi alle estremità delle stringhe
$username = trim($_POST['username']);
$password = trim($_POST['password']);

// elimino eventuali backslash inseriti automaticamente da PHP
if(get_magic_quotes_gpc())
{
	$username = stripslashes($username);
	$password = stripslashes($password);
}

// Converto in ISO-8859-1 i caratteri provenienti
// dal client, codificati di default in UTF8
$username = utf8_decode($username);
$password = utf8_decode($password);

// provo ad effettuare il login con i dati recuperati dal form
$esito = login($_POST['username'],$_POST['password']);

// converto in UTF8 la risposta restituita dalla funzione login()
$esito = utf8_encode($esito);

// invio la risposta al client
echo $esito;

// funzione per la verifica dei dati di login
function login($username, $password)
{
	$username_corretto = "ivan";
	$password_corretta = "segreto";

	if(!$username || !$password) {
		return 3;
	}

	if($username != $username_corretto) {
		return 1;
	}

	if($username == $username_corretto && $password != $password_corretta) {
		return 2;
	}

	if($username == $username_corretto && $password == $password_corretta) {
		return 4;
	}
}
?>

2 commenti

1 daniele nobile daniele nobile sabato 6 febbraio 2010, ore 11:10
Ciao ho provato il tuo codice ma... non funziona. Premendo il bottone click non succede nulla. Sapresti indicarmi qual'è il problema.

Grazie Daniele
2 daniele nobile daniele nobile sabato 6 febbraio 2010, ore 11:14
<blockquote>Ciao ho provato il tuo codice ma... non funziona. Premendo il bottone click non succede nulla. Sapresti indicarmi qual'è il problema.

Grazie Daniele</blockquote>

Scusami... no il codice funziona... avevo sbagliato io. Ok, provo ad implementarlo sul mio codice.

Grazie
Effettua l'accesso o registrati per inserire un commento