Cerca nel sito

lunedì 13 febbraio 2012

piccola guida php per costruire un area privata

database

Codice PHP:
CREATE TABLE `utenti` (
`
id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`
user` TEXT NOT NULL ,
`
pass` TEXT NOT NULL ,
`
mail` TEXT NOT NULL) ENGINE = MYISAM ;
config.php

Codice PHP:
<?php// avvio la sessionesession_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);?>
index.php

Codice PHP:
<?php// Includo la connessione al databaserequire('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 />
<?phpif(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>
login.php

Codice PHP:
<?php// Includo la connessione al databaserequire('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>
logout.php

Codice PHP:
<?php// Includo la connessione al databaserequire('config.php');
// Esegue il logout cancellando la sessionesession_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>
privata.php

Codice PHP:
<?php// Includo la connessione al databaserequire('config.php');
// Se non è stata definita la variabile manda l'utente alla homepageif(!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>
registrati.php

Codice PHP:
<?php// Includo la connessione al databaserequire('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&agrave; 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>
registrato.php

Codice 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 allindex</a><br />
</
body>
</
html>
Per i più pigri è possibile scaricare lo script completo a questo indirizzo scarica i file

Nessun commento:

Posta un commento