sistema utenti con classi

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, sto studianto le classi e ho trovato questo articolo interessante:
https://www.mrw.it/php/articoli/php-oop-creare-sistema-registrazione-autenticazione-utenti_1290.html

però come faccio fare che ogni utente che si iscriva viene inviata la mail per confermare l'attivazione??

in php normale mi riusciva ora con le classi non so come fare.
ho aggiunto due campi al database uno ver varchar(50) e uno attivo= enum('0','1').

per il ver .. volevo usare semplicemente un rand(100,999999) se è possibile.

vi posto il codice del registrati:
PHP:
 # metodo per la registrazione 
  public function registra($nome_reale, $nome_utente, $password, $email) 
  {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE nome_utente = '$nome_utente' OR email = '$email'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 0) 
    {
      # ..si procede con la registrazione..
      $risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email) VALUES ('$nome_utente', '$password','$nome_reale','$email')") or die('Errore: ' .mysql_error());
      return $risultato;
    }else{
      # ..altrimenti l'esito della registrazione sarà negativo
      return FALSE;
    }
  }

mi date una mano ad capire come fare?

aspetto le vostre risposte.

grazie mille. e buona giornata.
a presto.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ho fatto.. ora come devo fare un'update per dire che devo settare attivo su 1 ?
questo quello che ho fatto io:
PHP:
<?php
# inclusione del file di funzione
@include_once 'inc.php';
# istanza della classe
$obj = new Iscrizioni();
# chiamata al metodo per la verifica della sessione
if ($obj->verifica_sessione())
{
  #redirect in caso di esito negativo
  @header("location:area_riservata.php");
}
# chiamata al metodo per la registrazione
if ($_SERVER["REQUEST_METHOD"] == "POST") 
{
if(empty($_POST["nome_reale"]) || empty($_POST["nome_utente"]) || empty($_POST["password"]) || empty($_POST["email"]))
{
 echo "non hai inserito i dati giusti";
}
else
{
  $activation = rand(0,9999);
  
  $registrato = $obj->registra(htmlentities($_POST['nome_reale'], ENT_QUOTES), htmlentities($_POST['nome_utente'], ENT_QUOTES), htmlentities($_POST['password'], ENT_QUOTES), htmlentities($_POST['email'], ENT_QUOTES), htmlentities(md5($activation), ENT_QUOTES));
  # controllo sull'esito del metodo
  if ($registrato) {
    # notifica in caso di esito positivo
		
		
		$mail_body="<p>Benvenuto nel nostro sito i tuoi dati per accedere sono i seguenti</p>";
		$mail_body.="<p>Username : ".$_POST['nome_utente']."</p>";
		$mail_body.="<p>Password : ".$_POST["password"]."</p>";
		$mail_body.="<p>------------------------------------------</p>";
		$mail_body.="<p>Clica qui sotto per attivare l'account</p>";
		$url_root = "http://localhost/game";
		$mail_body.="<a href=\"".$url_root."/membri/confirm.php?nick=".$_POST['nome_utente']."&key=".md5($activation)."\">Link attivazione</a>";

		$mail_to      = "".$_POST["email"]."";
		$mail_from    = "[email protected]";
		$mail_subject = "Iscrizione al gioco";
		

		// Specifico le intestazioni per il formato HTML 
		$mail_in_html  = "MIME-Version: 1.0\r\n";
		$mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
		$mail_in_html .= "From: <$mail_from>";

		// Invio la mail
		if (mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
		{
			echo 'Registrazione conclusa <a href="autenticazione.php">ora puoi loggarti</a>.';
		}
  }else{
    # notifica in caso di esito negativo
    echo 'Stai cercando di registrarti con dei dati gi&aacute; presenti nel database.';
  }
}
}
# form per l'iscrizione
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pagina per la registrazione</title>
</head>
<body>
<div id="container">
  <div id="main-body">
  <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="form_registrazione" name="registrazione">
    <div class="head"><h1>Registrazione iscritti</h1></div>
    <label>Nome</label><br/>
    <input type="text" name="nome_reale" /><br/>
    <label>Nome utente</label><br/>
    <input type="text" name="nome_utente" /><br/>
    <label>Password</label><br/>
    <input type="password" name="password" /><br/>
    <label>Il tuo indirizzo di posta elettronica</label><br/>
    <input type="text" name="email" id="email" /><br/><br/>
    <input type="submit" name="registra" value="Registrami"/><br/><br/>
    <label><a href="autenticazione.php" title="Login">Se sei già registrato puoi loggarti da qui</a></label> 
  </form>
  </div>
</div>
</body>
</html>

e questa la modifica del codice sopra:

PHP:
# metodo per la registrazione 
  public function registra($nome_reale, $nome_utente, $password, $email,$ver) 
  {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE nome_utente = '$nome_utente' OR email = '$email'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 0) 
    {
      # ..si procede con la registrazione..
      $risultato = @mysql_query("INSERT INTO iscritti(nome_utente, password, nome_reale, email,ver,attivo) VALUES ('$nome_utente', '$password','$nome_reale','$email','$ver','0')") or die('Errore: ' .mysql_error());
      return $risultato;
    }else{
      # ..altrimenti l'esito della registrazione sarà negativo
      return FALSE;
    }
  }

