'http://localhost/test/guida_semple/login.php', 'register_page' => 'http://localhost/test/guida_semple/registrazione.php', 'logout_page' => 'http://localhost/test/guida_semple/logout.php' ); /******************************************* se non sai ciò che fai non toccare più nulla *******************************************/ /*risorse di connessione*/ protected $conn; protected $selezione_db; /*variabili di registrazione*/ protected $reg_username; protected $reg_email; protected $reg_pass; protected $reg_confirm_pass; protected $reg_crypt_pass; /*variabili di login*/ protected $login_username; protected $login_password; protected $login_cryptpass; protected $login_iduser; /*variabili per gestire gli errori*/ public $messages = array( 1 => 'Il campo username è obbligatorio.', 2 => 'Il campo email è obbligatorio.', 3 => 'Il campo password è obbligatorio.', 4 => 'Le due password non coincidono.', 5 => 'Il campo username contiene caratteri non validi. Sono consentiti solo lettere, numeri il i seguenti simboli . _ -.', 6 => 'Inserisci una email con sitassi corretta.', 7 => 'La password scelta è eccessivamente breve. Scegli una password di almeno 8 caratteri.', 8 => 'Esiste già un utente registrato con questo username.', 9 => 'Esiste già un utente registrato con questa email.', 10 => 'Registrazione effettuata con successo.', 11 => 'Login errato', 12 => 'Login eseguito con successo.', 13 => 'Logout eseguito con successo.', 14 => 'Per accedere a questa pagina occorre essere loggati.' ); public $message_script; // il costruttore attiva la connessione a mysql public function __construct(){ $this->connessione(); } /****************** CONNESSIONE A MYSQL ******************/ protected function connessione(){ $this->conn = mysql_connect($this->host_db, $this->user_db, $this->pass_db) or die(mysql_error()); $this->selezione_db = mysql_select_db($this->name_db, $this->conn) or die(mysql_error()); return TRUE; } /************************************* ALCUNI METODI PER ESEGUIRE VALIDAZIONI *************************************/ // verifica campo generico non vuoto (TRUE se non vuoto) public function empty_string($string){ $string = trim($string); if($string==''){ return TRUE; } else{ return FALSE; } } // verifica sintassi username public function is_username($username){ $regex = '/^[a-z0-9\.\-_]{3,30}$/i'; return preg_match($regex, $username); } // verifica sintassi email (TRUE se ok) public function is_email($email){ $regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/'; return preg_match($regex, $email); } // verifica sintassi password (per semplicità solo lunghezza) (TRUE se ok) public function is_secure_password($password){ if(strlen($password)>=8){ return TRUE; } else{ return FALSE; } } /***************************************************** METODI PER VERIFICARE ESISTENZA DI USERNAME E PASSWORD ******************************************************/ // verifica esistenza username (TRUE se esiste) public function isset_username($username){ $query = "SELECT COUNT(username) AS count FROM users WHERE username='".mysql_real_escape_string($username)."' LIMIT 1"; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result); if($row['count']==1){ return TRUE; } else{ return FALSE; } } // verifica esistenza email (TRUE se esiste) public function isset_email($email){ $query = "SELECT COUNT(email) AS count FROM users WHERE email='".mysql_real_escape_string($email)."' LIMIT 1"; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result); if($row['count']==1){ return TRUE; } else{ return FALSE; } } /****************************** I FORM DI LOGIN E REGISTRAZIONE ******************************/ public function get_login_form(){ $html = '
Login
'; return $html; } public function get_register_form(){ $html = '
Registrazione
'; return $html; } /***************************** LINK LOGOUT *****************************/ public function get_link_logout(){ if($this->is_logged()){ return 'Logout'; } return ''; } /******************************* METODO PER CRIPTARE LE PASSWORD *******************************/ public function crypt_pass($pass){ return sha1($pass); } /***************************** ESECUZIONE DELLA REGISTRAZIONE ******************************/ public function esegui_registrazione(){ // se il form e i suoi input sono stati inviati if(isset($_POST['register']) AND isset($_POST['username']) AND isset($_POST['email']) AND isset($_POST['pass1']) AND isset($_POST['pass2'])){ //valorizziamo alcune variabili $this->reg_username = trim($_POST['username']); $this->reg_email = trim($_POST['email']); $this->reg_pass = trim($_POST['pass1']); $this->reg_confirm_pass = trim($_POST['pass2']); // criptiamo la password $this->reg_crypt_pass = $this->crypt_pass($this->reg_pass); // eseguiamo la validazione degli input $valid_input = $this->check_input_registrazione(); // se sono validi if($valid_input===TRUE){ // inseriemo all'interno del database i dati $this->query_insert_registrazione(); // settiamo il messaggio di successo della registrazione $this->message_script = 10; return TRUE; } } return FALSE; } // verifica che gli input siano corretti protected function check_input_registrazione(){ if($this->empty_string($this->reg_username)){ $this->message_script = 1; return FALSE; } else if($this->empty_string($this->reg_email)){ $this->message_script = 2; return FALSE; } else if($this->empty_string($this->reg_pass)){ $this->message_script = 3; return FALSE; } else if($this->reg_pass != $this->reg_confirm_pass){ $this->message_script = 4; return FALSE; } else if(!$this->is_username($this->reg_username)){ $this->message_script = 5; return FALSE; } else if(!$this->is_email($this->reg_email)){ $this->message_script = 6; return FALSE; } else if(!$this->is_secure_password($this->reg_pass)){ $this->message_script = 7; return FALSE; } else if($this->isset_username($this->reg_username)==TRUE){ $this->message_script = 8; return FALSE; } else if($this->isset_email($this->reg_email)==TRUE){ $this->message_script = 9; return FALSE; } return TRUE; } // esecuzione della query insert di registrazione protected function query_insert_registrazione(){ $query = " INSERT INTO users SET username='".mysql_real_escape_string($this->reg_username)."', pass='".mysql_real_escape_string($this->reg_crypt_pass)."', email='".mysql_real_escape_string($this->reg_email)."', data_reg= NOW()"; $result = mysql_query($query) or die(mysql_error()); return mysql_insert_id(); } /******************* ESECUZIONE DEL LOGIN ********************/ public function esegui_login(){ // se il form di login e i sui tutti input sono stati inviati if(isset($_POST['login']) AND isset($_POST['username']) AND isset($_POST['pass'])){ // valorizziamo delle variabili $this->login_username = trim($_POST['username']); $this->login_password = trim($_POST['pass']); // criptiamo la password $this->login_cryptpass = $this->crypt_pass($this->login_password); // validiamo i dati (non devono essere vuoti) $not_empty_input = $this->check_input_login(); // se la validazione è andata a buon fine if($not_empty_input===TRUE){ // eseguiamo la query e verifichiamo se individua le credenziali if($this->query_select_login()==TRUE){ // settiamo lo status di utente loggato $this->set_logged($this->login_iduser); // settiamo l'username $this->set_username($this->login_username); // settiamo il messaggio di successo del login $this->message_script = 12; return TRUE; } // se la query non ha trovat utenti con quelle credenziali else{ // settiamo un messaggio di insuccesso dell'operazone $this->message_script = 11; } } } return FALSE; } // verifica che gli input del login non siano vuoti protected function check_input_login(){ if($this->empty_string($this->login_username)){ $this->message_script = 1; return FALSE; } else if($this->empty_string($this->login_password)){ $this->message_script = 3; return FALSE; } return TRUE; } // esecuzione della qeury per verificare il login protected function query_select_login(){ $query = " SELECT id FROM users WHERE username='".mysql_real_escape_string($this->login_username)."' AND pass='".mysql_real_escape_string($this->login_cryptpass)."'"; $result = mysql_query($query) or die(mysql_error()); // se individua l'utente if(mysql_num_rows($result)==1){ $row = mysql_fetch_array($result); $this->login_iduser = $row['id']; return TRUE; } return FALSE; } /*********************************** VERIFICA DELLO STATO DI LOGIN UTENTE ***********************************/ // verifica login public function is_logged(){ return isset($_SESSION['auth']); } // set login protected function set_logged($id_user){ $_SESSION['auth'] = $id_user; return; } // access denied public function access_denied(){ if(!$this->is_logged()){ header("location: ".$this->Urls['login_page']."?message=14"); exit; } return; } protected function set_username($username){ $_SESSION['username_logged'] = $username; return; } public function get_username(){ return isset($_SESSION['username_logged']) ? $_SESSION['username_logged'] : ''; } // logout public function logout(){ session_unset(); session_destroy(); setcookie(session_name(), '', time()-42000, '/'); header("location: ".$this->Urls['login_page']."?message=13"); return; } /***************************** METODO PER OTTENERE I MESSAGGI ******************************/ public function get_message(){ if(isset($_GET['message'])){ $this->message_script = $_GET['message']; } $key = intval($this->message_script); if(array_key_exists($key, $this->messages)){ return $this->messages[$key]; } return FALSE; } } ?> La pagina di registrazioneview plainprint? esegui_registrazione()==TRUE){ header("location: ".$login->Urls['login_page']."?message=".$login->message_script); exit; } ?> Register page ?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

