- Home
- Categorie
- Coding e Sistemistica
- Coding
- [Tutorial] Area privata
- 
							
							
							
							
							[Tutorial] Area privataHo scritto un piccolo tutorial, una basilare area privata, con ovviamente registrazione e login. 
 Manca la grafica visto che l'obiettivo era solo quello di dare le basi a chi si avvicina da poco al php.database 
 [php]CREATE TABLEutenti(
 idINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 userTEXT NOT NULL ,
 passTEXT NOT NULL ,
 mailTEXT NOT NULL
 ) ENGINE = MYISAM ;[/php]config.php
 [php]<?php
 // avvio la sessione
 session_start();// Dati connessione al database 
 $db_host = 'localhost'; // Host - solitamente localhost
 $db_utente = 'root'; // Nome utente del Database
 $db_password = 'pass'; // Password del Database
 $db_nomedb = 'thedarkita'; // Nome del Database// Effettua la connessione al database 
 $dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
 mysql_select_db($db_nomedb);
 ?>[/php]index.php
 [php]<?php
 // Includo la connessione al database
 require('config.php');
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Tutorial by TheDarkITA</title>
 </head><body> 
 Menu:<br />
 <br />
 <br />
 <?php
 if(isset($_SESSION['login']))
 echo '<a href="privata.php">Area privata</a><br /><a href="logout.php">Logout</a><br />';
 else
 echo '<a href="registrati.php">Registrazione</a><br /><a href="login.php">Login</a><br />';
 ?>
 </body>
 </html>[/php]login.php
 [php]<?php
 // Includo la connessione al database
 require('config.php');// Se il modulo viene inviato... 
 if(isset($_POST['login']))
 {// Dati Inviati dal modulo $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default '' $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default '' // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) { $user = addslashes($user); $pass = addslashes($pass); } // Crypto la password e la confronto con quella nel database $pass = md5($pass); // Controllo l'utente esiste $query = mysql_query("SELECT id FROM utenti WHERE user = '$user' AND pass = '$pass' LIMIT 1"); // Se ha trovato un record if(mysql_num_rows($query) == 1) { // prelevo l'id dal database $login = mysql_fetch_array($query); // Creo una variabile di sessione $_SESSION['login'] = $login['id']; // reindirizzo l'utente header('Location: privata.php'); exit; } // se non esiste da l'errore else die('Nome Utente o Password errati');} 
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Login</title>
 </head><body> 
 <form action="" method="post">
 <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
 <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
 <input name="login" type="submit" value="Login" /><br />
 </form>
 </body>
 </html>[/php]logout.php
 [php]<?php
 // Includo la connessione al database
 require('config.php');// Esegue il logout cancellando la sessione 
 session_destroy();
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Logout</title>
 </head><body> 
 Logout eseguito<br />
 <a href="index.php">Vai all'index</a><br />
 </body>
 </html>[/php]privata.php
 [php]<?php
 // Includo la connessione al database
 require('config.php');// Se non è stata definita la variabile manda l'utente alla homepage 
 if(!isset($_SESSION['login']))
 {
 header('Location: index.php');
 exit;
 }
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Area privata</title>
 </head><body> 
 Pagina privata!<br />
 <br />
 <br />
 <a href="logout.php">Logout</a><br />
 </body>
 </html>[/php]registrati.php
 [php]<?php
 // Includo la connessione al database
 require('config.php');// Se il modulo viene inviato... 
 if(isset($_POST['registra']))
 {// Dati Inviati dal modulo $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default '' $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default '' $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default '' // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza if (!get_magic_quotes_gpc()) { $user = addslashes($user); $pass = addslashes($pass); $mail = addslashes($mail); } // Controllo il Nome Utente if(strlen($user) < 4 || strlen($user) > 12) die('Nome Utente troppo corto, o troppo lungo'); // Controllo la Password elseif(strlen($pass) < 4 || strlen($pass) > 12) die('Password troppo corta, o troppo lunga'); // Controllo l'email elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail)) die('Email non valida'); // Controllo il nome utente non sia già occupato elseif(mysql_num_rows(mysql_query("SELECT user FROM utenti WHERE user = '$user' LIMIT 1")) == 1) die('Nome Utente non disponibile'); // Controllo l'indirizzo email non sia già registrato elseif(mysql_num_rows(mysql_query("SELECT mail FROM utenti WHERE mail = '$mail' LIMIT 1")) == 1) die('Questo indirizzo email risulta già registrato ad un altro utente'); // Registrazione dell'utente nel database else { // Crypt della password per garantire una miglior sicurezza $pass = md5($pass); // Query per l'inserimento dell'utente nel database $strSQL = "INSERT INTO utenti (user,pass,mail)"; $strSQL .= "VALUES('$user', '$pass', '$mail')"; mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error()); // Reindirizzo l'utente ad una pagina di conferma della registrazione header('Location: registrato.php'); exit; }} 
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Registrazione</title>
 </head><body> 
 <form action="" method="post">
 <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
 <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
 <input name="mail" type="text" id="mail" value="Em@il" onfocus="if(this.value=='Em@il') this.value='';" /><br />
 <input name="registra" type="submit" value="Registrati" /><br />
 </form>
 </body>
 </html>[/php]registrato.php
 [php]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Registrazione Completa</title>
 </head><body> 
 Registrazione completa!<br />
 <br />
 <br />
 <a href="index.php">Vai all'index</a><br />
 </body>
 </html>[/php]Per i più pigri è possibile scaricare lo script completo a questo indirizzo scarica i file 
 
- 
							
							
							
							
							
Grazie Thedarkita, 
 un ottimo tutorial.
  
 
- 
							
							
							
							
							Veramente ben fatto... e ben commentato soprattutto  keiske 
 
- 
							
							
							
							
							
Ho utilizzato i tuoi script per creare la pagina di log in e registrazione ma ottengo sempre degli errori. Ci sono delle parti da cambiare negli script? 
 
- 
							
							
							
							
							
 
- 
							
							
							
							
							Grazie  
 devi modificare solo il file config.php mettendo i dati di accesso al database...
 
- 
							
							
							
							
							ciao ragazzi, 
 davvero un utile tutorial!!!ma... in questo modo tutti gli utenti potranno vedere la stessa pagina??? 
 quindi sia l'utente cia che l'utente tantisaluti vedranno la pag. privata???
 
- 
							
							
							
							
							
 
- 
							
							
							
							
							@Motherboard said: ciao ragazzi, 
 davvero un utile tutorial!!!ma... in questo modo tutti gli utenti potranno vedere la stessa pagina??? 
 quindi sia l'utente cia che l'utente tantisaluti vedranno la pag. privata???
 Si
 
- 
							
							
							
							
							Ovviamente sarai tu poi a diversificare i contenuti a seconda dell'utente... se si logga l'utente PIPPO e vuoi fargli vedere cose solo sue e queste cose le estrai da un database farai una query al database chiedendo tutti i dati necessari che coincidono con PIPPO o che coincidono col numero utente di PIPPO e siccome PIPPO deve loggarsi, salvando nelle variabili di sessione il suo nome o il suo numero lo puoi ricavare da $_SESSION['nome'] o $_SESSION['id'] precedentemente salvate keiske 
 
- 
							
							
							
							
							salve a tutti, la mia domandina è : 
 come integrare l'autologin, il "ricordami" sul file login e credo poi su tutti gli altri file qui in questione ?
 
- 
							
							
							
							
							dovresti creare dei cookie con user e pass. e all'accesso dovresti vedere se sono settati i cookie e in quel caso mandarlo ad una pagina di login che prenda i valori dai cookie invece che dal form 
 
- 
							
							
							
							
							
scusate ho sbagliato ho risposto ad un altro post !!!!!!!!!perdonatemi 
 
- 
							
							
							
							
							nel database manca una virgola nel codice sql 
 il file corretto è il seguente:
 [php]
 CREATE TABLEutenti(
 idINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 userTEXT NOT NULL ,
 passTEXT NOT NULL ,
 mailTEXT NOT NULL
 ) ENGINE = MYISAM ;
 [/php]
 
- 
							
							
							
							
							
Mi chiedo come mai l'ho installato ma non mi fa il redirect quando mi registro e quando mi loggo. Lo script aggiunge correttamente i dati sul database. Dove sto sbagliando? 
 
- 
							
							
							
							
							Cosa vedi invece di essere reindirizzato? dopo la funzione header() hai messo exit; perchè con internet explorer senza quello da qualche problemino... 
 
- 
							
							
							
							
							
ma dopo questa istruzione 
 [PHP] if(mysql_num_rows($query) == 1){
 [/PHP]non ci va un 
 [PHP]session_start()[/PHP]
 ?
 a me senza quello non funzionava....
 
- 
							
							
							
							
							è nel config session_start... se lo rimetti genera errore... 
 
- 
							
							
							
							
							
ok però ho un altro problema. 
 se accedo all'area privata da un server win 2003, salta la pagina di login ed entra direttamente.
 come si può risolvere questo preblema??
 
- 
							
							
							
							
							Cioè? 
 
