Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Eseguire logout dopo autenticazione server?

    Buon giorno a tutti, non riesco a fare il logout di un'autenticazione richiesta tramite server.
    Spiego.Il sito all'apertura richiede un'autenticazione attraverso:
    Codice PHP:
     $_SERVER['PHP_AUTH_USER']. 
    Si inseriscono User e Pass, ed il risultato si assegna ad una variabile di sessione cosi:
    Codice PHP:
    $_SESSION['SessUserName'] = $_SERVER['PHP_AUTH_USER']; 
    Dopo aver valorizzato $_SESSION['SessUserName'], utilizzo questa variabile per effettuare una serie di select per estrapolare dalle diverse tabelle alcuni valori riguardanti quello User.

    Fin qui nulla di strano.Il problema sorge quando voglio effettuare un Logout.
    Clicco sul pulsante logout che richiama la medesima pagina strutturata cosi:
    Codice PHP:
    //LogOut.php
    session_unset();
    session_destroy();
    $_SESSION = array();

    $nextpage = ($_REQUEST['nextpage'] ? $_REQUEST['nextpage'] : "index.php?p=logOut");
    header("location:".$nextpage); 
    a sua volta richiama la pagina messaggioLogout.php in questo modo:
    Codice PHP:
    index.php?p=logOut 
    Ma purtroppo la sessione $_SESSION['SessUserName'] resta sempre attiva.
    Questo perchè la stessa variabile($_SESSION['SessUserName']) è valorizzata all'apertura della pagina da $_SERVER['PHP_AUTH_USER'].

    All'apertura della pagina la richiesta dell'autenticazione
    Codice PHP:
    if (isset($_SERVER['PHP_AUTH_USER'])) {
        
    session_unset();
        
    session_destroy();
        
    $_SESSION = array();

            
    session_start();
            
    $_SESSION['SessUserName'] = $_SERVER['PHP_AUTH_USER'];
            
    //serie di select utilizzando $_SESSION['SessUserName']

    }
    if (!isset(
    $_SESSION['SessUserName'])) {
            
    session_unset();
        
    session_destroy();
        
    $_SESSION = array();
    } else {
            require_once(
    'SSI/Sessioni.ssi');
    }
    require_once(
    'SSI/Sessioni.ssi'); 
    Quindi vi chiedo gentilmente come posso eseguire un logout alla luce di quanto postato?
    Grazie mille dell'aiuto :|

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ricorda sempre che prima di

    session_unset();
    session_destroy();

    DEVI fare

    session_start();

    Quindi :

    Codice PHP:
    session_start();
    session_unset();
    session_destroy(); 

    header("location:".$exiturl);
    die(); 

  3. #3
    ho fatto come mi hai detto anche se lo sapevo già.
    Ho inserito session_start(), ma non è cambiato niente.

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Se usi l'autenticazione HTTP, il browser continuerà a rispedire i dati ogni volta finché non viene chiuso. Perché non usi un modulo di login come fanno tutti?
    In alternativa, al logout potresti rispedire la richiesta di autenticazione HTTP, ma questo farebbe sì, ovviamente, che l'utente si ritrovi davanti la mascherina per il login.

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Quoto.

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da Virus_101
    Quoto.
    Meno male. Sono più tranquillo adesso

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Bene dai, cio' e' sempre positivo ....

  8. #8
    Originariamente inviato da luca200
    Se usi l'autenticazione HTTP, il browser continuerà a rispedire i dati ogni volta finché non viene chiuso. Perché non usi un modulo di login come fanno tutti?
    In alternativa, al logout potresti rispedire la richiesta di autenticazione HTTP, ma questo farebbe sì, ovviamente, che l'utente si ritrovi davanti la mascherina per il login.
    Buon giorno e grazie per avermi risposto.
    Questo tipo di autenticazione serve per un sito intranet,dove possono accerdervi, solo poche persone, quindi all'apertura devo far autenticare in quel modo.
    Se ci sono altri modi sono tutto orecchi.

    Grazie ancora.....

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Il problema e' che come diceva Luca una volta che hai fatto login con l'autenticazione dello standard http il browser continuera' ad inviare i dati di autenticazione finche' non viene chiuso.

    Quindi anche se gli fai fare logout il browser continuera' a riloggarsi in automatico.

    La gestione delle sessioni invece ti consente di ottenere proprio i controllo che vuoi te.

    Io ti consiglio di controllare htaccess per le tue necessita' quindi farei cosi' :

    1- Imposto il file htaccess in modo che accetti le connessioni solo da determinati ip (quella della intranet per intenderci )
    2- Gestisco gli accessi con le sessioni std di PHP

    Questo ti consente di impedire gli accessi da ip "esterni" e di gestire in tutta tranquillita' login / logout al sistema che devi sviluppare.

    Per la documentazione su htaccess controlla qui

  10. #10
    Vi ringrazio ragazzi, ho visto che nell'intranet è presente un file htaccess impostato con dei parametri.Sicuramente è stato creato dal sistemista...

    Un'ulteriore curiosità, l'autenticazione in questo modo:
    Codice PHP:
    function authenticate() {
                
    header('WWW-Authenticate: Basic realm="Prova del Sistema di Autenticazione"');
                
    header('HTTP/1.0 401 Unauthorized');
                echo 
    "Per poter accedere a questa risorsa occorre inserire una coppia login e password valide\n";
                echo 
    "[url='http://websites/newIntranet']Entra[/url]";
                exit;
            } 
    interagisce per forza con il server?
    Codice PHP:
    $_SERVER['PHP_AUTH_USER']; 
    perchè mi sono ritrovato con questo controllo:
    Codice PHP:
    if (isset($_SERVER['PHP_AUTH_USER'])) {
        
    //etc etc....
    authenticate();

    Cmq, per il momento grazie e buone feste

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.