Ciao utenti ma soprattutto ciao Thedarkita e grazie per questo meraviglioso script.
Ho seguito con attenzione tutto ciò che si è scritto senza riscontrare particolari problemi e quindi implementando lo script in base alle mie esigenze.
Vengo al dunque: effettuando, però, le modifiche nella pagina di registrazione, sul checkbox per accettare la privacy policy, al momento di cliccare sul link di attivazione mi compare "Errore, Link non valido".
Ho letto e riletto dalla prima all'ultima pagina e confrontato la pagina originaria con la pagina modificata e non sono riuscito a trovare l'errore.
Di seguito i codici delle due pagine.
Pagina funzionante:
[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);
// Genero una stringa casuale di Attivazione
$attivazione = '';
for($x=1; $x<=32; $x++)
$attivazione.=rand(0,9);
$attivazione = md5($attivazione);
$message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="h00p://wwv.miosito.it/a/attivazione.php?code='.$attivazione.'">Attiva account</a>';
// Header dell'email, per mandarla in formato html
$headers = "From: adwmaster <[email protected]>\r\n";
$headers .= "Reply-To: [email protected]\r\n";
$headers .= "Return-Path: [email protected]\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
// Invio L'email
mail($mail, 'Registrazione Tutorial TheDarkITA', $message, $headers);
// Query per l'inserimento dell'utente nel database
$strSQL = "INSERT INTO utenti (user,pass,mail,attivazione)";
$strSQL .= "VALUES('$user', '$pass', '$mail', '$attivazione')";
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" "h00p://wwv.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="h00p://wwv.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]
Pagina non funzionante:
[PHP]
<?php
session_start();
// 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 ''
$accept = (isset($_POST['accept'])) ? trim($_POST['accept']) : ''; // 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);
$accept = addslashes($accept);
}
// 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');
elseif($accept != 1)
die('Devi accettare l\'informativa');
// Registrazione dell'utente nel database
else
{
// Crypt della password per garantire una miglior sicurezza
$pass = md5($pass);
// Genero una stringa casuale di Attivazione
$attivazione = '';
for($x=1; $x<=32; $x++)
$attivazione.=rand(0,9);
$attivazione = md5($attivazione);
$message = 'Per attivare il Suo account deve visitare il seguente link:<br><a href="h00p://wwv.miosito.it/a/attivazione.php?code='.$attivazione.'">Attiva account</a>';
// Header dell'email, per madnarla in formato html
$headers = "From: adwmaster <[email protected]>\r\n";
$headers .= "Reply-To: [email protected]\r\n";
$headers .= "Return-Path: [email protected]\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
// Invio L'email
mail($mail, 'Registrazione Tutorial TheDarkITA', $message, $headers);
// Query per l'inserimento dell'utente nel database
$strSQL = "INSERT INTO utenti (user,pass,mail,accept)";
$strSQL .= "VALUES('$user', '$pass', '$mail', '$accept')";
mysql_query($strSQL) OR die("Errore 003. <br>
Possibile cause: <br>
-
non ha spuntato la casella per l'informativa. <br>
-
non ha inserito i suoi dati correttamente.<br>
-
errore del sistema.<br>
Si prega tornare indietro e riprovare a registrarsi o<br>
contattare l'amministratore.<br>
Failure because: ".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" "h00p://wwv.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="h00p://wwv.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 />
<span class="Stile14">Accetto l' <a href="/informativa.php">informativa</a></span>
<input name="accept" type="checkbox" id="accept" checked="checked" value="1" />
<br />
<input name="registra" type="submit" value="Registrati" /><br />
</form>
</body>
</html>
[/PHP]
Grazie anticipatamente.