crea due file:
1) funzioni_reg.php
2) registrazione.php
funzioni_reg.php
Codice PHP:
<?php
// le tre funzioni valida_user, valida_email, valida_password
// restituiscono una stringa
// ma se è tutto ok la stringa è vuota
function valida_user($field)
{
if ($field == "")
{
return "Non è stato inserito nessun User
";
}
else if (strlen($field) < 5)
{
return "Lo User deve avere almeno 5 caratteri
";
}
else if (preg_match("/[^a-zA-Z0-9_-]/", $field))
{
return "Per lo User sono ammesse solo lettere lettere, numeri, - e _
";
}
return ""; // se tutto ok è vuoto
}
function valida_email($field)
{
if ($field == "")
{
return "Nessuna Email inserita
";
}
else if (!((strpos($field, ".") > 0) && (strpos($field, "@") > 0)) || preg_match("/[^a-zA-Z0-9.@_-]/", $field))
{
return "L'indirizzo Email è invalido
";
}
return ""; // se tutto ok è vuoto
}
function valida_password($field)
{
if ($field == "")
{
return "Nessuna Password inserita
";
}
else if (strlen($field) < 6)
{
return "La Password deve avere almeno 6 caratteri
";
}
else if (!preg_match("/[a-z]/", $field) || !preg_match("/[A-Z]/", $field) || !preg_match("/[0-9]/", $field))
{
return "La Password deve contenere almeno 1: a-z, A-Z e 0-9
";
}
return ""; // se tutto ok è vuoto
}
// questa funzione verifica se esiste già un utente con quel username
// ritorna un valore boleano true/ false
// true se esiste
function isset_user($user)
{
$controllo = "select * from utenti where nome='" . mysql_real_escape_string($user) . "'";
$result = mysql_query($controllo) or die (mysql_error());
$contiamo_record_estratti = mysql_num_rows($result);
// se ce ne sta almeno 1 => true... cioè esiste un utente con quel username
if($contiamo_record_estratti>=1)
{
return TRUE;
}
// altrimenti => false... cioè non esiste nessun utente registrato con quell username
else
{
return FALSE;
}
}
// è uguale in tutto e per tutto alla precedente e segue la stessa logica
function isset_email($email)
{
// ATTENZIONE: controlla nella query campo email
$controllo = "select * from utenti where email='" . mysql_real_escape_string($email) . "'";
$result = mysql_query($controllo) or die (mysql_error());
$contiamo_record_estratti = mysql_num_rows($result);
// se ce ne sta almeno 1 => true... cioè esiste un utente con quel email
if($contiamo_record_estratti>=1)
{
return TRUE;
}
// altrimenti => false... cioè non esiste nessun utente registrato con quell email
else
{
return FALSE;
}
}
// mettiamo insieme tutte le precedenti funzioni
// creiamo un array $error vuoto
// validiamo tutti i campi e se qualche cosa va storto
// inseriamo nell'array $error un elemento
// se va tutto ok alla fine $error rimarra vuoto
function validate_field_registration($username, $email, $pass)
{
// eliminiamo gli spazi iniziali e finali di tutti i campi
$username = trim($username);
$email = trim($email);
$pass = trim($pass);
// creiamo un array vuoto
$error = array()
// eseguiamo tutte i controlli e se qualcosa va storto
// inseriamo il valore in $error
// 1) username con sintassi esatta
// se l'username non va bene valida_user restituisce una stringa non vuota!!
// quindi se la stringa non è vuota
if(valida_user($username)!='')
{
// aggiungiamo all'array error il relativo errore
$error[] = valida_user($username);
}
// 2) username già registrato
// la funzione isset_user ritorna un valore boleano
// true se esiste un utente con quel username, altrimenti false
// se true
if(isset_user($username)===TRUE)
{
// aggiungiamo all'array $error il seguente errore
$error[] = 'Esiste già un utente registrato con questo username';
}
// 3) email con sintassi esatta
// logica isentica a quella vista al punto 1)
if(valida_email($email)!='')
{
$error[] = valida_email($email);
}
// 4) email già registrata
// la logica è identica al quella del punto 2)
if(isset_email($email))
{
$error[] = 'Esiste già un utente registrato con questa email';
}
// 5) password con sintassi esatta
// logica identica a quella dei punti 1) e 3)
if(valida_password($pass)!='')
{
$error[] = valida_password($pass);
}
// la funzione restituisce $error
// se nessuno degli if è risultato verificato
// $error inizialmente vuoto è rimasto tale
return $error;
}
?>
registrazione.php
Codice PHP:
<?php
// evitiamo l'accesso a coloro che già sono registrati
session_start();
if (isset($_SESSION['autorizzato'])) {
echo "
Effettua il logout</p>";
echo '[url="index.php"]Home[/url] | ';
echo '[url="logout.php"]Logout[/url]';
die;
}
// ci si connette al db
include("config.php");
$link = mysql_connect($host, $user, $password) or die("Non è possibile connettersi al server
");
$conn = mysql_select_db($db, $link) or die("Non è possibile connettersi al db
");
// se il form è stato inviato
if(isset($_POST['registra']))
{
// includiamo il file che contiene le funzioni
require_once('funzioni_reg.php');
// prima di procedere a qualsiasi operazione occorre validare i campi
// applicheremo la funzione validate_field_registration
// la quale ci restituirà un array contenente gli errori che riguardano i campi
$array_con_errori = validate_field_registration($_POST['user'], $_POST['email'], $_POST['pass']);
// questo array così ottenuto sarà vuoto in caso di assenza di errori
// quindi se vuoto possiamo procedere alla registrazione
if(empty($array_con_errori))
{
// facciamo l'eascape delle stringhe
$user = mysql_real_escape_string($_POST['user']);
$email = mysql_real_escape_string($_POST['email']);
$pass = mysql_real_escape_string($_POST['pass']);
// prepariamo la query
//ATTENZIONE: non conoscendo il nome dei campi me li sono inventati...
$query = "INSERT INTO utenti SET(nome, email, password) VALUES ('" . $user . "','" . $email . "','" . $pass . "')"
$result = mysql_query($query) or die(mysql_error());
// creiamo un messaggio
$messaggio_success = '<h1>Registrazione eseguita con successo!</h1>'
}
}
?>
<!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>
[url="index.php"]Home[/url]
<?php
// se esiste un messaggio di successo lo stampiamo
if(isset($messaggio_success))
{
echo $messaggio_success;
}
// se invece esiste un array con gli errori
else if(isset($array_con_errori))
{
// e questo non è vuoto
if(!empty($array_con_errori))
{
// stampiamo gli errori ciclando l'array
echo 'Si sono verificati i seguente errori:';
foreach($array_con_errori as $key => $value)
{
echo '-'.$value.'
';
}
}
}
?>
<form method="post" name="inserisci" action="#">
<table>
<tr>
<td>User:</td>
<td><input type="text" name="user" /></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<td><input type="submit" name="registra" value="Registrati"/></td>
</tr>
</table>
</form>
</body>
</html>
Contattami privatamente per il bonifico...