mi dite come devo fare per l'update?

grazie mille.. c'è qualcuno che mi può aiutarmi con queste classi?

grazie mille.
 
Ultima modifica:

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
è cosi per caso??:
PHP:
# metodo per la conferma
  public function conferma($nome_utente,$ver) 
  {
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT nome_utente,ver FROM iscritti WHERE nome_utente = '$nome_utente' OR ver = '$ver'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 0) 
    {
  
      $risultato = @mysql_query("UPDATE iscritti set attivo='1' where nome_utente='$nome_utente' and  ver='$ver'") or die('Errore: ' .mysql_error());
      return $risultato;
  }else{
    
      return FALSE;
    }
  	  
  }

mi dite se va bene??

grazie mille.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ciao,
questa non mi convince
PHP:
SELECT nome_utente,ver FROM iscritti WHERE nome_utente = '$nome_utente' OR ver = '$ver'"
se utente uguale a utente oppure ver = ? (Si o No?)
basta che in tutta la tabella ci sia un si o un no che ti restituirà comunque un risultato
dovrebbe essere al massimo
PHP:
SELECT nome_utente,ver FROM iscritti WHERE nome_utente = '$nome_utente' AND ver = '$ver'"
ma secondo me è un controllo inutile: anche se modifichi un campo con gli stessi valori la query non ti genera errori
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
grazie per avermi risposto..

ora il codice è cosi:
dici che va bene:
PHP:
  # metodo per la conferma
  public function conferma($nome_utente,$ver) 
  {
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT nome_utente,ver FROM iscritti WHERE nome_utente = '$nome_utente' and ver = '$ver'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 1) 
    {
       $risultato = @mysql_query("UPDATE iscritti set attivo='1' where nome_utente='$nome_utente' and  ver='$ver'") or die('Errore: ' .mysql_error());
      return $risultato;
  }else{
      # ..altrimenti l'esito della registrazione sarà negativo
      return FALSE;
    }
  	  
  }

ho dovuto fare if($conta == 1),
perché se no la query non funzionava..

te cosa dici va bene?

