106 commenti my script, tutorial, php

Una della richieste più frequesti degli utenti che si avvicinano al php è sicuramente lo sviluppo di un sistema di login.

Le funzionalità che dovrà svolgere tale applicativo saranno almeno tre:

  1. registrazione degli utenti;
  2. il login degli utenti;
  3. impedire l'accesso a pagine o contentuti agli utenti non loggati.

 

Il semplice script che oggi vi propongo vi consentirà di implementare nei vostri siti tali funzionalità.

DOWNLOAD

 

Il database

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `pass` varchar(50) NOT NULL,
  `email` varchar(255) NOT NULL,
  `data_reg` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1

 

La classe

<?php
// error_reporting(E_ALL | E_DEPRECATED | E_STRICT);

Class Users{
	/********************************
	SETTING
	*********************************/
	// le credenziali di accesso al database
	private $host_db = 'localhost';
	private $user_db = 'root';
	private $pass_db = '';
	private $name_db = 'test';
	// gli url che gestinranno le operazioni di login
	public $Urls = array(
						'login_page' 	=> '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 = '
			<form action="' .$this->Urls['login_page']. '" method="post" id="form_login">
			<fieldset>
			<legend>Login<legend>
			<label for="login_user">Username</label>
				<input type="text" name="username" id="login_user" />
			<label for="login_pass">Password</label>
				<input type="password" name="pass" id="login_pass" />
			<input type="submit" name="login" value="login" id="login_submit"/>
			</fieldset>
			</form>';
		return $html;
		}
	
	public function get_register_form(){
		$html = '
			<form action="' .$this->Urls['register_page']. '" method="post" id="form_register">
			<fieldset>
			<legend>Registrazione<legend>
			<label for="reg_user">Username*</label>
				<input type="text" name="username" id="reg_user" />
			<label for="reg_email">Email*</label>
				<input type="text" name="email" id="reg_email" />
			<label for="reg_pass1">Password*</label>
				<input type="password" name="pass1" id="reg_pass1" />
			<label for="reg_pass2">Confirm Password*</label>
				<input type="password" name="pass2" id="reg_pass2" />
			<input type="submit" name="register" value="registra" id="reg_submit" />
			<input type="reset" name="reset" value="cancella" id="reg_reset" />
			</fieldset>
			</form>';
		return $html;
		}
	
	/*****************************
	LINK LOGOUT
	*****************************/
	public function get_link_logout(){
		if($this->is_logged()){
			return '<a href="'.$this->Urls['logout_page'].'" class="logout">Logout</a>';
			}
		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 registrazione

<?php
session_start();
require_once('lib/Users.class.php');
$login = New Users;
if($login->esegui_registrazione()==TRUE){
	header("location: ".$login->Urls['login_page']."?message=".$login->message_script);
	exit;
	}
?>
<html>
<head>
<title>Register page</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"></script> 
<script type="text/javascript" src="js/validation_reg.js"></script> 
</head>
<body>
<div id="content">
<?php if($login->get_message()) : ?>
		<div class="message"><p><?php echo $login->get_message(); ?></p></div>
<?php endif; ?>
<?php echo $login->get_register_form(); ?>
</div>
</body>
</html>

 

La pagina di login

<?php
session_start();
require_once('lib/Users.class.php');
$login = New Users;
$login->esegui_login();
?>
<html>
<head>
<title>Login page</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js"></script> 
<script type="text/javascript" src="js/validation_login.js"></script> 
</head>
<body>
<div id="content">

<?php if($login->get_message()) : ?>
		<div class="message"><p><?php echo $login->get_message(); ?></p></div>
<?php endif; ?>


<?php if(!$login->is_logged()) : ?>
	<?php echo $login->get_login_form(); ?>
	

<?php else: ?>
	<p>Benvenuto <strong><?php echo $login->get_username(); ?></strong></p>
	<?php echo $login->get_link_logout(); ?>
<?php endif; ?>
</div>
</body>
</html>

 

Pagina di logout

<?php
session_start();
require_once('lib/Users.class.php');
$login = New Users;
$login->logout();
?>

 

Pagina protetta

<?php
session_start();
require_once('lib/Users.class.php');
$login = New Users;
$login->access_denied();
?>
<html>
<head>
<title>Pagina protetta</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body>
<body>
<h1>Questa è una pagina protetta</h1>
<p>Potrai accedere a questa pagina solo hai eseguito il login.</p>
</body>
</html>

 

Pagina con contenuti protetti

<?php
session_start();
require_once('lib/Users.class.php');
$login = New Users;
?>
<html>
<head>
<title>Pagina con contenuti protetti</title>
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body>
<body>
<h1>Questa è una pagina contiene contenuti protetti.</h1>
<p>Questi sono contenuti leggibili a tutti.</p>

<?php if($login->is_logged()) : ?>
	
	<div id="contenuti_protetti">
	<p>Il testo contenuto in questo div sarà visualizzabile solo agli utenti loggati.</p>
	</div>

<?php endif; ?>

</body>
</html>

 

Il setting e il costruttore della classe

Gli 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 registrazione

La 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:
    1. obbligatorio;
    2. con una lunghezza minima di 3 caratteri;
    3. verifica della sintassi;
    4. verifica che non si tratti di un utente già registrato.
  • email:
    1. obbligatoria;
    2. verifica della sintassi;
    3. verifica che non si tratti di un'email già registrata.
  • Password
    1. obbligatoria;
    2. con una lunghezza minima di 8 caratteri.
  • Conferma password
    1. Corrispondenza tra le due password

 

La validazione degli input

Per 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 login

In 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();

 

Conclusioni

Aldilà 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 dubbio lasciatemi un commento e sarò lieto di aiutarvi.

DOWNLOAD

Olimpio Romanella

Sono 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.

106 Commenti presenti

avatar Rino

Rino

01 July 2019 ore 13:59

avatar rino

rino

30 March 2019 ore 13:34

avatar nike air max cheap

nike air max cheap

26 May 2018 ore 16:15

After playing only 26 games last season as a rookie, Eddie looks poised to move into the Wizard&#8217;s rotation and provide a scoring punch off the bench.

avatar sophia679

sophia679

13 February 2018 ore 21:52

mi sto avvicinando al php, trovo questo articolo molto utile

avatar Punix

Punix

28 June 2017 ore 20:37

@Punix: alla fine son riuscito a mettere in funzione tutto , peccato soltanto che non sia presente l'e-mail di conferma di registrazione

avatar Luca

Luca

23 February 2017 ore 16:46

Ottimi consigli! Complimenti per il sito e per il contenuto fantastico!

avatar Punix

Punix

22 February 2017 ore 23:42

avatar ACazzoDicCane

ACazzoDicCane

23 June 2016 ore 19:42

@Francesco: dovevi semplicemente scrivere i dati del tuo dominio :)

avatar salvatore

salvatore

01 February 2016 ore 12:14

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.

avatar carlo

carlo

30 January 2016 ore 11:48

ciao, cosa mi consigli implementare in termini di sicurezza?

avatar Francesco

Francesco

27 January 2016 ore 12:47

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:)

avatar Francesco

Francesco

27 January 2016 ore 12:15

@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

avatar Francesco

Francesco

27 January 2016 ore 11:45

@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

avatar Olimpio Romanella

Olimpio Romanella

27 January 2016 ore 11:26

@Francesco: le credenziali di accesso al database sono errate

avatar Francesco

Francesco

27 January 2016 ore 11:02

avatar alessio

alessio

14 January 2016 ore 14:25

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

avatar Toni

Toni

16 December 2015 ore 09:20

Ciao e complimenti,
non sono molto esperto...
ma volevo chiederti come rendere il mio databate remoto e non locale?
grazie anticipatamente

avatar gianluca

gianluca

06 December 2015 ore 06:08

avatar Marco Caputo

Marco Caputo

24 July 2015 ore 17:51

avatar Olimpio Romanella

Olimpio Romanella

24 June 2015 ore 16:08

@Luca G.: considero questo script datato. Quello che chiedi e' possibile ma non chiedermi di implementarlo perche' non ho tempo ultimanente.

avatar Luca G.

Luca G.

24 June 2015 ore 16:01

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.

avatar Egos

Egos

04 March 2015 ore 11:28

avatar Luca

Luca

08 December 2014 ore 13:19

avatar Olimpio Romanella

Olimpio Romanella

21 November 2014 ore 10:07

@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.

avatar Mario

Mario

12 November 2014 ore 16:24

avatar Claudio

Claudio

17 October 2014 ore 17:32

Mi reindirizza sempre nella pagina di logout
Come risolvo?
(Appena effettuo il login o la registrazione)

avatar Franz

Franz

31 July 2014 ore 00:27

Mi da errore:

Access denied for user '2646238'@'localhost' to database 'test'

avatar Matteo

Matteo

05 June 2014 ore 17:29

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

avatar Olimpio Romanella

Olimpio Romanella

29 May 2014 ore 12:34

@Andrea: nessuna email di conferma e le pagine che non fanno "nulla" devono essere personalizzate a tuo piacimento a seconda delle tue specifiche esigenze.

avatar Andrea

Andrea

29 May 2014 ore 12:09

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...

avatar michele

michele

21 May 2014 ore 10:03

Ciao, ho risolto tutto, il problema stava nell'url delle pagine nella liberia php non le avevo scritte bene ;-).

avatar michele

michele

21 May 2014 ore 09:45

avatar ildemir

ildemir

05 May 2014 ore 20:12

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

avatar salvo

salvo

01 May 2014 ore 11:04

avatar lapo

lapo

30 March 2014 ore 23:58

avatar Daniele

Daniele

24 March 2014 ore 12:26

avatar abdel

abdel

08 March 2014 ore 10:50

avatar Olimpio Romanella

Olimpio Romanella

20 February 2014 ore 19:24

avatar Francesco

Francesco

18 February 2014 ore 08:08

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

avatar Federico

Federico

13 February 2014 ore 10:10

avatar tiger23

tiger23

10 February 2014 ore 01:15

@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

avatar tiger23

tiger23

10 February 2014 ore 00:41

@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

avatar tiger23

tiger23

09 February 2014 ore 21:38

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

avatar fabio

fabio

09 February 2014 ore 10:13

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!

avatar Olimpio Romanella

Olimpio Romanella

13 January 2014 ore 13:43

avatar roberta

roberta

13 January 2014 ore 12:58

avatar salvatore

salvatore

29 December 2013 ore 18:29

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

avatar claudio

claudio

04 December 2013 ore 16:34

@oly1982: Ciao oly1982 hai una mail a cui scriverti direttamente ??

Ciao Claudio

avatar Marco

Marco

07 October 2013 ore 14:41

Ciao, non ho capito, una volta creato tutto, come far diventare una pagina protetta.
Grazie, comunque molto bravo!

avatar oly1982

oly1982

13 September 2013 ore 15:26

@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.

avatar Dylan

Dylan

12 September 2013 ore 11:29

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.

avatar oly1982

oly1982

20 August 2013 ore 14:13

avatar Sam

Sam

18 August 2013 ore 20:03

avatar adrianovlad

adrianovlad

24 June 2013 ore 00:03

avatar Francesco

Francesco

07 March 2013 ore 17:27

avatar Valentina

Valentina

27 February 2013 ore 13:28

avatar gianni

gianni

08 February 2013 ore 17:08

complimenti sei in gamba, ti seguo con molta attenzione, BRAVO

avatar oly1982

oly1982

19 January 2013 ore 18:08

avatar Mattia

Mattia

19 January 2013 ore 17:48

avatar Maurizio

Maurizio

29 December 2012 ore 07:48

avatar Giovanni

Giovanni

16 December 2012 ore 17:18

avatar Giovanni

Giovanni

14 December 2012 ore 14:20

Ok,ho risolto...lol

Ho semplicemente cambiato l'estensione della mia home page,da .html a .php. :)

avatar Giovanni

Giovanni

14 December 2012 ore 14:11

avatar oly1982

oly1982

11 December 2012 ore 23:38

avatar Piero

Piero

10 December 2012 ore 13:55

avatar oly1982

oly1982

26 November 2012 ore 12:27

@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)

avatar Gino

Gino

25 November 2012 ore 18:48

avatar laura

laura

18 November 2012 ore 17:59

avatar Mimmo

Mimmo

11 October 2012 ore 07:26

Complimenti, io sto provando con qualche modifica ma solo di adattamente al mio dbase personale. Per il mio sito invece l'utente puo' registrarsi ma dovrei inplementare una sorta di livello per cui un amministratore convalida l'utente all'accesso. Poi non ho afferato il funzionamento dei link esterni di convalida funzionano anche se non collegato all'adsl.
Cmq ottima classe pulita e chiara.
Saluti Mimmo

avatar leo

leo

20 June 2012 ore 17:43

avatar leo

leo

20 June 2012 ore 17:39

avatar oly1982

oly1982

03 May 2012 ore 20:14

hai indicato un percorso errato al file da includere.

require_once('cartella/tuo_spazio_web/Users.class.php');

avatar guido

guido

03 May 2012 ore 19:56

avatar carlo

carlo

02 May 2012 ore 21:01

ciao io volevo spaere, ho creato il database tutto, ma non so come inserire queste opzioni
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
non ho ben capito neanche a cosa servano, ma premettendo che sto cercando di metterlo su altervista, non so come inserire quelle opzioni, mi potresti aiutare???

avatar guido

guido

02 May 2012 ore 18:05

ciao mi sapresti dire come portare tutto su un host del tipo altervista?? scarico i file, poi faccio il download e dopo??

avatar gianluca

gianluca

30 April 2012 ore 20:39

si io so l' html e le basi del php come la funzione echo input e quelle cose la, ma non ho capito, come fare ad importare i dati di download nel mio host ed a farli funzionare

avatar oly1982

oly1982

30 April 2012 ore 20:33

avatar gianluca

gianluca

30 April 2012 ore 20:26

ciao ti volevo chiedere, non sono molto esperto di queste cose, come posso implementarlo sul mio sito?? del tipo lo scarico e poi?? grazie mille

avatar Crisbr

Crisbr

07 April 2012 ore 00:56

Ciao, ho bisogno di un aiuto. Come posso fare una pagina per Admin per poter cancellare gli utenti???

avatar rob

rob

01 March 2012 ore 10:58

avatar oly1982

oly1982

29 February 2012 ore 11:20

avatar Mauro

Mauro

29 February 2012 ore 08:56

avatar cruz

cruz

24 February 2012 ore 18:10

avatar oly1982

oly1982

22 February 2012 ore 23:33

avatar cruz

cruz

22 February 2012 ore 17:59

avatar rob

rob

22 February 2012 ore 14:36

avatar kekko

kekko

31 January 2012 ore 17:28

Adesso invece se si accede direttamente alla pagina protetta senza essere loggati mi da una pagina bianca, ho forse sbagliato qualcosa ?

avatar kekko

kekko

31 January 2012 ore 17:25

avatar oly1982

oly1982

30 January 2012 ore 13:37

avatar fobos

fobos

30 January 2012 ore 12:54

Nessuno sa come posso risolvere? l'action avente come link index_page, avente a sua volta un indirizzo ip con porta diversa da quella 80 mi da pagina bianca.

Potete aiutarmi in qualche modo?



public $Urls = array(
'index_page' => 'http://192.168.1.1:90/home.php',
'login_page' => 'http://192.168.1.1:90/index.php',
'logout_page' => 'http://localhost/index.php?p=logout'
);

avatar Marco Mariella

Marco Mariella

30 January 2012 ore 11:49

avatar oly1982

oly1982

29 January 2012 ore 22:30

avatar Marco Mariella

Marco Mariella

29 January 2012 ore 21:45

Si riesce a fare che ogni utente ha una pagina diversa da visualizzare?

avatar oly1982

oly1982

27 January 2012 ore 18:12

avatar kekko

kekko

27 January 2012 ore 14:08

avatar fobos

fobos

26 January 2012 ore 17:22

Salve,
Complimenti per il codice davvero bello e funzionante
Chiedo inoltre come ovviare il problema dei link con porta che sia diversa da quella 80

public $Urls = array(
'index_page' => 'http://192.168.1.1:90/home.php',
'login_page' => 'http://192.168.1.1:90/index.php',
'logout_page' => 'http://localhost/index.php?p=logout'
);


Qualsiasi azione di redirect o di submit mi da pagina vuota.

avatar oly1982

oly1982

02 August 2011 ore 22:06

avatar luca

luca

01 August 2011 ore 17:13

ciao, complimenti per la lezione.
tuttavia ho riscontrato un problema: quando si chiude il browser, i cookies vengono cancellati e l'utente deve loggarsi nuovamente.
mi potresti suggerire una soluzione per creare un cookie in modo tale da far rimanere l'utente loggato per un tempo da me stabilito?
grazie

avatar oly1982

oly1982

14 June 2011 ore 22:37

avatar Elisa

Elisa

14 June 2011 ore 21:00

ri-Ciao oly1982 ,
per adesso io mi sono limitata a far funzionare il tuo pacchetto di file (che ho scaricato) sul mio server locale cambiando solo i dati di connessione al db e i link alle pagine.

Comunque i dati che inserisco nella pagina login.php corrispondono a quelli che sono nel db quindi non so proprio che pesci prendere! :-(

Grazie

avatar oly1982

oly1982

14 June 2011 ore 19:51

avatar Elisa

Elisa

14 June 2011 ore 19:27

avatar oly1982

oly1982

08 June 2011 ore 18:35

Ti ho risposto privatamente via email

avatar kikasso

kikasso

08 June 2011 ore 12:04

avatar oly1982

oly1982

07 June 2011 ore 22:16

avatar kikasso

kikasso

07 June 2011 ore 18:21