ciao
come avevi fatto tu va bene lo stesso in quanto se l'utente non era attivo (attivo_utente == '0') l'update lo mette a 1, se invece l'utente era gia attivo (attivo_utente == '1') l'update non fa nulla (uno era ed uno rimane)
come ho fatto io invece controlla se l'utente è attivo, se non è attivo esegue l'update mettendo il campo attivo_utente a 1 se invece era gia attivo non esegue l'update e avvisa che era già attivato.
il tutto cambia solo dal punto formale, dal punto di vista sostanziale il risultato finale, di quello che hai fatto tu e di quello che ti ho suggerto, è identico
dato che stai attivando (l'utente ha cliccato su SI) deve (fatto da te o suggerito) deve stare tra case "SI"; ed il suo break;
ciao
anche se un utente è già attivo potrebbe aver voglia di cancellarsi, se è accorto di aver premuto conferma al posto di disdici
comunque col prossimo post ti mando altre osservazioni, cioè come farei io
ciao, ma in questo modo costringi l'utente che per errore ha cliccato sulla conferma di andare sul sito da qui nella pagina cancella accunt e cancellarsi, vabbè che guadagni una visita nelle statistiche, ma la pag cancella acount la riserverei a quegli uutenti che vogliono cancellarsi dopo un po' che sono iscritti, credo che l'utente che si è confermato per errore apprezzi di più cancellarsi senza tanti rigiri
ciao, scusa, ma c'è una cosa che non non mi torna nel top scripit:
chi riceve l'email di conferma ha già fatto l'iscrizione, ma il campo attivo_utente è settato a 0,
mentre gli altri campi sono stati riempiti (tra i quali il campo mail_utente)
quindi la query che esegui per prima
$query = mysql_query("SELECT * FROM forum_utenti WHERE mail_utente ='".$mail."'");
è TRUE (mysql_query restituisce TRUE se a buon fine, altrimenti FALSE, $query diventa una variabile boeliana)
nell'if che segue fai
if($query == 0){
che equivale a dire che la query è FALSE cioè che non esiste un utente che abbia
il campo mail_utente uguale a $mail
quindi un utente che si è iscritto non potrà ne confermare ne cancellarsi
io farei così
PHP:
<?php
if(!isset($_GET['mail']) || !isset($_GET['conf'])){
header("index.php");
}else{
require_once"config/config.php";
$mail=htmlspecialchars($_GET['mail']);
$conferma=htmlspecialchars($_GET['conf']);
$query = mysql_query("SELECT * FROM forum_utenti WHERE mail_utente ='".$mail."'");
if($query == TRUE &&($conferma=="SI" || $conferma=="NO" )){
/* in questo modo verifico
1. che l'utente abbai gia eseguito la pre-iscrizione e
2. che la variabile $conferma sia SI o NO e non un'altra cosa
*/
switch($conferma){
case "SI":
$riga=mysql_fetch_array($query);
if( $riga['attivo_utente']== "0"){//non attivato allora attivi
mysql_query("UPDATE forum_utenti SET attivo_utente = '1', gruppi_utente = 'utente' WHERE mail_utente ='".$mail."'");
echo '<script type="text/javascript">alert("Account Attivato!!")</script>';
}else{//l'utente si era gia attivato allora avvisi
echo '<script type="text/javascript">alert("Account èra già attivato!!")</script>';
}
break;
case "NO":
mysql_query("DELETE FROM forum_utenti WHERE mail_utente ='".$mail."'");
//perche vuoi riscombinare tutta la tabella??
//?????mysql_query("ALTER TABLE forum_utenti AUTO_INCREMENT = 0");
echo '<script type="text/javascript">alert("Account Cancellato!!")</script>';
break;
}//fine switch
/*qui dovresi mettere almeno un link, altrimenti l'utente
rimane bloccato su questa pagina*/
}else{//fine if query true
/*qualcuno ha scritto sulla riga di comando del browser es.
http://www_tuo_sito.it/cartella/pag_conferma.php?mail=pinco@pallo&conf=NO
o qualche altra cosa che non hai nel db ritorni all'index o diverso da SI o NO
*/
header("index.php");
}//la query era false
}//fine if/else isset get
?>
p.s.
può sembrare ridondante ma con GET è sempre meglio qualcosa in più che in meno
no perche dopo la conferma faro inviare una mail con un link cancella account che sto pensando come fare....
perche se no sarebbe facile cancellare l'account di un altro utente...^^