registrazione utenti...

  • Creatore Discussione Creatore Discussione angel
  • Data di inizio Data di inizio
ho trovato una soluzione più elegante
PHP:
messaggi_utenti=messaggi_utenti+1
nella query

sta venendo una cosa fantastica^^
il problema ci sono sempre problemi....

ti ringrazio dei consigli....
 
un piccolo problema...
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 == 0){
switch($conferma){
case "SI":
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>';
break;
case "NO":
mysql_query("DELETE FROM forum_utenti WHERE mail_utente ='".$mail."'");
mysql_query("ALTER TABLE forum_utenti AUTO_INCREMENT = 0");
echo '<script type="text/javascript">alert("Account Cancellato!!")</script>';
break;
}}else{
echo '<script type="text/javascript">alert("Account Già Attivato!!")</script>';
}

}?>
non riesco ha controllare se gia attivo stampa accont gia attivato..
ma non ho idea di come impostare la query
 
ciao
puoi fare così, anche se serve solo da avvertimento in quanto l'UPDATE, se l'utente era già attivo, non modifica nulla



PHP:
case "SI": 
	$rigaVErAtt=mysql_fetch_array(mysql_query("SELECT attivo_utente  WHERE mail_utente ='".$mail."'"));
	if($rigaVErAtt['attivo_utente'] == 0){
		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{
		echo '<script type="text/javascript">alert("Account era già attivato!!")</script>';
	}
break;
 
si ma se come dici tu poi basta che mette no anche se e attivo e lo cancella il controllo ci vuole prima di si o no...
capito
 
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;
 
si ma se l'uetente e gia attivo e invece di si mette no cancella l'account...
capit^^

credo di aver risolto....
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_fetch_array(mysql_query("SELECT * FROM forum_utenti WHERE mail_utente ='".$mail."'"));
if(($query['attivo_utente']) == 0){
switch($conferma){
case "SI":
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>';
break;
case "NO":
mysql_query("DELETE FROM forum_utenti WHERE mail_utente ='".$mail."'");
mysql_query("ALTER TABLE forum_utenti AUTO_INCREMENT = 0");
echo '<script type="text/javascript">alert("Account Cancellato!!")</script>';
break;
}}else{
echo '<script type="text/javascript">alert("Account Già Attivato!!")</script>';
}

}?>
che ne pensi...
 
Ultima modifica:
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...^^
 
se invece facessi cosi...
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']);
$controllla = mysql_fetch_array(mysql_query("SELECT * FROM forum_utenti WHERE mail_utente ='".$mail."'"));

if($controllla['mail_utente'] == $mail){
echo '<script type="text/javascript">alert("Nessun Account con questa Mail!!")</script>';
}else{

if(($controlla['attivo_utente']) == 0 &&($conferma == "SI" || $conferma == "NO" )){
switch($conferma){
case "SI":
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>';
break;
case "NO":
mysql_query("DELETE FROM forum_utenti WHERE mail_utente ='".$mail."'");
mysql_query("ALTER TABLE forum_utenti AUTO_INCREMENT = 0");
echo '<script type="text/javascript">alert("Account Cancellato!!")</script>';
break;
}}else{
echo '<script type="text/javascript">alert("Account Già Attivato!!")</script>';
}

}}?>
 

Discussioni simili