Codice PHP:
// Funzione da chiamare all'inizio di ogni pagina, restituisce false se non loggato, true se loggato o se il cookie esiste ed è valido
function is_logged() {
global $C, $connessione;
if ($_SESSION['logged'] == 1) {
$query = "UPDATE utenti SET last_login='".date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s")."' WHERE id ='".$_SESSION['userid']."'";
$result = mysql_query($query, $connessione) or die(mysql_error());
return true;
} else {
if (!empty($_COOKIE['nomesito'])) {
$hashusername = substr($_COOKIE['nomesito'],0,32);
$hashpassword = substr($_COOKIE['nomesito'],32,32);
$query = "SELECT * FROM utenti WHERE MD5(username)='".addslashes($hashusername)."' and MD5(password)='".addslashes($hashpassword)."'";
$result = mysql_query($query, $connessione) or die(mysql_error());
$totalRows = mysql_num_rows($result);
if($totalRows == 0) {
setcookie ('nomesito', "", time() - 3600);
return false;
} else {
$row = mysql_fetch_assoc($result);
$query = "UPDATE utenti SET last_login='".date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s")."' WHERE id ='".$_SESSION['userid']."'";
$result = mysql_query($query, $connessione) or die(mysql_error());
$_SESSION['logged'] = 1;
$_SESSION['userid'] = $row['id'];
return true;
}
} else {
return false;
}
}
}
// Funzione di login, il parametro 'ricorda' basta che non sia vuoto per attivarsi; restituisce 0 se il login è andato a buon fine, 1 se l'utente nn esiste o la pass non è valida, 2 se i campi non sono compilati
function login($username, $password, $ricorda) {
global $C, $connessione;
if(!empty($username) and !empty($password)) {
$query = "SELECT * FROM utenti WHERE username='".$username."' and password='".$password."'";
$result = mysql_query($query, $connessione) or die(mysql_error());
$totalRows = mysql_num_rows($result);
if($totalRows == 0) {
return 1;
} else {
$row = mysql_fetch_assoc($result);
if($row['status'] < 0) return 3;
if($ricorda != "") {
setcookie('nomesito', md5($row['username']).md5($row['password']), time()+2419200);
}
$_SESSION['logged'] = 1;
$_SESSION['userid'] = $row['id'];
return 0;
}
} else {
return 2;
}
}
// Funzione di logout, da chiamare in una pagina che, se la fuzione restituisce true, esegua un header per Location alla home
function logout() {
global $C, $connessione;
setcookie('nomesito', "logout", time()-3600);
unset($_SESSION['logged']);
if ($_SESSION['logged'] == 1) {
return false;
} else {
return true;
}
}
La tabella del db deve avere i campi id, username (VARCHAR), password (VARCHAR BINARY in chiaro) e last_login (in formato DATETIME)
Nelle pagine protette avrai a disposizione la variabile $_SESSION['userid'] (che coincide con l'id dell'utente nel db).
Da mettere nel config.php:
Codice PHP:
$hostname_connessione = '62.149.***.***'; // HOST OF THE MYSQL OFTEN localhost
$username_connessione = 'Sql******'; // YOUR USERNAME FOR MYSQL
$password_connessione = '********'; // YOUR PASSWORD FOR MYSQL
$database_connessione = 'Sql1****'; // YOUR DATABASE NAME
E, prima di qualsiasi print o scritta in HTML, inserire questo:
Codice PHP:
ob_start();
if($connessione = mysql_connect($hostname_connessione, $username_connessione, $password_connessione)) {
if(!mysql_select_db($database_connessione)) die("Impossibile selezionare il database. Riprovare più tardi.");
} else {
die("Impossibile connettersi al database. Riprovare più tardi.");
}
session_start();
fammi sapere 
(preciso che questo sistema di login è stato progettato per siti in cui PHP.ini è settato con le opzioni per slashare automaticamente le variabili globali $_POST, $_GET e affini)