Visualizzazione risultati 1 fino 1 di 1

Discussione: aggiungiamo il modulo per il login con il redirect al nostro codice

  1. #1
    howdoit non č connesso Neofita
    Data registrazione
    01-10-2014
    Messaggi
    4

    Lightbulb aggiungiamo il modulo per il login con il redirect al nostro codice

    Questo articolo é la continuazione di "web design,scrivere uno script per la registrazione",per chi non l'ha ancora letto consiglio di darci un'occhiata per comprendere meglio ma comunque verrį mostrato il codice completato e sarį disponibile in fondo alla pagina

    Attenzione,a causa di un problema di trascrizione nel precedente articolo postato sul forum c'é un errore nel file config.php,bisogna cancellare i "pezzi" relativi all'id_account,in questo articolo gli errori son stati eliminati

    index.php
    Codice PHP:
    <!DOCTYPE html>
    <html>
    <head>
    <!--maca il foglio di stile -->

    <!-- includo il file che contiene i moduli da visualizzare -->
    <?php include("function.php"); ?>
    <!-- includo il file config -->
    <?php include("config.php"); ?>
    <!-- istanzio la classe -->
    <?php $config=new config(); ?>

    </head>
    <body>
    <?php
    // in caso non sia stata impostata la variabile che decide cosa visualizzare,verrį mostrato il modulo di registrazione
    if(!isset($_GET['section'])) : $_GET['section']="registration"; endif;

    // creiamo lo switch,a seconda del valore della variabile mostrerį il login,la registrazione,il pannello utente o il recupero password,utilizzeremo le funzioni di php
    switch ($_GET['section']) {
    case
    'registration':
    registration($config);
    break;
    case
    'login':
    login($config);
    break;
    case
    'panel':
    panel($config);
    break;
    case
    'retrieve':
    retrieve($config);
    break;
    case
    'logout':
    logout();
    break;
    }
    ?>
    </body>
    <footer>
    powered by: <a href="http://howdoit.altervista.org/" title="HOW DO IT">how do it</a>
    </footer>
    </html>
    function.php
    Codice PHP:
    <!-- questo file conterrį le funzioni per visualizzare i nostri moduli -->
    <?php
    //funzione per la registrazione
    function registration($config){
    //contrllo se l'utente é loggato
    if(!isset($_SESSION['id'])) :
    //azione del pulsante registrazione
    if(isset($_POST["registration"])) :

    //recupero i valori
    $nome=htmlentities($_POST['nome']);
    //criptiamo la password
    $password=sha1(md5(htmlentities($_POST['psw'])));
    $r_psw=sha1(md5(htmlentities($_POST['r_psw'])));
    $email=$_POST['email'];
    $check=$_POST['check'];
    //controlliamo che il codice sia un numero
    if(is_numeric($_POST['security'])): $security=$_POST['security']; endif;
    $data_odierna=$config->get_data();

    //creo la variabili da passare alla query
    $nome_tabella="account";
    $nome_campi="nome,password,email,data_creazione";
    $valori="'$nome','$password','$email','$data_odierna'";

    if(
    $password==$r_psw) :

    if(
    $security==$check) :
    //controllo se esiste giį l'email scelta
    if(!$config->DB_select("account"," email='$email' ")) :

    if(
    $config->DB_insert($nome_tabella,$nome_campi,$valori)) :

    // mi invio una mail per essere avvisato (opzionale ovviamente)
    if(mail($config->get_emailSito(),"nuova registrazione","Congratulazioni,si é appena registrato un utente!")) :


    if(
    mail($email,"registrazione account","Congratulazioni,la tua registrazione é andate a buon fine,ecco i tuoi dati: \nuser: ".$nome."\npassword: ".$password."\nsito: ".$config->get_indirizzoSito())) :

    echo
    "Congratulazioni!! \nla registrazione é andata a buon fine,riceverai un'e-mail entro 24 ore con i tuoi dati per accere! \nbuona permanenza su ".$config->get_NomeSito();

    endif;
    else:
    echo
    "si é verificato un problema,riprova tra qualche minuto :/";
    endif;
    else :
    echo
    "l'email selezionata é giį stata utilizzata";
    endif;
    else:
    echo
    "il codice non é corretto!";
    endif;
    else:
    echo
    "le password non corrispondono!";
    echo
    $password;echo $r_psw."</br>";print_r($_POST);
    endif;
    endif;
    endif;
    ?>
    <!-- creo il codice di sicurezza -->
    <?php $codice = rand(4000, 6000); ?>
    <!-- attivo il debugger -->
    <?php $config->set_debugger(1) ?>

    <!-- creo il form -->
    <div id="reg" >
    <form id="reg-form" method="POST" action="#">
    <!-- stampo il nome del sito,ricordate i getter? :) -->
    <caption>registrati su <?php echo $config->get_NomeSito(); ?></caption>
    <input id="nome" name="name" type="text" placeholder="username" autofocus required>
    <input id="psw" name="psw" type="password" placeholder="password" required>
    <input id="r_psw" name="r_psw" type="password" placeholder="retype password" required>
    <input id="email" name="email" type="email" placeholder="e-mail" required>
    <span><?php echo $codice ?></span>
    <input id="check" name="check" type="hidden" value="<?php echo $codice; ?>">
    <input id="security" name="security" type="number" placeholder="security code" required>
    <nobr>
    <input id="reset" name="reset" type="reset" value="vuota i campi" >
    <input id="registration" name="registration" type="submit" value="invia i dati!" >
    </nobr></br>
    possiedi giį un account?<a href="?section=login">esegui login</a> oppure <a href="?section=retrieve">recupera la password</a>
    </form>
    </div>
    <?php
    else:
    echo
    "risulti ancora loggato per uscire e poter vedere questo modulo clicca su <a href='?section=logout'>logout</a>";
    endif;
    }

    //modulo login
    function login($config){
    if(!isset(
    $_SESSION['id'])) :
    //azione del pulsante login
    if(isset($_POST["login"])) :

    //recupero i valori
    $nome=htmlentities($_POST['nome']);
    $password=sha1(md5(htmlentities($_POST['psw'])));

    //creo la variabili da passare alla query
    $nome_tabella="account";
    $option_1="nome='$nome' AND password='$password' ";
    $option_2="email='$nome' AND password='$password' ";

    //eseguo le query
    $query_nome=$config->DB_select($nome_tabella,$option_1);
    $query_email=$config->DB_select($nome_tabella,$option_2);

    //controllo se é stato trovato l'utente prima cercandolo con l'username e poi con l'e-mail,in caso positivo riempo la variabile $login con l'array di dati
    if(empty($query_nome)) :
    if(empty(
    $query_nome)) :
    $login="";
    else :
    $login=$query_nome;
    endif;
    else :
    $login=$query_nome;
    endif;
    //se la variabile $login contiene l'array di dati creo le sessioni ed eseguo il redirect,altrimenti stampo il messaggio di errore
    if(count($login) >0) :

    // imposto la sessione
    $_SESSION['id']=$login[0]['id_account'];
    $_SESSION['nome']=$login[0]['nome'];
    $_SESSION['email']=$login[0]['email'];

    header("Location: index.php?section=panel");
    else :

    echo
    "nome utente e/o password errato";
    endif;
    endif;
    ?>
    <!-- creo il form -->
    <div id="log">
    <form id="log-form" method="POST" action="#">
    <!-- stampo il nome del sito,ricordate i getter? :) -->
    <caption>accedi a <?php echo $config->get_NomeSito(); ?></caption>
    <input id="nome" name="name" type="text" placeholder="username o e-mail" autofocus required>
    <input id="psw" name="psw" type="password" placeholder="password" required>
    <nobr>
    <input id="reset" name="reset" type="reset" value="vuota i campi" >
    <input id="login" name="login" type="submit" value="accedi!" >
    </nobr></br>
    <a href="?section=registration">registrati</a> o <a href="?section=retrieve">recupera i tuoi dati</a>";
    </form>
    </div>

    <?php
    else:
    echo
    "risulti ancora loggato per uscire e poter vedere questo modulo clicca su <a href='?section=logout'>logout</a>";
    endif;
    }

    //modulo pannwllo utente
    function panel($config){
    if(isset(
    $_SESSION['id'])) :

    echo
    "Benvenuto ".$_SESSION['nome'].", questo é il pannello utente </br>";
    echo
    "per uscire clicca <a href='?section=logout'>logout</a>";
    else :
    echo
    "non possiedi i permessi necessari per visualizzare il contenuto,<a href='?section=registration'>registrati</a> o <a href='?section=login'>accedi</a>";
    endif;

    }

    //mdulo recupero dati
    function retrieve($config){
    //controllo se l'utente ha eseguito il login
    if(!isset($_SESSION['id'])) :

    if(isset(
    $_POST["retrieve"])) :
    //recupero i valori
    $email=htmlentities($_POST['email']);
    //password di default
    $nuova_psw="howdoit";

    //creo la variabili da passare alla query
    $table="account";
    $option="password='".sha1(md5($nuova_psw))."' ";
    $where_cause="email='$emai' ";
    $account=$config->DB_select("account"," email='$email' ");

    if(!empty(
    $account)) :

    if(
    $config->DB_update($table,$option,$where_cause)) :

    if(
    mail($email,"recupero account","dati per l'accesso: \nuser: ".$account[0]['nome']."\nnuova password: ".$nuova_psw."\nsito: ".$config->get_indirizzoSito())) :

    echo
    "riceverai un'e-mail entro 24 ore con i tuoi dati per accere";
    endif;
    else :
    echo
    "si é verificato un problema tecnico,riprofa fra qualche minuto";
    endif;
    else :
    echo
    "E-mail non trovata";
    endif;
    else:
    echo
    "risulti ancora loggato per uscire e poter vedere questo modulo clicca su <a href='?section=logout'>logout</a>";
    endif;
    ?>
    <!-- creo il form -->
    <div id="ret">
    <form id="ret-form" method="POST" action="#">
    <!-- stampo il nome del sito,ricordate i getter? :) -->
    <caption>recupera password</caption>
    <input id="nome" name="name" type="text" placeholder="e-mail" autofocus required>
    <input id="retrieve" name="retrieve" type="submit" value="recupera!" ></br>
    non possiedi un account?<a href="?section=registration">registrati</a>";
    </form>
    </div>

    <?php
    endif;
    }

    //modulo logout con redirect
    function logout(){
    session_destroy();
    header("Location: index.php");
    }

    /*
    **fatemi sapere cosa ne pensate e soprattutto se avete dubbi e quali aricoli volete
    **le mie guide sono totalmente free,l'unica cosa che chiedo é il vostro sostegno,commentate liberamente :)
    */
    ?>
    A questo punto non ci resta che aprire il nostro file config.php e aggiungere in cima:
    Codice PHP:
    session_start();
    Ora possiamo utilizzare liberamente le sessioni :D
    A causa di problemi di spazio questo post é stato alleggerito,per visualizzare l'articolo completo e scaricare i file vi rimando al sito:
    HOW DO IT
    Ultima modifica di howdoit : 21-10-2014 alle ore 16.57.45

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •