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

Discussione: Creare un login in php

  1. #1
    Utente di HTML.it L'avatar di Bimby
    Registrato dal
    Nov 2011
    Messaggi
    22

    Creare un login in php

    Scusate, sono un principiante e da qualche giorno ho inziato lo studio del php e mysql, ho molti dubbi da chiarire, è da ieri che cerco su internet delle risposte, ma non ho trovato niente anzi ho trovato delle soluzioni ma non erano spiegate nel dettaglio.
    Volevo chiedervi:
    Creo un login in una pagina e con una verifica dei dati sblocco una pagina, ma per sbloccare una seri di pagine protette con un unico login come si fa?
    Se mi spiegate bene vi ringrazio.

  2. #2
    successivo [non si possono eliminare messaggi -.-]

  3. #3
    Una volta effettuato il login da parte dell'utente salva in una variabile di sessione l'id dell'utente e così potrai controllare a ogni pagina se la variabile di sessione è settata. Se lo è vuol dire che il login è stato effettuato.
    Codice PHP:
     $_SESSION['id']=$id_utente
    In ogni pagina che vuoi proteggere ci sarà un controllo iniziale sulla variabile di sessione. Il controllo è come questo che segue.
    Codice PHP:
    if(!isset($_SESSION['id'])){
      
    header("Login.php");
      exit;

    Se la variabile di sessione non è settata l'utente viene indirizzato alla pagina Login.php dove può effettuare il login.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Se il login va a buon fine metti in sessione una variabile, ad esempio

    $_SESSION['login'] = 'ok';

    scegli un nome e un valore più furbo, questi li ho messi per fare presto, scegli qualcosa di non banale da indovinare, se il tuo sito fosse su un server condiviso potrebbe risultare loggata una persona che ha fatto il login da un'altra parte.

    poi su ogni pagina che vuoi rendere accessibile solo dopo il login metti
    Codice PHP:
    <?php
    session_start
    (); //va messo come prima istruzione in assoluto nella pagina, altrimenti non funziona
    if($_SESSION['login'] == 'ok')
    {
       
    //il codice della pagina da mostrare
    }
    else
    {
        echo 
    'Accesso consentito solo agli utenti loggati';
    }

  5. #5
    Utente di HTML.it L'avatar di Bimby
    Registrato dal
    Nov 2011
    Messaggi
    22
    Puoi spiegarmi questa istruzione if($_SESSION['login'] == 'ok')
    Non ho capito che cosa sono e a cosa servono "login" e "ok", che relazione c'è tra i due?

  6. #6
    $_SESSION['login'] è la variabile di sessione che devi settare quando confermi il login dell'utente. Alhazred ti consiglia di settarlo a OK o a un valore che desideri, anche se io ti consiglio di salvarti l'id dell'utente che ti potrebbe servire nelle pagine successive.
    In tutte le pagine del sito devi quindi fare un controllo, che è quello su cui chiedi chiarimenti, se la variabile è settata con il valore che hai deciso tu.

    P.S. non c'è alcun rapporto tra la parola 'login' e 'ok'...puoi anche salvare la variabile di sessione
    Codice PHP:
    $_SESSION['autenticato']='si'
    e poi controlli se è settata a SI nelle altre pagine del sito.

    Se vuoi utilizzare il metodo da me suggerito basta controllare se la variabile è settata (con la funzione ISSET()) perchè il valore cambierà per ogni utente che si autenticherà.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Originariamente inviato da Longo8
    ...
    Se vuoi utilizzare il metodo da me suggerito basta controllare se la variabile è settata (con la funzione ISSET()) perchè il valore cambierà per ogni utente che si autenticherà.
    Controllare solo se la variabile è settata non ti da nessuna sicurezza, il controllo passa anche se in $_SESSION['id'] c'è il valore 'pippo' o 'dhasjkdhsaj' o qualunque altra cosa, perché verifichi solo se la variabile esiste, non il contenuto.

    Avrebbe più senso se usassi
    if(isset($_SESSION['id']) && $_SESSION['id'] == 'il valore che ti aspetti')
    ma in tal caso isset non ti serve a niente perché se non è settata il secondo controllo fallisce.

  8. #8
    Infatti ma in quel modo non ha senso...
    Se la variabile esiste vuol dire che è settata. E viene settata con l'id dell'utente. Perchè non dovrebbe dare sicurezza? Essa viene settata solo a login eseguito, se non viene eseguito il login la variabile non esiste, quindi non è settata.

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,469
    Perché se sei su un server condiviso quella variabile potrebbe essere stata settata da qualche altra parte.
    Esempio:
    - vado a visitare il sito www.sito1.it, lì mi loggo e chi ha fatto il sito ha impostato che a seguito del login in sessione ci va la variabile $_SESSION['id'] con un qualche valore.
    - non faccio il logout e vado sul tuo sito, senza fare il login la variabile $_SESSION['id'] esiste già e sono loggato anche sul tuo sito.

  10. #10
    mmm...dovremmo utilizzare entrambi la stessa variabile $_SESSION['id'], ma la cosa ora che ci penso potrebbe succedere. Nel tuo caso dovrebbe avere non solo la stessa variabile ma anche lo stesso valore. Entrambe insicure, anche se la tua è più sicura della mia. Un metodo universale? xD

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.