jQuery può dialogare con qualsiasi linguaggio lato server tramite AJAX. In PHP, jQuery può anche leggere il cookie di sessione generato automaticamente quando viene chiamata la funzione session_start()
. C'è di più: tramite AJAX possiamo reinviare il token di sessione allo script PHP che lo ha generato e riceverlo nuovamente codificato stavolta in MD5. Si tratta di una pratica discutibile a livello di sicurezza, ma molto interessante se la si vede sotto l'aspetto di chiamate AJAX sulla stessa pagina.
Creiamo un documento PHP che dovrà processare due parametri GET: ajax
e token
. Il primo indicherà che si tratta di una richiesta AJAX e il secondo conterrà il token estratto dal cookie di sessione (per intederci, il cookie che inizia con la stringa PHPSESSID=
). All'inizio del documento inseriremo questo codice:
<?php session_start();
$token = $_GET['token'];
$md5 = md5($token);
if(isset($_GET['ajax'])) {
echo '<ul><li>Token: ' . $token .
'</li><li>MD5: ' . $md5 . '</li></ul>';
exit();
}
?>
Usiamo exit()
per evitare di visualizzare due volte il contenuto HTML del documento. All'interno dell'elemento body
useremo quindi il seguente codice jQuery:
$(function() {
var cookie = document.cookie;
var sanitizedCookie = cookie.replace(/[A-Z]+/g, '').replace('=', '');
$('#view').click(function(event) {
$.ajax({
url: location.href,
type: 'GET',
data: 'ajax=true&token=' + sanitizedCookie,
success: function(text) {
$(text).insertAfter('body > p');
}
});
event.preventDefault();
});
});
jQuery legge il cookie di sessione, ne estrae il token e lo reinvia a PHP che restituirà il seguente output:
Per motivi di sicurezza ho preferito evitare di fornire un esempio live. Abbiamo visto un aspetto molto importante: la capacità di utilizzare il documento corrente per l'elaborazione di una richiesta AJAX. Ovviamente se usate un framework PHP (per esempio Zend) l'elaborazione AJAX sarà molto più elegante e non ci sarà nemmeno bisogno di usare un parametro GET apposito.