Fede 88
30-10-2009, 21:02
Ho creato la parte della mail di conferma per la registrazione al mio sito internet, che funziona nel seguente modo:
Dopo aver controllato tutti i dati ed averli inseriti nel database creo un numero ad 8 cifre (random) e lo salvo in un campo [codice] nella tupla dell'account appena creato. A questo punto invio una mail con il link alla pagina "attivazione.php" con accodato il suddetto codice tramite metodo GET.
L'utete cliccando sul link attiva l'account.
Inizialmente sembrava funzionare alla perfezione, però provando a sostituire il codice ricevuto via mail con altri codici scritti, diciamo a caso, mi sono accorto che veniva visualizzato comunque account attivato.
Questo è il codice:
<?php
include("connessioneDB.php");
$code = $_GET['code'];
if (!$code) { echo "ERRORE: Codice di attivazione non fornito!"; }
else
{
// Seleziono tutte le tuple che hanno codice uguale al codice ricevuto tramite
// metodo GET e campo conf=1, ovvero che sono già stati attivati
$check = mysql_query("SELECT * FROM utenti WHERE codice='$code' AND conf='1'");
// Seleziono username e password degli utenti con il suddetto codice
$username = mysql_query("SELECT username FROM utenti WHERE codice='$code'");
$password = mysql_query("SELECT password FROM utenti WHERE codice='$code'");
// creo una sessione con i selezionati dal DB
session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $password;
if(mysql_num_rows($check)==1) { echo "Il tuo account è già stato attivato!"; }
else
{
// Attivo l'account settando il campo conf a 1
$activate = mysql_query("UPDATE utenti SET conf='1' WHERE codice='$code'");
echo "Il tuo account è stato attivato!";
}
}
Qualcuno sa dirmi il perchè?
Dopo aver controllato tutti i dati ed averli inseriti nel database creo un numero ad 8 cifre (random) e lo salvo in un campo [codice] nella tupla dell'account appena creato. A questo punto invio una mail con il link alla pagina "attivazione.php" con accodato il suddetto codice tramite metodo GET.
L'utete cliccando sul link attiva l'account.
Inizialmente sembrava funzionare alla perfezione, però provando a sostituire il codice ricevuto via mail con altri codici scritti, diciamo a caso, mi sono accorto che veniva visualizzato comunque account attivato.
Questo è il codice:
<?php
include("connessioneDB.php");
$code = $_GET['code'];
if (!$code) { echo "ERRORE: Codice di attivazione non fornito!"; }
else
{
// Seleziono tutte le tuple che hanno codice uguale al codice ricevuto tramite
// metodo GET e campo conf=1, ovvero che sono già stati attivati
$check = mysql_query("SELECT * FROM utenti WHERE codice='$code' AND conf='1'");
// Seleziono username e password degli utenti con il suddetto codice
$username = mysql_query("SELECT username FROM utenti WHERE codice='$code'");
$password = mysql_query("SELECT password FROM utenti WHERE codice='$code'");
// creo una sessione con i selezionati dal DB
session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $password;
if(mysql_num_rows($check)==1) { echo "Il tuo account è già stato attivato!"; }
else
{
// Attivo l'account settando il campo conf a 1
$activate = mysql_query("UPDATE utenti SET conf='1' WHERE codice='$code'");
echo "Il tuo account è stato attivato!";
}
}
Qualcuno sa dirmi il perchè?