La pagina di loginview plainprint? esegui_login(); ?> Login page ?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

Benvenuto

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

Pagina di logoutview plainprint? logout(); ?> Pagina protettaview plainprint? access_denied(); ?> Pagina protetta ?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

Pagina con contenuti protettiview plainprint? Pagina con contenuti protetti ?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

Questa è una pagina contiene contenuti protetti.

Questi sono contenuti leggibili a tutti.

Il testo contenuto in questo div sarà visualizzabile solo agli utenti loggati.

/?php session_start(); require_once('lib/Users.class.php'); $login = New Users; $login->access_denied(); ?> Pagina protetta

Questa è una pagina protetta

Potrai accedere a questa pagina solo hai eseguito il login.

Il setting e il costruttore della classeGli unici settaggi che la nostra classe richiede saranno i parametri di connessione a mysql e gli URL delle nostre pagine di registrazione, login e logout. Il costruttore si occuperà di eseguire il metodo connessione() che (come è facile intuire) attiva la connessione al nostro database. La registrazioneLa registrazione degli utenti altro non è che l'inserimento all'interno del tabella users dei dati immessi dall'utente all'interno di un form. Quindi, abbiamo anzitutto bisogno di modulo di registrazione. Per ottenere tale il form registrazione utilizzeremo il metodo get_register_form() mentre l'operazione di registrazione vera e propria verrà gestita attraverso il metodo esegui_registrazione(). L'inserimento all'interno della tabella users avverrà con il metodo query_insert_registrazione()la quale prima di essere eseguita richiede, oltre che il criptaggio della password con il metodo crypt_pass(), il controllo degli input immessi dall'utente. Infatti, l'operazione più delicata da eseguire è la verifica che i dei dati immessi siano "corretti" ed in particolare: username:obbligatorio; con una lunghezza minima di 3 caratteri; verifica della sintassi; verifica che non si tratti di un utente già registrato. email:obbligatoria; verifica della sintassi; verifica che non si tratti di un'email già registrata. Passwordobbligatoria; con una lunghezza minima di 8 caratteri. Conferma passwordCorrispondenza tra le due password La validazione degli inputPer eseguire le operazioni di validazione all'interno della nostra classe ci serviremo di alcuni metodi ed in particolare: empty_string() riceve come parametro una stringa e se vuota restituisce TRUE; is_username() verifica se la stringa ricevuta come parametro ha una sintassi corretta per l'username; in particolare verificherà che questo abbia una lunghezza compresa fra 3 e 30 caratteri; saranno consentite a-z, A-Z, 0-9 e i simboli . _ - e ritorna un valore bolenano, TRUE se ha una sintassi corretta. is_email() verifica se la stringa ricevuta come parametro ha una sintassi corretta per un indirizzo email; ritorna un valore bolenano, TRUE se ha una sintassi corretta. is_secure_password() verifica se una determinata stringa può essere una password; al fine di semplificare il codice verrà semplicemente verificato che abbia una lunghezza di almeno 8 caratteri. isset_username() verifica se un determinato username risulta essere già registrato; ritorna un valore bolenano, TRUE se già registrato; isset_email() verifica se un determinato indirizzo email risulta essere già registrato; ritorna un valore bolenano, TRUE se già registrato; Il controllo in sede di registrazione verranno cumulativamete eseguito per tutti i campi con il metodo check_input_registrazione() che ritornerà un valore boleano TRUE se gli input sono tutti correti. Analogamente avverrà in fase di login con il metodo check_input_login(). Queste operazioni di validazione potranno essere effettuate anche lato client con javascript e ajax. Nel file da scaricare le validazioni sono state eseguire con jquery validation che è stato oggetto del precedente articolo in cui si spiegava come implementarlo in un form di registrazione del tutto identico a quello qui presentato. Il loginIn termini banali, l'utente inserendo le corrette credenziali diventerà loggato. Ci occorrerà anzitutto un fom per il login che sarà prodotto dal metodo get_login_form(). L'esecuzione del login avverrà tramite il metodo esegui_login(). Quest'ultimo quando il form verrà inviato cripta la password con il medoto crypt_pass() e verifica che i campi non siano vuoti con il metodo check_input_login(). Se la validazione è andata a buon fine eseguiamo la query su database. A questo punto, se la query individua l'utente occorrerà loggarlo. Ma cosa significa tecnicamente loggare un utente? Dal punto di vista tecnico lo status di "utente loggato" è determinato dalla esistenza della variabile di sessione che attesta l'avvenuta autenticazione; nel nostro script tale variabile sarà $_SESSION['auth']. Detto ciò ne deriva che: verificare che un utente è loggato significherà verificare l'esistenza della variabile $_SESSION['auth']; si veda a tale scopo il metodo is_logged(); loggare l'utente equivale a creargli la variabile di sessione $_SESSION['auth']; si veda a tale il metodo scopo set_logged(); proteggere una pagina web consiste nel vietare l'accesso a chi non "possiede" la variabile di sessione $_SESSION['auth']; si veda a tale scopo il metodo access_denied(); eseguire il logout significa cancellare le variabili di sessioni tra di esse $_SESSION['auth'] e il relativo cookie di sessione; si veda a tale scopo il metodo logout(); ConclusioniAldilà del presente script, l'obiettivo che mi sono posto è anzitutto di chiarire alcuni degli aspetti basilari legati a tale genere di applicazione e illustrare i meccanismi esseziali che lo regolano. In questo mio tantativo ho volutamente trascurato alcuni aspetti preferendo focalizzarmi su quelli che, secondo il mio parere, sono il core di un sistema di login. Ad esempio, un aspetto di cruciale importanza legata ai sistemi di login è la sicurezza: argomento complesso e difficile da trattare e semplificare. Questo script costituisce un buon compromesso tra sicurezza e semplicità ma molto altro si sarebbe potuto fare. L'obiettivo, prima ancora che fornire uno script, è stato quello quello di fornire un semplice tutorial per comprendere da dove partire per realizzare un sistema di login. La classe Users, infatti, può essere ulteriormente sviluppata e migliorata con nuove funzionalità nonchè garantire maggiori livelli di sicurezza, ma se state agli inizi questo script è un ottimo punto di partenza. Se avete qualche esigenza specifica e non sapete come fare o per qualsiasi problema o dubbiolasciatemi un commento e sarò lieto di aiutarvi. DOWNLOAD Olimpio RomanellaSono un appassionato di Web Developing con un particolare debole per php. Mi dedico principalmente dello sviluppo back-end ed in particolare programmazione lato server con php, sviluppo di database relazionali MySql e progettazione di CMS di piccole e medie dimensioni. Mi avvalgo del framework javascript Jquery, utilizzando molti dei suoi plugin e nei dei miei progetti utilizzo spesso il framework MVC Codeigniter. Articoli correlatiGravatar: abilitiamo gli avatar dei nostri utenti Tracciare gli utenti online Il php é un linguaggio dinamico: cosa significa? Proteggere il download dei files 104 Commenti presenti nike air max cheap 26 May 2018 ore 16:15 Rispondi After playing only 26 games last season as a rookie, Eddie looks poised to move into the Wizard’s rotation and provide a scoring punch off the bench. sophia679 13 February 2018 ore 21:52 Rispondi mi sto avvicinando al php, trovo questo articolo molto utile Punix 28 June 2017 ore 20:37 Rispondi @Punix: alla fine son riuscito a mettere in funzione tutto , peccato soltanto che non sia presente l'e-mail di conferma di registrazione Luca 23 February 2017 ore 16:46 Rispondi Ottimi consigli! Complimenti per il sito e per il contenuto fantastico! Punix 22 February 2017 ore 23:42 Rispondi @Francesco ciao francesco...a me funziona QUASI tutto alla perfezione...l'unica cosa che non va è il codice per proteggere la pagina da chi non ha effettuato il login...infatti la pagina risulta accessibile sempre .... e mi restituisce in alto proprio la funzione scritta : access_denied(); ... sembra che ci sia un problema proprio in questa funzione..sapresti aiutarmi a risolvere? edit: se l utente non è loggato invece di restituire un messaggio di errore nel visualizzare la pagina è possibile invece che sia rimandato alla pagina di login? grazie ACazzoDicCane 23 June 2016 ore 19:42 Rispondi @Francesco: dovevi semplicemente scrivere i dati del tuo dominio :) salvatore 01 February 2016 ore 12:14 Rispondi Avrei bisogno di uno script login con limitazione delle registrazioni giornaliere. Esempio 50 al giorno, completo di countdown giornaliero sui posti disponibili per la registrazione. carlo 30 January 2016 ore 11:48 Rispondi ciao, cosa mi consigli implementare in termini di sicurezza? Francesco 27 January 2016 ore 12:47 Rispondi ok provato di tutto, le credenziali del db sono corrette, controllate piu volte, gli url che gestinranno le operazioni di login non riesco a gestire ci rinuncio credo che i miei 40 anni mi rendano vecio-.-" grazie comunque:) Francesco 27 January 2016 ore 12:15 Rispondi @Olimpio Romanella: Ti ringrazio, provo a controllarle piu dettagliatamente. Devo dirti una cosa, visto che anche io faccio template in Html Ti rispetto molto e mi fa piacere averti scoperto come blog sei il primo che risponde, in tutti i tutorial che ho trovato mai nessuno rispondeva, per me sei degno di fiducia buon lavoro con amicizia Francesco Francesco 27 January 2016 ore 11:45 Rispondi @Olimpio Romanella: Ti ringrazio, provo a controllarle piu dettagliatamente. Devo dirti una cosa, visto che anche io faccio template in Html Ti rispetto molto e mi fa piacere averti scoperto come blog sei il primo che risponde, in tutti i tutorial che ho trovato mai nessuno rispondeva, per me sei degno di fiducia buon lavoro con amicizia Francesco Olimpio Romanella 27 January 2016 ore 11:26 Rispondi @Francesco: le credenziali di accesso al database sono errate Francesco 27 January 2016 ore 11:02 Rispondi salve io ho un problema ho fatto tutto corretto mi esce solo questa scritta quando provo a registrarmi Unable to connectio penso di aver commesso un errore nella pagina users.class.php dati di registrazione per il db nella sezione url che gestinranno le operazioni di login i link devo modificarli indicando il nome del mio database, e della cartella in cui è contenuta la pagina, una cosa simile: 'login_page' => 'http://localhost/my_frenkywebtutorial/simple_login/login.php', 'register_page' => 'http://localhost/my_frenkywebtutorial/simple_login/registrazione.php', 'logout_page' => 'http://localhost/my_frenkywebtutorial/simple_login/logout.php' ma ricevo questo errore. sono alle prime armi e ancora faccio fatica ad orientarmi qualcuno cortesemente puo aiutarmi grazie della disponibilità alessio 14 January 2016 ore 14:25 Rispondi ciao bellissimo script ottima guida.. la mia domanda al riguardo dopo effettuata la registrazione come faccio a stampare a video l'username email? mi puoi contatare su facebook? https://www.facebook.com/alessiobossgallo Toni 16 December 2015 ore 09:20 Rispondi Ciao e complimenti, non sono molto esperto... ma volevo chiederti come rendere il mio databate remoto e non locale? grazie anticipatamente gianluca 06 December 2015 ore 06:08 Rispondi so che e datato come script ma volevo chiederti una cosa io ho creato un sito con login registrazione e tutto vorrei solo sapere come faccio a fare che il form login (dopo avvenuto login dell'utent) e non e più visibile e al suo posto magari compare il nick dell'utente grazie mille e attendo risposta Marco Caputo 24 July 2015 ore 17:51 Rispondi Ottimo sistema di login, semplice e ben commentato, qualcuno è riuscito ad implementare la classe con l'invio della mail anche solo con il riepilogo dei dati? Olimpio Romanella 24 June 2015 ore 16:08 Rispondi @Luca G.: considero questo script datato. Quello che chiedi e' possibile ma non chiedermi di implementarlo perche' non ho tempo ultimanente. Luca G. 24 June 2015 ore 16:01 Rispondi Grazie infinitamente per lo script funziona a perfezione l'ho provato solo in locale e pur essendo un neofita di php sono riuscito a farlo funzionare, mi piacerebbe sapere se potresti implementare il tutto con una mail di conferma registrazione. E' il miglior script che ho trovato online. Egos 04 March 2015 ore 11:28 Rispondi Ciao, ho qualche problema con la creazione della tabella users nel database. Il database è quello standard su server gratuito di altervista. Ho copiato e incollato il codice che hai inserito nel file, ma mi da errore. Quando vado a cliccare sul pulsante "esegui" mi appare questa scritta: "Valore mancante nel form". Ho provato anche ad eseguirlo lo stesso e mi da errore su: CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, Poi sotto appare la scritta "No database selected" Premetto che non so dove mettere le mani. C'è qualcosa da modificare nel codice oppure il problema è il server di altervista? Grazie Luca 08 December 2014 ore 13:19 Rispondi ciao ringrazierò chiunque possa aiutarmi, voi tutti siete piu esperti di me. ragazzi io ho il mio sito altervista, e ho gia creato il tabella user [url href=http://i62.tinypic.com/148qazn.png]Foto[/url] io mi chiedo adesso le altre pagine: Pagina di login, pagina di logout, Pagina di registrazione ecc. devo andare in gestioni file e crearle [url href=http://i58.tinypic.com/2ihpgef.png]qui[/url] ? Vi prego aiutatemi per favore :( sono indietro da 3 settimane ma nessuno mi aiuta. vi prego voglio un login nel sito, anke uno semplicissimo, non sono uno molto bravo. aiutatemi vi prego. Grazie infinite Olimpio Romanella 21 November 2014 ore 10:07 Rispondi @Mario: tutto si puo' implementare e richiede modifiche piu' o meno importanti a seconda delle funzionalita' che si intende integrare. nel caso in particolare che esponi dovrai aggiungere alla tabella users un campo DATETIME e al momento del login lo valorizzi con il NOW() di MySql. Mario 12 November 2014 ore 16:24 Rispondi Ottima guida e dettagliata! Ho la necessità di registrare i accessi (login e logout) in una tabella e ulteriormente visualizzarli (ultimi x accessi) in una pagina . In più, come fare che dopo il login al utente li compare un messaggio tipo "Il tuo ultimo accesso risale a xx/xx/xxxx" Complimenti Claudio 17 October 2014 ore 17:32 Rispondi Mi reindirizza sempre nella pagina di logout Come risolvo? (Appena effettuo il login o la registrazione) Franz 31 July 2014 ore 00:27 Rispondi Mi da errore: Access denied for user '2646238'@'localhost' to database 'test' Matteo 05 June 2014 ore 17:29 Rispondi Ciao, complimenti per lo script. Sto creando un sito dove con delle monete virtuali puoi sbloccare varie cose, solo che non so come far visualizzare il numero delle monete ad un determinato utente nella pagina privata. Grazie Olimpio Romanella 29 May 2014 ore 12:34 Rispondi @Andrea: nessuna email di conferma e le pagine che non fanno "nulla" devono essere personalizzate a tuo piacimento a seconda delle tue specifiche esigenze. Andrea 29 May 2014 ore 12:09 Rispondi Ciao intanto Grazie per la tua guida , ma ci sono alcune cose che ho non ho eseguito bene o non ci sono, Dopo la registrazione , non viene spedita una mail al registrante? e poi, l'accesso alla pagina protetta come avviene , dopo il login viene stampato a video "Autenticazione avvenuta con successo" ma di li non accade nulla, sono un po acerbo in materia , mi puoi illuminare?Grazie (se mi risponderai) altrimenti grazie lo stesso per il tuo lavoro... michele 21 May 2014 ore 10:03 Rispondi Ciao, ho risolto tutto, il problema stava nell'url delle pagine nella liberia php non le avevo scritte bene ;-). michele 21 May 2014 ore 09:45 Rispondi Ciao complimenti per il lavoro...mi sto avvicinando a php...ho creato la tabella users e modificato i parametri di connessione al db, non capisco però..quando clicco sul pulsante registra, nella pagina di registrazione, non invia i dati ma mi salva il file registrazione.php e così pure per il login..ma cosa c'è che non va?? grazie ildemir 05 May 2014 ore 20:12 Rispondi Ciao, ho scaricato tutto cio e dopo le varie modifiche, database, url, ho inserito il tutto nel server, ma purtroppo non funziona nulla. posso avere un'aiuto? grazie salvo 01 May 2014 ore 11:04 Rispondi grazie mille per la condivisione, ho adattato il tutto al mio sito e devo dire che funziona bene... avrei bisogno di un secondo login denominato staff, ho crato un nuovo database chiamato staff... come posso dire al php di connetersi al database staff e non più users? ho riletto mille volte il php ma non riesco a capire dove porre tale modifica lapo 30 March 2014 ore 23:58 Rispondi Grazie molte per la condivisione di questo lavoro, ho imparato molto. Se ha tempo di rispondere gradirei sapere qual'è il metodo di recupero password. grazie Daniele 24 March 2014 ore 12:26 Rispondi Ciao volevo ringraziarti per aver messo a disposizione questo codice assolutamente il migliore che c'è... Vorrei chiederti se sarebbe possibile avere una versione con la mail di conferma perchè ho provato da solo ma niente. Grazie abdel 08 March 2014 ore 10:50 Rispondi @Olimpio Romanella: Ottimo Script, il migliore sicuramente che ho trovato! volevo sapere se è possibile avere anche un'implementazione per l'email conferma??? con la password, email ed username. poi volevo sapere se e possibile mettere il controllo captcha Olimpio Romanella 20 February 2014 ore 19:24 Rispondi @tiger23: lo script che ho presentato qui non dispone le funzionalità che chiedi ma con qualche piccola modifica puoi benissimamente implementarlo. lo script è a prova di sql injection ma per interagire con il database oggi ci sono funzioni più evolute (PDO). @Federico: anzitutto grazie tante per i complimenti. Un aggiornatina a questo script vorrei dargliela e prendendo spunto dai commenti potrei integrare alcune delle cose che mi chiedono, ma purtroppo non ho molto tempo libero. Riguardo al tuo problema in base alle poche cose che riferisci non saprei risponderti. @Francesco: quel codice lo puoi inserire tramite PhpMyAdmin e ti creerà una tabella mysql all'interno del tuo database. Francesco 18 February 2014 ore 08:08 Rispondi ciao, per cominciare ti ringrazio anticipatamente per il tempo che dedichi a tutti, volevo semplicemente chiederti come faccio a inserire il codice che si trova all'inizio di questa pagina, sicuramente questo database va inserito su mysql, il mio l'ho acquistato con Aruba,ma sinceramente non so da dove iniziare. ho scaricato il tuo pacchetto e l'ho lanciato, e naturalmente senza avere esito positivo, sicuramente non avendo inserito il codice nel database mi da errore che riguarda appunto mysql. mi puoi aiutare??... grazia ancora e buon lavoro Francesco Federico 13 February 2014 ore 10:10 Rispondi ciao, come si vede dalla quantità di commenti questa guida è una delle prime che salta all'occhio cercando su google a riguardo (in italiano almeno), nonostante sia un po' vecchiotta. sto cercando di implementarla su di un sito fatto da me, ma ho dei problemi di implementazione su cui lavoro da un po'. in particolare avevo già creato il form di registrazione e di login e sostituiti ai tuoi funzionano, ma mi danno dei problemi (non inviano i dati, disabilitando i controlli di campo ho scoperto che mi inviano campi vuoti, nonostante a colpi di echo abbia visto che il $_POST tra le pagine c'è, ovviamente. non riesce a valorizzare le variabili per qualche motivo. almeno credo). comunque volevo farti i complimenti, perchè nonostante le mie difficoltà da newbie la logica con cui hai creato il tutto rende molto intuitivo smanettare col codice. a tale proposito potresti dare un'aggiornatina alla guida prima o poi, visto che continua a saltare su nei risultati di google ;-). complimenti anche per tutto il resto del sito, molto interessante tiger23 10 February 2014 ore 01:15 Rispondi @tiger23: rettifico: non sono riuscito a fare solo: -link di verifica registrazione -codice captha in registrazione -codice captha al secondo tentativo di login ps volevo sapere se il tuo scrypt era a prova di sql injection oppure devo provvedere! Grazie tiger23 10 February 2014 ore 00:41 Rispondi @tiger23: rettifico: non sono riuscito a fare solo: -link di verifica registrazione -codice captha in registrazione -codice captha al secondo tentativo di login ps volevo sapere se il tuo scrypt era a prova di sql injection oppure devo provvedere! Grazie tiger23 09 February 2014 ore 21:38 Rispondi ciao,ottimo scrypt e molto curato. complimenti davvero! io avrei bisogno di implementare: -una verifica email, tramite link. -un altro campo email per verificare la corretta digitazione(come avviene con la password) -un nuovo campo obbligatorio (mi serve il campo"nazionalita") messo in un select HTML. -un codice captha per la registrazione, e un codice captha che esce al secondo tentativo di login! Help please. Grazie fabio 09 February 2014 ore 10:13 Rispondi Ciao! e complimenti per il codice davvero ben fatto. Come posso implementarlo in modo da gestire i privilegi dell'utente? (admin, editor, publisher ecc..) Grazie mille! Olimpio Romanella 13 January 2014 ore 13:43 Rispondi @roberta: mi puoi dire esattamente cosa è che non funziona? roberta 13 January 2014 ore 12:58 Rispondi Salve a tutti, li script nn funziona cn Explorer 10 e successivi. Sapreste dirmi xkè ? salvatore 29 December 2013 ore 18:29 Rispondi Innanzitutto grazie per questa guida anche se e passatto parecchio tempo da questo post...ho incominciato da poco con lo studio del php e sto riscontrando problemi nello script che non riesco a risolvere. per quanto riguarda la pagina di registrazione, dopo acer inserito tutti i campi e cliccando sull'invio della registrazione, la pagina resta muta, nel senso che non ha nessun processo, nessun messaggio nessun caricamento di pagina e quindi i dati non vengono inseriti neanche nel db. E poi per quanto riguarda il login inserendo dati che sono gia presenti nel database mi da un errore nella php user.class al n. 325 che nel mio foglio sarebbe : //eseguiamo la query e verifichiamo se individua le credenziali if($this->query_select_login()==TRUE) { ...sono giorni che rileggo e rileggo tutto il codice ma non riesc a trovare il probelma.LA RINGRAZIO claudio 04 December 2013 ore 16:34 Rispondi @oly1982: Ciao oly1982 hai una mail a cui scriverti direttamente ?? Ciao Claudio Marco 07 October 2013 ore 14:41 Rispondi Ciao, non ho capito, una volta creato tutto, come far diventare una pagina protetta. Grazie, comunque molto bravo! oly1982 13 September 2013 ore 15:26 Rispondi @Dylan: non credo che lo script possa avere problemi tra browser. Gli aspetti del css li ho solo abbozzati... non erano sicuramente l'oggetto principale dello script proposto. Dylan 12 September 2013 ore 11:29 Rispondi Complimenti per lo script, mi e' stato utilissimo. Noto che su ie8 pero' non visualizzo correttamente il box, dipende forse da un problema di css, mi sapresti dare qualche dritta? Ho fatto alcune modifiche e non vorrei aver fatto qualche casino. grazie. oly1982 20 August 2013 ore 14:13 Rispondi @Sam: la risposta che ti ha fornito lo script è più che eloquente. La tabella 'users' npn esiste all'interno del tuo database chiamato 'test' Sam 18 August 2013 ore 20:03 Rispondi Ciao ho scaricato il file e l'ho estratto nella cartella C:\wamp\www Quando vado sul file di registrazione (registrazione.php) e clicco su registra non appare nessuna schermata e mi lascia i dati dentro il form come li ho scritti. Quindi ho provato ad andare nel form di login.php e ho provato a fare il login con l'username e password che avevo scritto su registrazione.php , però quando clicco su login mi appare una pagina bianca con scritto Io ho creato una tabella su phpmyadmin e l'ho chiamata users e poi dentro ho inserito il file dump.sql e quindi mi ha creato la tabella. Le due cose che non riesco a capire sono la registrazione quando uno clicca su registra rimane sulla stessa pagina con tutte le mia informazioni inserite e poi il login che mi viene la scritta Table 'test.users' doesn't exist Mi sembra ovvio che se non mi funziona la registrazione non posso neanche fare il login. come posso fare? Ciao e grazie adrianovlad 24 June 2013 ore 00:03 Rispondi il mio form non risponde, ho acceso php e mysql ma non riesco a fare la registrazione, ho verificato che il database test funzioni ma continua a non rispondere. Come posso fare? 'http://localhost/test/guida_semple/login.php', // 'register_page' => 'http://localhost/test/guida_semple/registrazione.php', // 'logout_page' => 'http://localhost/test/guida_semple/logout.php' // ); public $Urls = array( 'login_page' => 'http://localhost/~adriano/simple_login/login.php', 'register_page' => 'http://localhost/~adriano/simple_login/registrazione.php', 'logout_page' => 'http://localhost/~adriano/simple_login/logout.php' ); /******************************************* se non sai ciÚ che fai non toccare pi˘ nulla *******************************************/ /*risorse di connessione*/ protected $conn; protected $selezione_db; /*variabili di registrazione*/ protected $reg_username; protected $reg_email; protected $reg_pass; protected $reg_confirm_pass; protected $reg_crypt_pass; /*variabili di login*/ protected $login_username; protected $login_password; protected $login_cryptpass; protected $login_iduser; /*variabili per gestire gli errori*/ public $messages = array( 1 => 'Il campo username Ë obbligatorio.', 2 => 'Il campo email Ë obbligatorio.', 3 => 'Il campo password Ë obbligatorio.', 4 => 'Le due password non coincidono.', 5 => 'Il campo username contiene caratteri non validi. Sono consentiti solo lettere, numeri il i seguenti simboli . _ -.', 6 => 'Inserisci una email con sitassi corretta.', 7 => 'La password scelta Ë eccessivamente breve. Scegli una password di almeno 8 caratteri.', 8 => 'Esiste gi‡ un utente registrato con questo username.', 9 => 'Esiste gi‡ un utente registrato con questa email.', 10 => 'Registrazione effettuata con successo.', 11 => 'Login errato', 12 => 'Login eseguito con successo.', 13 => 'Logout eseguito con successo.', 14 => 'Per accedere a questa pagina occorre essere loggati.' ); public $message_script; // il costruttore attiva la connessione a mysql public function __construct(){ $this->connessione(); } /****************** CONNESSIONE A MYSQL ******************/ protected function connessione(){ $this->conn = mysql_connect($this->host_db, $this->user_db, $this->pass_db) or die(mysql_error()); $this->selezione_db = mysql_select_db($this->name_db, $this->conn) or die(mysql_error()); return TRUE; } /************************************* ALCUNI METODI PER ESEGUIRE VALIDAZIONI *************************************/ // verifica campo generico non vuoto (TRUE se non vuoto) public function empty_string($string){ $string = trim($string); if($string==''){ return TRUE; } else{ return FALSE; } } // verifica sintassi username public function is_username($username){ $regex = '/^[a-z0-9\.\-_]{3,30}$/i'; return preg_match($regex, $username); } // verifica sintassi email (TRUE se ok) public function is_email($email){ $regex = '/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/'; return preg_match($regex, $email); } // verifica sintassi password (per semplicit‡ solo lunghezza) (TRUE se ok) public function is_secure_password($password){ if(strlen($password)>=8){ return TRUE; } else{ return FALSE; } } /***************************************************** METODI PER VERIFICARE ESISTENZA DI USERNAME E PASSWORD ******************************************************/ // verifica esistenza username (TRUE se esiste) public function isset_username($username){ $query = "SELECT COUNT(username) AS count FROM users WHERE username='".mysql_real_escape_string($username)."' LIMIT 1"; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result); if($row['count']==1){ return TRUE; } else{ return FALSE; } } // verifica esistenza email (TRUE se esiste) public function isset_email($email){ $query = "SELECT COUNT(email) AS count FROM users WHERE email='".mysql_real_escape_string($email)."' LIMIT 1"; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result); if($row['count']==1){ return TRUE; } else{ return FALSE; } } /****************************** I FORM DI LOGIN E REGISTRAZIONE ******************************/ public function get_login_form(){ $html = '
Login
'; return $html; } public function get_register_form(){ $html = '
Registrazione
'; return $html; } /***************************** LINK LOGOUT *****************************/ public function get_link_logout(){ if($this->is_logged()){ return 'Logout'; } return ''; } /******************************* METODO PER CRIPTARE LE PASSWORD *******************************/ public function crypt_pass($pass){ return sha1($pass); } /***************************** ESECUZIONE DELLA REGISTRAZIONE ******************************/ public function esegui_registrazione(){ // se il form e i suoi input sono stati inviati if(isset($_POST['register']) AND isset($_POST['username']) AND isset($_POST['email']) AND isset($_POST['pass1']) AND isset($_POST['pass2'])){ //valorizziamo alcune variabili $this->reg_username = trim($_POST['username']); $this->reg_email = trim($_POST['email']); $this->reg_pass = trim($_POST['pass1']); $this->reg_confirm_pass = trim($_POST['pass2']); // criptiamo la password $this->reg_crypt_pass = $this->crypt_pass($this->reg_pass); // eseguiamo la validazione degli input $valid_input = $this->check_input_registrazione(); // se sono validi if($valid_input===TRUE){ // inseriemo all'interno del database i dati $this->query_insert_registrazione(); // settiamo il messaggio di successo della registrazione $this->message_script = 10; return TRUE; } } return FALSE; } // verifica che gli input siano corretti protected function check_input_registrazione(){ if($this->empty_string($this->reg_username)){ $this->message_script = 1; return FALSE; } else if($this->empty_string($this->reg_email)){ $this->message_script = 2; return FALSE; } else if($this->empty_string($this->reg_pass)){ $this->message_script = 3; return FALSE; } else if($this->reg_pass != $this->reg_confirm_pass){ $this->message_script = 4; return FALSE; } else if(!$this->is_username($this->reg_username)){ $this->message_script = 5; return FALSE; } else if(!$this->is_email($this->reg_email)){ $this->message_script = 6; return FALSE; } else if(!$this->is_secure_password($this->reg_pass)){ $this->message_script = 7; return FALSE; } else if($this->isset_username($this->reg_username)==TRUE){ $this->message_script = 8; return FALSE; } else if($this->isset_email($this->reg_email)==TRUE){ $this->message_script = 9; return FALSE; } return TRUE; } // esecuzione della query insert di registrazione protected function query_insert_registrazione(){ $query = " INSERT INTO users SET username='".mysql_real_escape_string($this->reg_username)."', pass='".mysql_real_escape_string($this->reg_crypt_pass)."', email='".mysql_real_escape_string($this->reg_email)."', data_reg= NOW()"; $result = mysql_query($query) or die(mysql_error()); return mysql_insert_id(); } /******************* ESECUZIONE DEL LOGIN ********************/ public function esegui_login(){ // se il form di login e i sui tutti input sono stati inviati if(isset($_POST['login']) AND isset($_POST['username']) AND isset($_POST['pass'])){ // valorizziamo delle variabili $this->login_username = trim($_POST['username']); $this->login_password = trim($_POST['pass']); // criptiamo la password $this->login_cryptpass = $this->crypt_pass($this->login_password); // validiamo i dati (non devono essere vuoti) $not_empty_input = $this->check_input_login(); // se la validazione Ë andata a buon fine if($not_empty_input===TRUE){ // eseguiamo la query e verifichiamo se individua le credenziali if($this->query_select_login()==TRUE){ // settiamo lo status di utente loggato $this->set_logged($this->login_iduser); // settiamo l'username $this->set_username($this->login_username); // settiamo il messaggio di successo del login $this->message_script = 12; return TRUE; } // se la query non ha trovat utenti con quelle credenziali else{ // settiamo un messaggio di insuccesso dell'operazone $this->message_script = 11; } } } return FALSE; } // verifica che gli input del login non siano vuoti protected function check_input_login(){ if($this->empty_string($this->login_username)){ $this->message_script = 1; return FALSE; } else if($this->empty_string($this->login_password)){ $this->message_script = 3; return FALSE; } return TRUE; } // esecuzione della qeury per verificare il login protected function query_select_login(){ $query = " SELECT id FROM users WHERE username='".mysql_real_escape_string($this->login_username)."' AND pass='".mysql_real_escape_string($this->login_cryptpass)."'"; $result = mysql_query($query) or die(mysql_error()); // se individua l'utente if(mysql_num_rows($result)==1){ $row = mysql_fetch_array($result); $this->login_iduser = $row['id']; return TRUE; } return FALSE; } /*********************************** VERIFICA DELLO STATO DI LOGIN UTENTE ***********************************/ // verifica login public function is_logged(){ return isset($_SESSION['auth']); } // set login protected function set_logged($id_user){ $_SESSION['auth'] = $id_user; return; } // access denied public function access_denied(){ if(!$this->is_logged()){ header("location: ".$this->Urls['login_page']."?message=14"); exit; } return; } protected function set_username($username){ $_SESSION['username_logged'] = $username; return; } public function get_username(){ return isset($_SESSION['username_logged']) ? $_SESSION['username_logged'] : ''; } // logout public function logout(){ session_unset(); session_destroy(); setcookie(session_name(), '', time()-42000, '/'); header("location: ".$this->Urls['login_page']."?message=13"); return; } /***************************** METODO PER OTTENERE I MESSAGGI ******************************/ public function get_message(){ if(isset($_GET['message'])){ $this->message_script = $_GET['message']; } $key = intval($this->message_script); if(array_key_exists($key, $this->messages)){ return $this->messages[$key]; } return FALSE; } } ?> Francesco 07 March 2013 ore 17:27 Rispondi Ottimo Script, il migliore sicuramente che ho trovato! ehm ehm.. è possibile avere anche un'implementazione per l'email confirm prima della registrazione? Valentina 27 February 2013 ore 13:28 Rispondi Ciao, ho trovato molto interessante l'argomento ed ultimamente mi è stato parecchio d'aiuto il tuo supporto. :) Sto cercando di implementare l'invio di una email di conferma, ma non so come, non parte. Se hai tempo e voglia potresti darci un'occhiata? Posto il codice qui. Come vedi l'ho inserito alla fine dell'esecuzione della registrazione. Non capisco davvero dove sbaglio. Non è importante per me la conferma tramite link dell'utente, quanto che gli arrivi un'email con i propri dati e l'avvenuta registrazione. /***************************** ESECUZIONE DELLA REGISTRAZIONE ******************************/ public function esegui_registrazione(){ // se il form e i suoi input sono stati inviati if(isset($_POST['register']) AND isset($_POST['username']) AND isset($_POST['nome']) AND isset($_POST['cognome']) AND isset($_POST['azienda']) AND isset($_POST['email']) AND isset($_POST['citta']) AND isset($_POST['telefono']) AND isset($_POST['pass1']) AND isset($_POST['pass2'])){ //valorizziamo alcune variabili $this->reg_username = trim($_POST['username']); $this->reg_nome = trim($_POST['nome']); $this->reg_cognome = trim($_POST['cognome']); $this->reg_azienda = trim($_POST['azienda']); $this->reg_email = trim($_POST['email']); $this->reg_citta = trim($_POST['citta']); $this->reg_telefono = trim($_POST['telefono']); $this->reg_pass = trim($_POST['pass1']); $this->reg_confirm_pass = trim($_POST['pass2']); // criptiamo la password $this->reg_crypt_pass = $this->crypt_pass($this->reg_pass); // eseguiamo la validazione degli input $valid_input = $this->check_input_registrazione(); // se sono validi if($valid_input===TRUE){ // inseriemo all'interno del database i dati $this->query_insert_registrazione(); // settiamo il messaggio di successo della registrazione $this->message_script = 10; return TRUE; } } $to = $_POST["email"]; $toname = $_POST["username"]; $subject = "Completa la tua registrazione"; $boundary = "==MP_Bound_xyccr948x=="; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n"; $headers .= "From: noreply@tuoserver.it"; $html_msg = "
"; $html_msg .= ""; $html_msg .= ""; $html_msg .= "
 "; $html_msg .= "