grazie mille.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
da quello che ho capito tu vuoi che se l'utente esiste e se ha ver = 0 uppare per qull'utente ver =1,
se non esiste oppure ver è già a 1 non uppare
giusto?
se è così io farei la prima query
PHP:
$query = mysql_query("SELECT nome_utente,ver FROM iscritti WHERE nome_utente = '$nome_utente' and ver = '0'"
poi non usare i silent @, gli errori non vanno nascosti ma prevenuti e eliminati

p.s.
con le classi ho un'antipatia particolare
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ciao
da quello che ho capito tu vuoi che se l'utente esiste e se ha ver = 0 uppare per qull'utente ver =1,
se non esiste oppure ver è già a 1 non uppare
giusto?
se è così io farei la prima query
PHP:
$query = mysql_query("SELECT nome_utente,ver FROM iscritti WHERE nome_utente = '$nome_utente' and ver = '0'"
poi non usare i silent @, gli errori non vanno nascosti ma prevenuti e eliminati

p.s.
con le classi ho un'antipatia particolare

ok, ho fatto... ti ringrazio molto..

per le @ non saprei perché io ho copiato il codice dell'articolo..

ora le ho tolte tutte.

se ho altro problema vi faccio sapere.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
ora sto faccendo il modulo recupera password.. avviso che ho tolto md5 che tanto non mi interessa criptata.. basta che sia protetto il db..

ora vorrei sapere se c'è il modo invece di scrivere il rows nella classe si può inserire il rows nel file forgot.php??

vi posto il codice:
clsSystemArea.php
PHP:
   # metodo per recupera password
  public function recupera_password($email) 
  {
    # confronto degli input con i dati contenuti in tabella
    $query = mysql_query("SELECT * FROM users WHERE email = '" . mysql_real_escape_string ($email)."'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di corrispondenze prodotte dal confronto
    $conta = mysql_num_rows($query);
    # se il confronto non genera corrispondenze..
    if ($conta == 1) 
    { 
	$risultato = mysql_fetch_object($query);
    # stampa a video del nome reale dell'utente
    $password =  $risultato->password;
	$nome_utente = $risultato->nome_utente;
	
    
		$mail_body="<p>Recupero password</p>";
		$mail_body.="<p>Username : ".$nome_utente."</p>";
		$mail_body.="<p>Password : ".$password."</p>";
		$mail_body.="<p>------------------------------------------</p>";
	
		$mail_to      = "".$email."";
		$mail_from    = "[email protected]";
		$mail_subject = "Recupero password";
		

		// Specifico le intestazioni per il formato HTML 
		$mail_in_html  = "MIME-Version: 1.0\r\n";
		$mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
		$mail_in_html .= "From: $mail_from";

		// Invio la mail
		if (mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
		{
			 echo 'Password inviata';
		}
		  return TRUE;
  }else{
      # ..altrimenti l'esito della registrazione sarà negativo
      return FALSE;
    }
  	  
  }

codice forgot.php: leggette dove c'è scritto: // vorrei scrivere qui l'echo del messaggio da inviare all'utente e i dati presi dal database..
PHP:
<?php
# inizializzazione della sessione
session_start();
# inclusione del file di funzione
include_once 'inc.php';
# istanza della classe
$obj = new clsSystemArea();
# chiamata al metodo per la verifica della sessione
if ($obj->verifica_sessione())
{
  # redirect in caso di esito positivo
  header("location:area_riservata.php");
}
# chiamata al metodo per l'autenticazione
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
  $recuperapassword = $obj->recupera_password(htmlentities($_POST['email'], ENT_QUOTES));
  # controllo sull'esito del metodo
    if ($recuperapassword) {
    # notifica in caso di esito positivo
		// vorrei scrivere qui l'echo del messaggio da inviare all'utente e i dati presi dal database..
		
  }else{
    # notifica in caso di esito negativo
    echo 'I dati non sono essatti per inviare la password..';
  }
}
# form per l'autenticazione
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Pagina per l'autenticazione</title>
</head>
<body>
<div id="container">
  <div id="main-body">
  <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="form_recupera" name="recupera">
  <div class="head"><h1></h1></div>
  <label>Inserisci l'email</label><br/>
  <input type="text" name="email" /><br/>
  <input type="submit" name="invio_dati" value="Invia"/><br/><br/>
  </form>
  </div>
</div>
</body>
</html>

si può fare ? questa cosa?

grazie mille e buona serata.
 

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
scusate.. ma ho risolto lascio cosi come è.che funziona normalmente..

e poi mi studio bene le classi..

grazie a presto potete chiudere.

ciao.
 
Discussioni simili
Autore Titolo Forum Risposte Data
Wox Sistema di gestione utenti per acceso ad aree protette Classic ASP 8
F Sistema rilevazione presenze PHP 1
MarcoGrazia Sistema di news interno al sito PHP 3
T SSD - errore sistema Hardware 2
R Come creare sistema Add to homescreen PHP 3
L Sistema outdoor centralizzato IP Cam e Videosorveglianza 0
F Sistema di autenticazione e pagamento PHP 3
LDB Multimedia e Internet Offro sistema di affiliazione remunerato Offerte e Richieste di scambio links 0
R [PHP] Creare sistema random PHP 3
brasoft2019 [PHP] Sistema di gestione presenze PHP 29
L Trasferimento dei file OLM Mac in formato PST sul sistema Mac Mac e Software 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino Windows 8.1: installare sistema operativo e programmi in due hard disk diversi Windows e Software 4
M Esiste un sistema di video sorveglianza simile? IP Cam e Videosorveglianza 1
W [Javascript] Eseguire script residente nel sistema da html remota Javascript 0
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
V [Visual Basic] ottenere info su sistema Visual Basic 1
E Consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 0
P Sistema per identificare utente se proviene da apertura app android Sviluppo app per Android 3
M consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 1
loois Ho un problema nella creazione di un sistema di commenti in PHP PHP 11
xone [MySQL] Comparazione data per sistema di prenotazioni MySQL 23
papayablu Calcolatore scommesse a sistema per Android? Smartphone e tablet 4
A Sistema di comunicazione visiva IP Cam e Videosorveglianza 0
N Sistema di Help di Delphi 7 non funziona su Win10 Windows e Software 0
R Sistema Operativo Windows e Software 1
MarcoGrazia [Javascript] Sistema di caricamento dinamico in base allo scrolling Javascript 3
S Sistema di iscrizione al mio sito PHP 1
F come creare un sistema ranking tra due tabelle (TOMBOLA/BINGO) PHP 8
D Sistema di videocamere alta qualita IP Cam e Videosorveglianza 1
E sistema di autenticazione PHP 4
R Sistema di conteggio (somma) HTML e CSS 4
felino Presentazione foto e sistema di votazione PHP 2
M "BOOTMGR is missing" - formattare HD di sistema Windows e Software 2
JackIlPazzo Sistema di login e registrazione avanzato PHP 1
M Sistema per gestione file. PHP 1
S Creare Sistema di API Request e Response libero e protetto PHP 7
Christian1977 Nuovo sistema operativo Android Smartphone e tablet 3
A File di sistema PHP 6
simonetta619 sistema operativo a 32 o a 64bit? Windows e Software 1
L [gratuito] cerco sistema news xml in php5 Offerte e Richieste di Lavoro e/o Collaborazione 1
L pdo e sistema crud PHP 1
P Sistema di consultazione orari PHP 2
A windows 8 - INTERRUZIONE IMPREVISTA SERVICES DI SISTEMA Windows e Software 0
Alessandro Le Mura Sistema votazione mysql - php a stelle PHP 3
C Sistema particolare di password PHP 5
F Sistema anti MySQLi Injection? PHP 6
P Script sistema rating PHP 0
E Sistema di login PHP 4
M PHP/MySQL: Sistema per trovare multiaccount PHP 7

Discussioni simili