Buongiorno a tutti! Ultimo post poi passo e chiudo! Ho risolto ogni problema con un po' di intuito e qualche escamotage. Posto di seguito alcuni frammenti di codice che potrebbero tornare utili ai posteri:
codice (commentato) per il login
[PHP]<?php
// Includo la connessione al database
include 'connect.php';
//FUNZIONE DI VERIFICA SESSIONE-COOKIES
if (isset($_COOKIE['session'])) {
header('Location: index.php');
exit; }
//FUNZIONE DI LOGIN
// Se il modulo viene inviato...
if(isset($_POST['login'])) {
// Dati Inviati dal modulo
$id = (isset($_POST['id'])) ? trim($_POST['id']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
$user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
$pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
if (!get_magic_quotes_gpc()) {
$id = addslashes($id);
$user = addslashes($user);
$pass = addslashes($pass);
}
// Crypto la password e la confronto con quella nel database
$pass = md5($pass);
// Controllo l'utente esiste
$query = mysql_query("SELECT id FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1");
// Se ha trovato un record
if(mysql_num_rows($query) == 1) {
// prelevo l'id dal database
$login = mysql_fetch_array($query);
// Creo una variabile di sessione
$_SESSION['login'] = $login['id'];
setcookie('session', $_SESSION['login'], time()+606024*365);
// reindirizzo l'utente
header('Location: index.php');
exit;
}
// se non esiste da l'errore
else {
echo '<script type="text/javascript">alert("nome utente o password errati!");</script>';
};
}
?>[/PHP]
codice (commentato) per l'autenticazione / by pass autenticazione utilizzando i cookies
[PHP]<?php
// SE L'UTENTE E' GIA' LOGGATO
// Includo la connessione al database
include 'connect.php';
//FUNZIONE DI VERIFICA SESSIONE-COOKIES
if (isset($_COOKIE['session'])) {
$idcookie = $_COOKIE['session'];
// Controllo se i cookies corrispondono ad un utente registrato
$query = mysql_query("SELECT * FROM utenti WHERE id = '$idcookie' LIMIT 1");
if(mysql_num_rows($query) == 1) {
}
}
else {
header ('location: login.php');
exit;};
?>[/PHP]
Fin qui tutto semplice e funzionante. Il problema sorge quanto da una pagina "privata" si vuole passare ad un'altra pagina privata senza un form e quindi un "post o get", ma con un semplice <a href ...>. Quello che occorre è:
-
dettagliare il link come segue (ovvero aggiungendo il target)
[HTML]<a class="privata" href="profilo.php" class="login" target="_top">PROFILO</a>[/HTML]
-
Aggiungere nell'header di tutte le pagine "private" collegate fra di loro da semplici link <a href ...> il seguente script jquery
<!-- SCRIPT CHE PREVIENE APERTURA DI LINK IN BROWSER -->
<script type="text/javascript">
$(document).ready(function(){
if (("standalone" in window.navigator) && window.navigator.standalone) {
// For WebApps
$('a').on('click', function(e){
e.preventDefault();
var new_location = $(this).attr('href');
if (new_location != undefined && new_location.substr(0, 1) != '#' && $(this).attr('data-method') == undefined){
window.location = new_location;
}
});
}
});
</script>