Questi sono i dati della tua registrazione:"; $html_msg .= "
Username: " . $this->reg_username . ""; $html_msg .= "
Password: " . $this->reg_pass . ""; $html_msg .= "
 "; $html_msg .= "
"; $confirmmessage = "Salve " . $toname . ",\n\n"; $confirmmessage .= "per completare la tua registrazione devi cliccare sul link sottostante:\n\n"; $confirmmessage .= $html_msg . "\n\n"; $confirmmessage .= "Clicca qui per confermare la tua registrazione"; $message = "This is a Multipart Message in MIME format\n"; $message .= "--$boundary\n"; $message .= "Content-type: text/html; charset=iso-8859-1\n"; $message .= "Content-Transfer-Encoding: 7bit\n\n"; $message .= $confirmmessage . "\n"; $message .= "--$boundary--"; $mailsent = mail($to, $subject, $message, $headers); if ($mailsent) { echo "Salve" . $toname . ",
"; echo "Un messaggio è stato inviato all'indirizzo " . $to . " da te fornito.

"; echo "IMPORTANTE:
"; echo "Per completare la registrazione al sito devi aprire la tua casella e-mail, leggere il messaggio di conferma e cliccare sul link che troverai all'interno.

"; } else { echo "Errore durante l'invio dell'e-mail."; } return FALSE; } gianni 08 February 2013 ore 17:08 Rispondi complimenti sei in gamba, ti seguo con molta attenzione, BRAVO oly1982 19 January 2013 ore 18:08 Rispondi Ciao e grazie per i complimenti che mi rivolgi. Non è immediato aggiungere le funzionalità che desideri, sopratutto se non hai praticità con php. Devi eseguire le seguenti modifiche: 1) aggiungere i campi alla tabella del database (eventualmente aiutandoti con phpmyadmin); 2) modificare il metodo get_register_form() e aggiungere gli ulteriori input che desideri; 3) modificare il metodo check_input_registrazione() per validare i nuovi campi aggiunti; 4) modificare il metodo esegui_registrazione(), con particolare riferimento alla query INSERT in esso presente. Mattia 19 January 2013 ore 17:48 Rispondi Buon giorno, prima di porle il mio problema vorrei ringraziarla per questo script, mi ha dato l'opportunità di capire meglio il funzionamento del linguaggio di programmazione PHP. In questi giorni sto creando un sito internet e mi è stato richiesto di inserire uno script che facesse il login del mio sito internet ed ho trovato il suo script, quello che vorrei chiederLe è questo: nel DB oltre all'username, la password, l'e-mail e la data di registrazione vorrei inserire anche altri dati, per esempio il nome, il cognome, l'indirizzo, la città, la provincia ed altri due o tre dettagli, come devo fare per modificare lo script che riguarda il database? Intanto le auguro una buona serata e Le porgo i miei ringraziamenti per l'aiuto che mi darà. Maurizio 29 December 2012 ore 07:48 Rispondi Buongiorno, innanzi tutto complimenti per questa pagina di login e registrazione dell'utente, ne ho provati tantissimi ma questo è l'unico che funziona veramente. Ribadisco che funziona tutto a meraviglia, però ho solo un piccolo problema, quando faccio la registrazione oppure il login, mi compare questo tipo di errore: Table 'test.users' doesn't exist, e non riesco a vedere chi si è registrato nel mio phpmyadmin. Potresti darmi una dritta per risolvere il problema? Grazie infinite ed ancora complimenti vivissimi! Giovanni 16 December 2012 ore 17:18 Rispondi Forse non del tutto.. Quando registro un nuovo utente (con la tabella del database vuota) mi dice che l'utente è già registrato e lo inserisce nella tabella!Non ho modificato il codice e non capisco dove sta il problema perché nel codice stesso tutto segue un filo logico giusto..Cosa ne pensi? Giovanni 14 December 2012 ore 14:20 Rispondi Ok,ho risolto...lol Ho semplicemente cambiato l'estensione della mia home page,da .html a .php. :) Giovanni 14 December 2012 ore 14:11 Rispondi Ciao, Ho cercato per molto tempo su internet una persona come te che mi poteva spiegare un pò di php e in particolare il codice per fare la registrazione,il log in e il log out.Il tuo codice soddisfa pienamente le mie richieste,anzi,offre anche qualcosa in più come il contenuto e la pagina protetta.Grazie mille veramente!!! :D Il mio problema è il seguente: dopo aver letto e capito il codice php(lo sto studiando da poco :) ) ho deciso di scaricarlo.Il codice funziona però quando copio il codice per il log in per esempio sulla home page del mio sito,mi fa vedere solo il codice come testo!Uso Dreamweaver CS5.5 e ho cambiato tutte le variabili che dovevo cambiare però niente.Ora,la mia domanda è:pensi che sia una cosa che riguarda Dreamweaver,visto che i tag del codice php non li segna con un colore diverso,oppure devo cambiare qualcosa?Io ho cambiato solo l'URL della pagina di log in inserendo l'indirizzo della mia home page visto che il form per l'accesso dovrebbe comparire su una finestra dopo viene premuto il tasto "Log in"(ho usato l'animazione avgrund di jquery). Grazie in anticipo e complimenti per il sito,l'ho trovato molto utile per uno come me che sta all'inizio per quanto riguarda l'web design! :D oly1982 11 December 2012 ore 23:38 Rispondi @Piero: quello che richiederebbe aggiungere dei campi alla tabella, inserire ulteriori metodi, eseguire lievi modifiche ai metodi esistenti; non è difficile ma è un pò complesso da spiegare in un commento. Piero 10 December 2012 ore 13:55 Rispondi Salve, ho appena provato il tuo script e va tutto a meraviglia ! Vorrei però chiederti una cosa: è possibile validare in qualche modo la registrazione ? Intendo che quando un utente si registra, obbligatoriamente deve confermare la sua registrazione, validandola via email. oly1982 26 November 2012 ore 12:27 Rispondi @Gino: non saprei dirti. ma non credo derivi dal mio script. @Laura: basta gestire correttamente i metodi messi a disposizione della classe. In particolare vediti la parte chiamata "PAGINA CON CONTENUTI PROTETTI" (nel tuo caso i contenuti protetti sono costituiti dall'ulteriore form) Gino 25 November 2012 ore 18:48 Rispondi Ho lanciato il suo form in locale (login.php o registrazione.php), dopo la convalida a video mi dà questa scritta senza nessuna registrazione nella tabella:  Ê)?¨.ƒ„èþ ò~ÿn?JV•ðì{î]IrbÆpÓHÖŠóÏëß`Ž’êC­Å¤Å2{ð¡^·ü=J³È™öoTµbë ‘Ž'¬-z#x‰&ߥ’[`ÒgÜŸä2 Perchè? laura 18 November 2012 ore 17:59 Rispondi Ciao, ottimo sistema di registrazione e perfettamente funzionante. Non ho avuto molti problemi, ora però vorrei capire come precedere con un sito che sto provando. Ho realizzato le varie pagine di registrazione e login, gli utenti si loggano perfettamente e le pagine hanno un contenuto protetto. Volendo inserire un ulteriore form (visibile per utenti loggati) con inserimento di dati in un'altra tabella del database, devo modificare il file users.class.php?? Cosa dovrei modificare e/o eliminare esattamente?? Mimmo 11 October 2012 ore 07:26 Rispondi Complimenti, io sto provando con qualche modifica ma solo di adattamente al mio dbase per