Bloccare utente se non loggato con script php

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ciao a tutti,
ho un problema..
Ho creato un sito in php e vorrei che se un utente non e' loggato venga reindirizzato alla pagina di login.
Sono alle prime armi..ho gia' dato un occhiata a sessioni e a qualche post su questo forum,ma non riesco a risolvere il blocco.
In pratica se l'utente conosce l'indirizzo della pagina entra ugualmente.
Ho db mysql .
Potete darmi una mano?
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ciao a tutti,
ho un problema..
Ho creato un sito in php e vorrei che se un utente non e' loggato venga reindirizzato alla pagina di login.
Sono alle prime armi..ho gia' dato un occhiata a sessioni e a qualche post su questo forum,ma non riesco a risolvere il blocco.
In pratica se l'utente conosce l'indirizzo della pagina entra ugualmente.
Ho db mysql .
Potete darmi una mano?
Ciao, anche io sono molto alle prime armi, quindi ti dico cosa farei per logica.
Io imposteterei un controllo sul valore di.login che metterei per esempio a 1 per ogni utente loggiato, e inserirei alla/e pagina/e interessata/e un controllo su questo valore, verificherei quindi così che l'utente sia già loggiato, diversamente lo mandarmi diritto alla pagina di login. Potrei anche impostare una durata dei cookies breve, tipo 10 minuti. Dopodiché dovrò loggarmi nuovamente se non opero sul sito.

Sicuramente qualcuno saprà essere più preciso e soprattutto darti consigli con codice compreso.

Buone feste a tutti
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ecco le mie pagine:
login.php
Codice:
<?php

    include 'header.php';

?>

    <div id="wrapper">
    
        <?php
        
            $p = $_GET['azione'];
            
            // login.php?azione=login
            if($p == "login"){
            
                if(!isset($_POST['invia'])){ ?>
                    
                    <form method="post" action="#" id="formlogin">
                    
                        <label for="username"><font color='white'>USERNAME</font></label><br>
                        <input type="text" name="username" id="username" /><br><br><br>
                        <label for="password"><font color='white'>PASSWORD</font></label><br>
                        <input type="password" name="password" id="password" /><br><br><br><br>
                        <input type="submit" name="invia" id="login" value="ACCEDI" />
                    
                    </form><br><br><br>
                <a href="password_dimenticata.php"><font color='white'><strong>PASSWORD DIMENTICATA?</stong></font></a>   
<?php             } else {

                    $username = mysql_real_escape_string($_POST['username']);
                    $password = mysql_real_escape_string($_POST['password']);
                    
                    if($username == "" || $password == ""){
                    
                        echo "<h1><font color='white'>ATTENZIONE , DEVI COMPILARE TUTTI I CAMPI !</font></h1>";
                              header("Refresh: 4; URL= http://MIOSITO/registrazione_utenti/login.php?azione=login"); 
                    } else {
                    
                        $password_cript = md5($password);
                        
                        $recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'");
                        
                        $verificadati = mysql_num_rows($recuperadati);
                        
                        if($verificadati == 1){
                        
                            $sessione = mysql_fetch_array($recuperadati);
                            $_SESSION['utente'] = $sessione['username'];
                            echo "<h1><font color='white'>LOGIN EFFETTUATO CON SUCCESSO!</font></h1>";
                            header("Refresh: 2; URL= ../registrazione_utenti/index_ok.php");
                        
                        } else {
                        
                            echo "<h1><font color='white'>DATI ERRATI , RIPROVA !</font></h1>";
                                header("Refresh: 4; URL= http://placezero.altervista.org/registrazione_utenti/login.php?azione=login"); 

                        }
                    
                    }
                
                }
            
            
            // login.php?azione=logout
            } elseif ($p == "logout"){
            
                session_destroy();
                echo "<font color='white'><h1>LOGOUT EFFETTUATO CON SUCCESSO!</h1></font>";
                header("Refresh: 3; URL=http://MIOSITO/index.php ");
            
            }
        
        
        
        ?>
    
<?php session_start(); ?>

Nessuno mi sa aiutare sulle sessioni a tempo.
Mi interesserebbe far scadere la sessione ogni 10 min e non permettere a nessuno,anche se conosce l'indirizzo delle pagine,di accedere senza aver effettuato il LOGIN...
Sto studiando php ma tra lavoro etc etc non e' sempre facile...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao @giancadeejay
innanzi tutto qui ti da errore (lo stesso per altre righe)
PHP:
<?php
//.....
    echo "<h1><font color='white'>LOGIN EFFETTUATO CON SUCCESSO!</font></h1>";
    header("Refresh: 2; URL= ../registrazione_utenti/index_ok.php");
//....
?>
la funzione header non può venire dopo un uotput html e l'echo che fai appena prima è un output html
analogo discorso per la funzione session_start() che deve venire prima di qualsiasi output
tra l'altro fai diversi outpt prima es. <div id="wrapper"> e non so cosa ci sia dentro header.php che includi

oggi sono un po' impeganato eventualmente ci risentiamo il 2.
 

zorro

Utente Attivo
20 Ott 2014
272
11
18
ROMA
Ciao,
non ho provato il tuo codice ma, come suggerito da paperino78, dovrai creare una variable di sessione (ad es. $_SESSION['loggato'] che inizieralizzerai a NO o a 0 (zero = non loggato), dopodichè trasformerai tutte le pagine del sito
in altrettante pagine PHP, in testa alle quali controllerai la variabile di sessione: se è uguale a NO (o a zero = utente non loggato)
lo reindirizzerai alla pagina di LOGIN (naturalmente, una volta che l'utente si è loggato dovrai aggiornare la relativa variabile di sessione) altrimenti gli darai accesso alla pagina
In questo modo, anche se l'utente dovesse bypassare la pagina del login, verrà comunque reindirizzato lì, finchè non si sarà effettivamente loggato
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
io ho fatto cosi con tre pagine
1) pagina di log.php con il classico form
2) una paginetta che ho chiamato transito.php in puro php (niente html)
3) la pagina (o le pagine) riservata.php

log.php
PHP:
<?php
session_start();
$verifica=md5(rand(1000,9999));//genero un numero casuale e lo camuffo
//ad ogni accesso il valore cambia random
//lo passo in sessione
$_SESSION['verifica']=$verifica;
?>
<!-- form di log -->
<form action="transito.php" method="post" name="log">
tuo username <input name="user" type="text" /><br />
tua passvord <input name="pass" type="password" />
<!-- trametto il valore di verifica tramite input hidden -->
<input name="verifica" type="hidden" value="<?php echo $verifica; ?>" />
<input name="loggati" type="submit" />
</form>
transito.php
PHP:
<?php
session_start();
if($_SESSION['verifica'] != $_POST['verifica']){
    //quanto generato dalla sessione è diverso da post
    //quindi NON provengo dal form di log
    if(isset($_SESSION))session_destroy();
    header('location:index.php');// o altrove
    exit();
}else{
    //sessione e post di verifica coincidono
    //dati di connessione..
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    $query=mysqli_query($connessione,"SELECT user, pass FROM utenti WHERE user='$user' && pass='$pass'");
    if(mysqli_num_rows($query) ==0){
        //non iscritto
        if(isset($_SESSION))session_destroy();
        header('location:index.php');// o altrove
        exit();
    }else{
        $utente=mysqli_fetch_assoc($query);
        $_SESSION['nome']=$utente['user'];
        $_SESSION['password']=$utente['pass'];
        header('location:riservata.php');// o altrove
        exit();
    }
}
?>
riservata.php
PHP:
<?php
session_start();
if(!isset($_SESSION['nome']) || !isset($_SESSION['password'])){
    //una o entrambe le sessioni non esistono
    if(isset($_SESSION))session_destroy();
    header('location:transito.php');// o altrove
    exit();
}else{
    //le sessioni esistono
?>
<!DOCTYPE html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>
<body>
<?php
    echo "ciao ".$_SESSION['nome']."<br />";
    //quello che serve...ecc...
    //per il loguot rimando a transito.php che pensa a distruggere le sessioni
    //rimandando alla index
    echo "<a href=\"transito.php\">logaut<a>";
echo "</body>";
}
?>
in questo modo sono abbastanza sicuro (in rete sicurezza al 100% non esiste) che si possa accedere alle pagine riservate solo passando dal log e con utente registrato
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ragazzi ........Borgo Italia e' un grande ! Ho risolto Borgo...adesso quando tenti di entrare senza effettuare il LOGIN ti ributto alla pagina di login e sei costretto a farlo...grande! ma volevo anche inserire una"SESSIONE TIMEOUT"
tipo questa ma non so come implementarla nel codice ...ho gia' creato una paginetta che ti avverte che la sessione e' terminata..
Codice:
// set timeout period in seconds (600 = 10 minutes in seconds)
$inactive = 300;

// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
     $session_life = time() - $_SESSION['timeout'];
     if($session_life > $inactive) {
          session_destroy(); header("Refresh: 2; URL= http://MIOSITO/registrazione_utenti/sessione_scaduta.php");
     }
}

$_SESSION['timeout'] = time();
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
questo problema devi risolverlo con js, prova a cercare un conteggio alla rovesia che quando terminato ti riinvii, come il solito, alla transito.php.
prova a postare il problema nella sezione javascript
 
Discussioni simili
Autore Titolo Forum Risposte Data
grottafelix Bloccare l'accesso ad un utente che non ha questo IP Classic ASP 2
A [PHP] Bloccare utente tramite indirizzo IP PHP 3
V bloccare un utente PHP 2
T come bloccare indirizzi ip Reti LAN e Wireless 2
P Bloccare connessione internet per gli emulatori in android studio Sviluppo app per Android 2
M [PHP] Bloccare richieste indesiderate cURL PHP 12
A [PHP] Bloccare ridimensionamento tabella PHP 1
Shyson Bloccare email spam PHP 0
MarcoGrazia [htaccess] Bloccare tutti meno il proprio sito Apache 0
Gabriele Visioli Normativa sui Cookie e bloccare le Pubblicità/Affiliazioni WordPress 0
filomeni Sito in fase di sviluppo: bloccare tutti gli spider SEO e Posizionamento 5
Monital Bloccare l'accesso ad una cartella sull'ftp PHP 3
E Bloccare click su tabella HTML e CSS 2
L bloccare directory superiore ad uno script. PHP 0
I Bloccare registrazione Javascript 1
filippino Software per bloccare pubblicità su Internet Windows e Software 1
T Non bloccare accelerometro quando dispositivo va in standby Sviluppo app per Android 2
G bloccare file php PHP 6
R bloccare click continuo annunci PHP 2
valient13 bloccare le formazioni tramite il tempo PHP 6
C bloccare indicizzazione sottodominio SEO e Posizionamento 1
L bloccare l'accesso pagine php diretto PHP 6
neo996sps [PHP + MySQL] Se faccio F5 inserisce nuovo record. Come bloccare? PHP 7
G Bloccare sfondo HTML e CSS 10
D Bloccare le news della home a tre!!! PHP 2
borgo italia outlook: impossibile bloccare indirizzo di posta Windows e Software 5
F come bloccare un IP sul vs. Forum Supporto Mr.Webmaster 0
B bloccare parole non consentite PHP 5
G bloccare la digitazione parole troppo lunghe Javascript 5
A bloccare salvataggio dell'immagine Sicurezza e Virus 3
M bloccare celle di un foglio excel e proteggerlo via codice Classic ASP 2
P nascondere o bloccare un file Windows e Software 1
S frontpage bloccare pagina nel browser HTML e CSS 2
sbobby Bloccare l'hotlinking!! HTML e CSS 20
P Bloccare PROXY Web Server 0
shee bloccare campo di testo HTML e CSS 4
cerbero Bloccare il dl delle immagini HTML e CSS 7
G Bloccare l'esecuzione di una funzione Javascript 2
S bloccare dimensione tabelle frontpage2000 HTML e CSS 4
M Per bloccare gli Ip indesiderati su php - nuke PHP 0
R Problema con FP 2003: bloccare scorrimento menu HTML e CSS 4
H Click destro da bloccare HTML e CSS 10
P Bloccare l'accesso con ID E PWD HTML e CSS 9
E Gestione profilo utente tramite Form PHP 3
I visualizza profilo utente utente in chat PHP 0
F Nuovo utente Presentati al Forum 0
R Plugin per Registrazione Utente e Pagamento prodotto WordPress 2
A Dare l'accesso ad una pagina solo ad un utente specifico PHP 0
G Registrazione utente su pagina asp Classic ASP 13
M Lanciare alert se il codice fiscale è già presente nel db e lasciare la scelta di inserire all'utente PHP 42

Discussioni simili