Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Discussione: login su unica pagina

  1. #1

    login su unica pagina

    Ragazzi poiché non ho ancora studiato le sessioni vi devo fare una domanda: ho realizzato un sito e questo lo si può modificare da una pagina - ovviamente vorrei che questa pagina fosse protetta (anche con un unico user e un'unica pass - senza il bisogno di creare un database di user e pass) ; su internet ho trvato questo script dicendomi di fare un file e chioamarlo "autenticazione.inc.php" con all'interno questo codice:

    <?
    if ( ( !isset( $PHP_AUTH_USER )) || (!isset($PHP_AUTH_PW))
    || ( $PHP_AUTH_USER != ’nomeutente’ ) || ( $PHP_AUTH_PW != ’password’ ) ) {

    header( ’WWW-Authenticate: Basic realm="Nome sito"’ );
    header( ’HTTP/1.0 401 Unauthorized’ );
    echo ’Nome utente o password errati’;
    exit;

    }
    ?>


    e poi basta includere il file autenticazione.inc.php all'inizio della pagina che voglio proteggere- lo includo ma nn succede nulla;

    esiste un altro modo per proteggere questa pagina?

  2. #2
    Ciao emanuelevt1,
    dovresti inserire nel flusso del sito una pagina di login prima di quelle da proteggere.

    Se il login è ok allora imposti in session i dati dell'utente ed in testa ad ogni pagina che devi proteggere controlli l'esistenza dei dati in sessione.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Innazitutto ti ringrazio per la risposta, però dovrei prima capire una cosa: questo codice *1 dovrebbe vedere se le variabili $PHP_AUTH_USER e $PHP_AUTH_PW hanno le giuste corrispondenze (in questo caso ‘nomeutente’ e ‘password’) e in caso positivo fanno visualizzare la pagina (in questo caso Nome_sito.php ) giusto?


    ---------------------------------------------------------------------*1
    <?
    if ( ( !isset( $PHP_AUTH_USER )) || (!isset($PHP_AUTH_PW))
    || ( $PHP_AUTH_USER != ’nomeutente’ ) || ( $PHP_AUTH_PW != ’password’ ) ) {

    header( ’WWW-Authenticate: Basic realm="Nome sito"’ );
    header( ’HTTP/1.0 401 Unauthorized’ );
    echo ’Nome utente o password errati’;
    exit;

    }
    ?>
    ---------------------------------------------------------------------

    Praticamente questo script che ho visto su internet nn contiene sessioni (anche se nn so cosa significhi una sessione…) perà lo deduco che non esiste una parola “session” – se faccio un form con login e pass e lo invio tramite il metodo post mi dici che codice devo far eseguire alla pagina che voglio proteggere – ad esempio fai finta che la pagina che devo proteggere si chiami “privata.php” e che questa riceva i dati (username e password) da “login.php” tramite metodo “post” , mi dici che codice devo inserire in “privata.php” per far in modo di

    - controllare se i user e pass siano giusti
    - in caso positivo far visualizzare il codice della pagina
    - in caso negativo reindirizzare l’utente nella pagina di logina

    Grazie

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Lo script è ancora basato su register_globals=on, quindi si cambia in $_SERVER e dovrebbe funzionare ....

    Codice PHP:
    <?php
        
    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) || $_SERVER['PHP_AUTH_USER']!='nomeutente' || $_SERVER['PHP_AUTH_PW']!='password')
        {
            
    header('HTTP/1.0 401 Unauthorized');
            
    header('WWW-Authenticate: Basic realm="Nome sito"');
            echo 
    'Nome utente o password errati';
            exit;
        }
    ?>

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  5. #5
    Ciao emanuelevt1,
    cercherò di indirizzarti con il minimo di codice possibile.

    Dunque in login.php avrai inserito il form per inviare username e pwd alla pagina verifica.php,
    che verifica che i dati siano corretti:
    1 - se i dati sono corretti, aggiunge un token in sessione (da testare su tutte le pagine da proteggere) e ridirige l'utente verso la pagina da visualizzare show.php;
    2 - se i dati sono KO allora redirige l'utente alla pagina di login.

    Il codice(minimo) di verifica.php:
    Codice PHP:
    session_start();

    $user 'Pippo';
    $pass 'Pluto';

    if(!isset(
    $_POST['username']) || !isset($_POST['pwd']) 
             || 
    $_POST['username'] != $user || $_POST['pwd'] != $pass)
       
    header('Location: login.php?msg=Utente non validato');

    $session['utente'] = $user '$' $pass;
    header('Location: show.php'); 
    Non dovrebbero esserci errori.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  6. #6
    Ragazzi mi dispiace ma poiché non ho compreso bene ciò che mi avete detto ho tentato di fare di testa mia e il problema è questo vi posto il codice che ho creato nella pagina che devo proteggere:


    --------------------------------------------------------------------------------------
    <?php
    include_once("pwd.php") ;
    $user= $_POST['username'];
    $pwd= $_POST['psw'];
    if ($user!=$user1 or $pwd!=$pwd1){header("location:index.php");}
    if ($user==$user1 and $pwd==$pwd1) { ?>

    <html>
    .....codice html e php che andrà a modificare le varie pagine
    </html>

    <?php } else {echo '<font align="center">Attenzione inserire correttamente i dati Ritorna alla home page</font>';}?>

    --------------------------------------------------------------------------------------

    Quindi da un'altra pagina l'utente inserisce username e login se questi sono errati gli compare la scritta di rotrnare alla pagina precedente (index.php)
    il problmea è che senza questo codice le modifiche mi vengono apportate (cioè la pagina da proteggere funziona correttamente) mentre se inserisco il codice per "proteggerla" la pagina non funziona mi sapreset dire perchè? grazie

  7. #7
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Non so , non hai provato il codice che ti ho postato?

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  8. #8
    Ciao emanuelevt1,
    mi pare che stai seguendo l'esempio che ti ho fatto.

    Dunque,
    riprendendo in mano la situazione:

    Crea le pagine proprio come ti ho mostrato, e crea anche show.php.
    Mettile tutte nella stessa cartella.

    Nella pagina show.php, come in tutte quelle che vuoi proteggere, fai così:
    Codice PHP:

    <?php
    session_start
    ();

    if(!isset(
    $_session['utente']) || empty($_session['utente']))
       
    header('Location: ./login.php?msg=Sessione scaduta');

    ?>
    <html>
    ..............
    </html>
    In questo modo testi l'esistenza del token 'utente' messo in request solo se il login è stato fatto e ha avuto successo.

    La sua mancanza significa che l'utente sta accedendo alla pagina senza aver eseguito il login, oppure che la sua sessione utente è scaduta e, quindi, lo rimandi al login.

    Spero che sia tutto chiaro.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  9. #9
    Allora perdona la mia ignoranza .. ma ho proprio ... ho creato tre file:

    login.php--------------------------------------------

    <html>
    <head></head>

    <body>

    <form action="proteggi.php" method="post">
    <input type="text" name="username" value="user"/>
    <input type="password" name="pwd" />
    <input type="submit" name="pwd" />

    </form>

    </body>
    </html>

    ----------------------------------------------------

    verifica.php--------------------------------------------

    <?php
    session_start();

    $user = 'Pluto';
    $pass = 'Pippo';

    if(!isset($_POST['username']) || !isset($_POST['pwd'])
    || $_POST['username'] != $user || $_POST['pwd'] != $pass)
    header('Location: login.php?msg=Utente non validato');

    $session['utente'] = $user . '$' . $pass;
    header('Location: proteggi.php');

    ?>

    ----------------------------------------------------

    e infine proteggi.php----------------------------------

    <?php
    session_start();

    if(!isset($_session['utente']) || empty($_session['utente']))
    header('Location: ./login.php?msg=Sessione scaduta');

    ?>


    <html>
    <head></head>
    <body>
    <?php echo 'aio'; ?>
    </body>
    </html>

    --------------------------------------------------------

    Il problmea è che se anche inserisco correttamente Pippo e Pluto come user e psw non mi fa entrare in proteggi.php (sessione scaduta sulla barra degli indirizzi del broswer)

  10. #10
    Ciao emanuelevt1,
    mi pare che sia tutto ok.

    Se correggi il form HTML in modo che punti a verifica.php anziché proteggi.php dovresti riuscire a vedere qualcosa.


    Ci sei quasi.


    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

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 © 2024 vBulletin Solutions, Inc. All rights reserved.