Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi

Visualizza un messaggio singolo
Vecchio 19-02-10, 20:11   #545 (permalink)
adwmaster
User
 
Data di registrazione: Apr 2009
Messaggi: 18
Problema link di attivazione

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:
Codice 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) < || strlen($user) > 12)
        die(
'Nome Utente troppo corto, o troppo lungo');
    
// Controllo la Password
    
elseif(strlen($pass) < || 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);
        
        
        
// 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 <mail@mail.ext>\r\n";
        
$headers .= "Reply-To: mail@mail.ext\r\n";
        
$headers .= "Return-Path: mail@mail.ext\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>
Pagina non funzionante:
Codice 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) < || strlen($user) > 12)
        die(
'Nome Utente troppo corto, o troppo lungo');
    
// Controllo la Password
    
elseif(strlen($pass) < || 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');
        
    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 <mail@mail.com>\r\n";
        
$headers .= "Reply-To: mail@mail.com\r\n";
        
$headers .= "Return-Path: mail@mail.com\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>
Grazie anticipatamente.
adwmaster non in linea   Rispondi citando