attivazione utente , rilevare campo già modificato

Salve, ho questo codice: che mi attiva l'utente con il campo locks=Y  di default è locks=N.

con un click tramite via email faccio eseguire la query di update al campo locks che permette di far attivare l'account all'utente registrato.

Però non mi riesce ad fare che se già attivo mi dice che non c'è nulla da confermare e dire utente già attivo.

ecco il codice:

<?php
include("../inc.php"); 
// Se il modulo viene inviato...
   include("../header.php");

   
   // Dati Inviati dal modulo
   $key = $_GET['key'];   // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
   $mail = $_GET['mail'];   // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    $locks = "Y";   
   // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
   if (!get_magic_quotes_gpc()) {
       $key = addslashes($key);
      $mail = addslashes($mail);
   }
   
   // Controllo l'utente esiste
   $query = mysql_query("SELECT * FROM utenti WHERE keyreg = '$key' AND email = '$mail' LIMIT 1");
   

      
   if(mysql_num_rows($query) == 1)
   {
      // prelevo l'id dal database
      $login = mysql_fetch_array($query);
      
      $email = "".$mail."";
      $luser = "".$login['username']."";
      
   
       $strSQL = "UPDATE  utenti set locks='".$locks."'";
       $strSQL .="WHERE email='".$mail."' and keyreg='".$key."'";
        
        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());

      
      $oggetto = "Invito all'attivazione dell'acount";
      $intestazioni = "MIME-Version: 1.0\r\n";
      $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
$intestazioni .= "From: antaonlus <xxx@email.com>\r\n";
$messaggio = "<html>

<head>

 <title></title>

</head>

<body bgcolor='yellow'>

 <h1>Ciao!</h1>
 Congratulazione <h2>".$luser."</h2>
 <p>La tua registrazione è stata confermata<p>
</body>

</html>";



   if( mail($email, $oggetto, $messaggio, $intestazioni) ) echo "Mail inviata";

   else echo "Mail non inviata";

      
      // reindirizzo l'utente
      
      echo "<meta http-equiv='refresh' content='5;URL=/home/'>";
   }
   
else{
$error = "Non trovato";
}   


?>
<?php
echo $error;
include("../footer.php");
?>

mi potete aiutarmi , ora  è un codice di prova.

grazie mille.

inviato 7 anni fa
luigi
modificato 7 anni fa
X 0 X

scusate, ho risolto con un tutorial di area riservata.

risposto 7 anni fa
luigi
X 0 X

niente da fare, anche il tutorial è come il mio.

Mi dite come faccio ad verificare il campo e stampare l'errore "Niente da attivare, utente già attivo".

risposto 7 anni fa
luigi
X 0 X

molto semplice la cosa:

elseif(mysql_num_rows(mysql_query("SELECT locks FROM utenti WHERE locks = 'Y' LIMIT 1")) == 1)
      {
      $error = "Utente già attivo , non c'è bisogno di altra attivazione.";
      }else{
risposto 7 anni fa
luigi
X 0 X

con quella query vedi solo se c'è almeno un utente in attesa di attivazione, non verifichi però se è l'utente che sta richiedendo l'attivazione!

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

comunque ho risolto:

<?php
include("inc.php"); 



   
   // Dati Inviati dal modulo
   $key = $_GET['key'];   
   $mail = $_GET['mail'];   
    $locks = "Y";   
   
$sql = "SELECT * FROM utenti WHERE keyreg = '$key' and email='$mail' and locks='N'";
$query = mysql_query($sql) or die(mysql_error());
$pcarray = mysql_fetch_array($query); // memoriziamo i risultati nell'array $pcarray

if (!is_array($pcarray))
{
    $error = "Oops! Niente da confermare!";
}else{

 
      $email = "".$mail."";
      $luser = "".$pcarrary['username']."";
      
   
       $strSQL = "UPDATE  utenti set locks='".$locks."'";
       $strSQL .="WHERE email='".$mail."' and keyreg='".$key."'";
        
        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());

      
      $oggetto = "Invito all'attivazione dell'acount";
      $intestazioni = "MIME-Version: 1.0\r\n";
      $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
$intestazioni .= "From: xxxxs <xxx@email.com>\r\n";
$messaggio = "<html>

<head>

 <title></title>

</head>

<body bgcolor='yellow'>

 <h1>Ciao!</h1>
 Congratulazione <h2>".$luser."</h2>
 <p>La tua registrazione è stata confermata<p>
</body>

</html>";



   if( mail($email, $oggetto, $messaggio, $intestazioni) ) $error =  "Mail inviata";

   else $error =  "Mail non inviata";

      
      // reindirizzo l'utente
      
      //echo "<meta http-equiv='refresh' content='5;URL=/home/'>";
      
 
}


?>
<?php
include("header.php");
echo $error;
include("footer.php");
?>   
risposto 7 anni fa
luigi
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda