Autenticazione PHP/OOP campi vuoti

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Ciao a tutti.
Seguendo passo passo la procedura per la creazione di un form di registrazione spiegata al seguente link https://www.mrw.it/php/php-oop-creare-sistema-registrazione-autenticazione-utenti_7706.html sono riuscito ad implementarlo perfettamente nel mio sito, l'unico problema è che si riesce comunque ad accedere all'area riservata senza immettere alcun campo.
Nei commenti sotto alla pagina di spiegazione è stato reso noto il problema, tuttavia non sono riuscito a correggere il "bug" che consente l'accesso all'area riservata praticamente a tutti i visitatori.

Si parla di parentesi mancanti tra le funzioni ma nel file functions.php non riesco proprio a trovarle
Se qualcuno gentilmente può aiutarmi copio e incollo il codice functions.php

PHP:
<?php
# inclusione del file di configurazione
@include_once 'config.php';
# definizione della classe che conterrà i metodi per la gestione degli iscritti
class Iscrizioni {
  
  # definizione del costruttore
  public function __construct() 
  {
    # istanza della classe per la connessione al database
    $data = new DATA_Class();
  }

  # 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;
    }
  }

  # metodo per l'autenticazione
  public function verifica_login($email_o_nome_utente, $password) 
  {
    # cifratura della password
    $password = @sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE (email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente') AND password = '$password'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di una corrispondenza prodotta dal confronto
    $conta = @mysql_num_rows($query);
    # se il confronto genera una corrispondenza..
    if ($conta == 1) 
    {
      # ..viene generata la sessione di login..
      $risultato = @mysql_fetch_object($query);
      $_SESSION['login'] = true;
      $_SESSION['id_utente'] = $risultato->id_utente;
      return TRUE;
    }else{
      # ..altrimenti l'esito dell'autenticazione sarà negativo
      return FALSE;
    }
  }

  # metodo per la visualizzazione del nome dell'utente loggato
  public function mostra_utente($id_utente) 
  {
    # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione
    $query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error());
    $risultato = @mysql_fetch_object($query);
    # stampa a video del nome reale dell'utente
    echo $risultato->nome_reale;
  }

  # metodo per il controllo sulla sessione
  public function verifica_sessione() 
  {
    # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata
    if(isset($_SESSION['login']))
    {
      return $_SESSION['login'];
    }else{
      return FALSE;
    }
  }
  
  # metodo per il logout
  # la sessione viene distrutta a seguito di uno specifico input dell'utente
  public function esci() {
    $_SESSION['login'] = FALSE;
    @session_destroy();
    }
  }
?>
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
Non mi sembra cia siano parentesi aperte, ma dovrei controllarlo meglio e ora è mattino presto!
Se ti da un errore però dovresti avere anche la riga dove si verifica l'errore.
Altra cosa: uno script non ti pone al sicuro da ingressi indesiderati, io non so come è strutturato il tuo sito, ma se non vuoi accessi in una directory "segreta" devi mettere dei file che ad ogni accesso intercettano il tentativo e se non è autenticato rimandano al form di richiesta password, se no è tutto inutile.
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Ciao Marco e grazie per la risposta. In effetti questo form di autenticazione non è proprio l'ideale per quello che mi serve, ma diciamo che è quello che ci si avvicina di più.

Non ho errori, è semplicemente un bug che accetta come utente registrato un utente "vuoto" senza campi e se vedo sul database effettivamente mi da come registrato un utente nullo, cioè i campi vuoti.

E' anche giusto quello che dici tu, che effettivamente bisognerebbe proteggere l'area riservata poiché una volta effettuato l'accesso è possibile salvarsi l URL e riaccendervi tranquillamente senza nessun modulo di verifica.
Purtroppo non ho ancora le conoscenze per sviluppare un sistema ad hoc e spero di poter acquisire qui:)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti schematizzo es di pagina riservata riservata.php
PHP:
<?php
session_start();
if(!isset($_SESSION['login'])){
	header("location:dove_vuoi_tu.php");
	exit();
}else{
	//quello che devi mostrare
}
?>
inserendo l'url http: // www.tuo_sito.it / riservata.php si viene automaticamente rimandati a dove_vuoi_tu.php
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
ciao
ti schematizzo es di pagina riservata riservata.php
PHP:
<?php
session_start();
if(!isset($_SESSION['login'])){
	header("location:dove_vuoi_tu.php");
	exit();
}else{
	//quello che devi mostrare
}
?>
inserendo l'url http: // www.tuo_sito.it / riservata.php si viene automaticamente rimandati a dove_vuoi_tu.php

Ok Grazie funziona. Mi rimane solo il problema dell' utente vuoto che accede senza immettere alcun campo.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
852
20
28
62
Udine
www.stilisticamente.com
bisgona vedere come è strutturata la pagina, probabilmente non viene considerato importante che il form sia qualificato, ma solo che ci sia un invio da parte dell'utente a prescindere dal valore ne campi del forum stesso.
 

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 capisco l'errore dovrebbe essere in questa zona dove verifichi se l'utente è registrato
per prima cosa togli TUTTI i silent (le @), gli errori eventuali vanno eliminati NON nascosti
poi metti un var_dump per vedere poi lo togli e fare le due correzioni
PHP:
<?php
//.....
	//e prova ad aggiungere questa parte dovresti evitare i campi vuoti
	//comunque nel db NON dovresti avere recordo con i campi vuoti
	if(trim($email_o_nome_utente) =="" || trim($password)==""){
		return FALSE;
	}
	$password = sha1($password);
    # confronto degli input con i dati contenuti in tabella
    $query = mysql_query("SELECT id_utente FROM iscritti WHERE (email = '' OR nome_utente='$email_o_nome_utente') AND password = '$password'") or die('Errore: ' . mysql_error());
    # controllo sulla presenza di una corrispondenza prodotta dal confronto
    $conta = mysql_num_rows($query);
    var_dump($conta);// (int) 0 se non trovato, (int) 1 se trovato
	# se il confronto genera una corrispondenza..
    if ($conta == 1){
      # ..viene generata la sessione di login..
      $risultato = mysql_fetch_array($query);//prova a correggere così
      $_SESSION['login'] = true;
      $_SESSION['id_utente'] = $risultato['id_utente'];//prova a correggere così
      return TRUE;
    }else{
	// prova, ma non servirebbe
		$_SESSION=array();//elimina le sessioni
      # ..altrimenti l'esito dell'autenticazione sarà negativo
      return FALSE;
    } 
//......
?>
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
bisgona vedere come è strutturata la pagina, probabilmente non viene considerato importante che il form sia qualificato, ma solo che ci sia un invio da parte dell'utente a prescindere dal valore ne campi del forum stesso.

Non esattamente, perché se inserisco valori non registrati (nome e password a caso) il database esegue la verifica e mi produce l'output con il messaggio d'errore "i dati inseriti non sono corretti" quindi in questo senso funziona.

Quello che ho notato è che sul database phpmyadmin di altervista viene visualizzato un utente vuoto come di seguito mostrato:

PHP:
id_utente	nome_utente	password	                                                           nome_reale	       email	
1		                        da39a3ee5e6b4b0d3255bfef95601890afd80709		
2		 Marco               14caa50bc09854ceeea515efa83a9b0ca8e7f517	   Marco      marc.rossi@

Nel modulo login quindi è sufficiente premere invio e l'utente "vuoto" accede all'area riservata. Non so se mi spiego:rolleyes:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
elimina quel record e verifica che in fase di registrazione un utente non possa inserire qualcosa di vuoto
sette poi i campi a NOT NULL
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
ciao
elimina quel record e verifica che in fase di registrazione un utente non possa inserire qualcosa di vuoto
sette poi i campi a NOT NULL

Stranamente se cancello il record dell' utente vuoto precedentemente registrato, poco dopo, rieffettuando il solo login è come se registrasse nuovamente un utente e di conseguenza accede comunque all'area riservata. Anche modificando NULL e NOT NULL sembra non cambiare...adesso provo a rivedere tutta la procedura da capo.
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Stavo pensando che come escamotage per risolvere sto problema si potrebbe inserire un modo per verificare il numero di caratteri immessi.
Per esempio, sto leggendo su un testo, che si potrebbe usare una funzione _verifyInput() che verifica che i caratteri siano non minori di (<6) o comunque maggiori di >1 . Oppure agire agire sui campi del database in qualche maniera.
Cosa mi consigliate?
 

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 dici sembrerebbe che verificando user e pass... con la function verifica_login($email_o_nome_utente, $password)
venga contemporaneamente richiamata anche la function registra($nome_reale, $nome_utente, $password, $email) con i valori vuoti e quindi ti registri, se lo cancelli, di nuovo il record
quindi verifica la parte dove la classe viene usata, perchè così a naso le function sembrerebbero corrette
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
ciao
da quello che dici sembrerebbe che verificando user e pass... con la function verifica_login($email_o_nome_utente, $password)
venga contemporaneamente richiamata anche la function registra($nome_reale, $nome_utente, $password, $email) con i valori vuoti e quindi ti registri, se lo cancelli, di nuovo il record
quindi verifica la parte dove la classe viene usata, perchè così a naso le function sembrerebbero corrette


Verifico e vi faccio sapere, grazie. :)
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Per completezza vi illustro il codice (il file config.php l'ho omesso poiché mi sembra scontato):

Questo l'ho inserito nella pagina index.php ed è il login.

PHP:
<?php
# inclusione del file di funzione
@include_once 'functions.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:iscrizione.php");
}
# chiamata al metodo per la registrazione
if ($_SERVER["REQUEST_METHOD"] == "POST") 
{
  $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));
  # controllo sull'esito del metodo
  if ($registrato) {
    # notifica in caso di esito positivo
    echo 'Registrazione conclusa <a href="index.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
?>

<?php
# inizializzazione della sessione
@session_start();
# inclusione del file di funzione
@include_once 'functions.php';
# istanza della classe
$obj = new Iscrizioni();
# 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") {
	$login = $obj->verifica_login(htmlentities($_POST['email_o_nome_utente'], ENT_QUOTES), htmlentities($_POST['password'], ENT_QUOTES));
	# controllo sull'esito del metodo
	if ($login) {
		# redirect in caso di esito positivo
		@header("location:area_riservata.php");
	}else{
		# notifica in caso di esito negativo
		echo 'I dati indicati non sono corretti.';
	}
}
# form per l'autenticazione
?>

Questo è inserito nella pagina di registrazione degli utenti cioè iscrizione.php


PHP:
<?php
# inclusione del file di funzione
@include_once 'functions.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:index.php");
}
# chiamata al metodo per la registrazione
if ($_SERVER["REQUEST_METHOD"] == "POST") 
{
  $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));
  # controllo sull'esito del metodo
  if ($registrato) {
    # notifica in caso di esito positivo
    echo 'Registrazione conclusa <a href="index.php">ora puoi loggarti</a>.';
  }else{
    # notifica in caso di esito negativo
    
    
  }
}
?>
<br>
</br>
<p style="margin-left: 13px";> <?php echo 'Stai cercando di registrarti con dei dati gi&aacute; presenti nel database.'?></p>

<br>
</br>
<br>
</br>

<img src="DSCN1129.JPG" alt="Strides"  style="height: 43% ; width: 25%; float: left; margin-left: 30px; border: solid 2px gray";>
<img src="DSCN0563.JPG" alt="Strides"  style="height: 43% ; width: 25%; float: right; margin-right: 30px; border: solid 2px gray";>

<div id="login">
  
  <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="form_registrazione" name="registrazione">
    <div class="head"><h2><strong>Registrazione iscritti</strong></h2></div>
    <h5><label><strong>Nome e Cognome</strong></label></h5><br/>
    <input type="text" name="nome_reale" required/><br/>
    <h5><label><strong>Nome utente</strong></label></h5><br/>
    <input type="text" name="nome_utente" required/><br/>
    <h5><label><strong>Password</strong></label></h5><br/>
    <input type="password" name="password" required/><br/>
    <h5><label><strong>Il tuo indirizzo di posta elettronica</strong></label></h5><br/>
    <input type="text" name="email" id="email" required/><br/><br/>
    <input type="submit" name="registra" value="Registrami"/><br/><br/>
    <label><a href="index.php" title="Login">Se sei gi&agrave; registrato puoi loggarti da qui</a></label> 
  </form>
  </div>

</body>
</html>

E questo è il file functions.php

PHP:
<?php 
# inclusione del file di configurazione 
@include_once 'config.php'; 
# definizione della classe che conterrà i metodi per la gestione degli iscritti 
class Iscrizioni { 
   
  # definizione del costruttore 
  public function __construct()  
  { 
    # istanza della classe per la connessione al database 
    $data = new DATA_Class(); 
  } 

  # 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; 
    } 
  } 

  # metodo per l'autenticazione 
  public function verifica_login($email_o_nome_utente, $password)  
  { 
    # cifratura della password 
    $password = @sha1($password); 
    # confronto degli input con i dati contenuti in tabella 
    $query = @mysql_query("SELECT id_utente FROM iscritti WHERE (email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente') AND password = '$password'") or die('Errore: ' . mysql_error()); 
    # controllo sulla presenza di una corrispondenza prodotta dal confronto 
    $conta = @mysql_num_rows($query); 
    # se il confronto genera una corrispondenza.. 
    if ($conta == 1)  
    { 
      # ..viene generata la sessione di login.. 
      $risultato = @mysql_fetch_object($query); 
      $_SESSION['login'] = true; 
      $_SESSION['id_utente'] = $risultato->id_utente; 
      return TRUE; 
    }else{ 
      # ..altrimenti l'esito dell'autenticazione sarà negativo 
      return FALSE; 
    } 
  } 

  # metodo per la visualizzazione del nome dell'utente loggato 
  public function mostra_utente($id_utente)  
  { 
    # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione 
    $query = @mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error()); 
    $risultato = @mysql_fetch_object($query); 
    # stampa a video del nome reale dell'utente 
    echo $risultato->nome_reale; 
  } 

  # metodo per il controllo sulla sessione 
  public function verifica_sessione()  
  { 
    # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata 
    if(isset($_SESSION['login'])) 
    { 
      return $_SESSION['login']; 
    }else{ 
      return FALSE; 
    } 
  } 
   
  # metodo per il logout 
  # la sessione viene distrutta a seguito di uno specifico input dell'utente 
  public function esci() { 
    $_SESSION['login'] = FALSE; 
    @session_destroy(); 
    } 
  } 
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
così ad occhio potrebbe andare bene, però non vedo alcun controllo sulla correttezza dei dati
non fai alcun controllo se i campi sono vuoti (usando trim per evitare solo spazi)
non fai alcuna verifica che l'email sia corretta (potresti usare filter_var($email, FILTER_VALIDATE_EMAIL) )
nel caso del nome potresi usare preg_match("/^[a-zA-Z0-9]{3,8}$/", $nome)
poi nelle registrazioni e nel log l'username, generalmente, è caseinsensitive quindi potresti usare strtolower per registrarli e poi quando lo verifichi)

poi ribadisco: togli quelle @

dimenticavo: passa alle funzioni mysqli o alla classe pdo, le funzioni mysql sono deprecate
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
ciao
così ad occhio potrebbe andare bene, però non vedo alcun controllo sulla correttezza dei dati
non fai alcun controllo se i campi sono vuoti (usando trim per evitare solo spazi)
non fai alcuna verifica che l'email sia corretta (potresti usare filter_var($email, FILTER_VALIDATE_EMAIL) )
nel caso del nome potresi usare preg_match("/^[a-zA-Z0-9]{3,8}$/", $nome)
poi nelle registrazioni e nel log l'username, generalmente, è caseinsensitive quindi potresti usare strtolower per registrarli e poi quando lo verifichi)

poi ribadisco: togli quelle @

dimenticavo: passa alle funzioni mysqli o alla classe pdo, le funzioni mysql sono deprecate


Concettualmente capisco cosa mi dici purtroppo però le mie conoscenze in materia ancora non mi consentono effettuare tali modifiche, ergo non so come fare ad inserire tali stringhe...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
guarda che non è difficile, ti schematizzo
1) controlli
2) fai un if/else
se errori rimandi al form, altrimenti richiami le tue funzioni
poi se hai pazienza (ho alcuni impegni) ti spiego meglio guardando anche quello che hai fatto.

p.s.
odio la programmazione ad oggetti
 

Marco_88

Utente Attivo
4 Dic 2014
150
0
0
Roma
batwebit.blogspot.it
Questo è quello che ho provato a fare basandomi esclusivamente sui concetti, ci saranno errori di sintassi ed ho evidenziato la parte scritta da me con delle freccette, commentando dove mi è stato possibile ciò che ho fatto.

Ho preso il file functions.php (vedi sopra) e ho e eseguito le seguenti modifiche:

PHP:
 <?php 
# inclusione del file di configurazione 
include_once 'config.php'; 
# definizione della classe che conterrà i metodi per la gestione degli iscritti 
class Iscrizioni { 
   
  # definizione del costruttore 
  public function __construct()  
  { 
    # istanza della classe per la connessione al database 
    $data = new DATA_Class(); 
  } 

  # 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; 
    } 
  } 


      /*---------------------------------------------------------> Questa è la verifica che ho inserito io*/

      public function verifica ($nome_reale, $nome_utente, $password, $email)

      {
         #funzione trim sui campi immessi
         trim($nome_utente, $password, $nome_reale, $email);
         #funzione filtro sul campo email
         filter_var($email, FILTER_VALIDATE_EMAIL);
         #sanitize email dovrebbe eliminare i caratteri non idonei al campo email
         filter_var($email, FILTER_SANITIZE_EMAIL);  
       
       if ($conta == 0);
       {
                      
   
         #qui ho copiato il passaggio precendente per la registrazione (quello esistente)
      
      $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{ 
         # qui dovrei rimandare l'else nuovamente alla verifica se non erro
      return FALSE; 

      } 

    }
 

      /*---------------------------------------------------------> fine della verifica inserita da me*/





  # metodo per l'autenticazione 
  public function verifica_login($email_o_nome_utente, $password)  
  { 
    # cifratura della password 
    $password = sha1($password); 
    # confronto degli input con i dati contenuti in tabella 
    $query = mysql_query("SELECT id_utente FROM iscritti WHERE (email = '$email_o_nome_utente' OR nome_utente='$email_o_nome_utente') AND password = '$password'") or die('Errore: ' . mysql_error()); 
    # controllo sulla presenza di una corrispondenza prodotta dal confronto 
    $conta = mysql_num_rows($query); 
    # se il confronto genera una corrispondenza.. 
    if ($conta == 1)  
    { 
      # ..viene generata la sessione di login.. 
      $risultato = mysql_fetch_object($query); 
      $_SESSION['login'] = true; 
      $_SESSION['id_utente'] = $risultato->id_utente; 
      return TRUE; 
    }else{ 
      # ..altrimenti l'esito dell'autenticazione sarà negativo 
      return FALSE; 
    } 
  } 

  # metodo per la visualizzazione del nome dell'utente loggato 
  public function mostra_utente($id_utente)  
  { 
    # estrazione del nome reale sulla base dell'identificatore memorizzato in sessione 
    $query = mysql_query("SELECT nome_reale FROM iscritti WHERE id_utente = $id_utente") or die('Errore: ' . mysql_error()); 
    $risultato = mysql_fetch_object($query); 
    # stampa a video del nome reale dell'utente 
    echo $risultato->nome_reale; 
  } 

  # metodo per il controllo sulla sessione 
  public function verifica_sessione()  
  { 
    # il metodo restituisce l'informazione relativa alla sessione a patto che questa sia stata inizializzata 
    if(isset($_SESSION['login'])) 
    { 
      return $_SESSION['login']; 
    }else{ 
      return FALSE; 
    } 
  } 
   
  # metodo per il logout 
  # la sessione viene distrutta a seguito di uno specifico input dell'utente 
  public function esci() { 
    $_SESSION['login'] = FALSE; 
    session_destroy(); 
    } 
  } 
?>


A voi la parola. :D
 
21 Dic 2014
3
0
0
semplicemente non hai inserito la possibilità dell'utente vuoto nello script
PHP:
if($user == ”” or $mail == "" or $pass1 == "" or $conferma ==“”)
con una cosa del genere dovresti risolvere...credo...
 
Discussioni simili
Autore Titolo Forum Risposte Data
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
catellostefano Autenticazione a linux da php PHP 16
A autenticazione con php PHP 5
A PHP e sistema di autenticazione PHP 2
H autenticazione sessione ajax/php Ajax 2
P [PHP] Problema autenticazione mail PHP 0
C Autenticazione a due fattori FB Social Media Marketing 0
MarcoGrazia Gestire lista campi vuoti in fase di autenticazione jQuery 1
F Sistema di autenticazione e pagamento PHP 3
M Login Autenticazione Sviluppo app per Android 0
E [ASP.Net] Autenticazione integrata windows ASP.NET 0
G get userinfo da autenticazione oauth2 Javascript 0
P Salvare i dati restituiti dopo autenticazione OAuth2 Javascript 0
M Richiesta ajax con autenticazione base non funziona ! Ajax 0
E sistema di autenticazione PHP 4
M Creazione sito con autenticazione utente (registrazione) PHP 3
R Sessioni, cookies e token di autenticazione PHP 0
Y Automatizzare OAuth2 ed autenticazione ASP.NET 0
R problemi di autenticazione PHP 0
B Scaricare file xml dopo autenticazione http PHP 1
M Problema doppia autenticazione HTML e CSS 4
Monital Autenticazione utenti joomla Joomla 0
Q sessione autenticazione PHP 3
M OOP e autenticazione PHP 4
max_400 Proteggere login con autenticazione database PHP 19
U Inviare una mail con autenticazione smtp PHP 4
B autenticazione iis Apache 4
L Autenticazione nascosta su sito Liferay (era: help tirocinio web management) HTML e CSS 0
A Autenticazione automatica su server ftp tramite programma in ASP Classic ASP 2
codesurfer Autenticazione LDAP PHP 0
F dubbio autenticazione windows reti lan Reti LAN e Wireless 4
E Problemi con autenticazione PHP 8
E DISPERATO! autenticazione dietro PROXY PHP 4
N classe per la gestione dell'autenticazione Snippet PHP 0
A Autenticazione sicura e Case sensitive Classic ASP 0
S autenticazione via url server apache Apache 0
S Problema reindizzamento dopo autenticazione PHP 4
M Dreamweaver Autenticazione utente Webdesign e Grafica 2
T Form Autenticazione PHP 1
M [VB6] Crystal report e Autenticazione Win MSSQL Programmazione 0
A Problema con autenticazione e header() PHP 0
I ASP: autenticazione tramite password Classic ASP 4
I Dopo autenticazione non mi redireziona alla pagina. Classic ASP 3
G Autenticazione Utenti: Asp e Access 2000 Classic ASP 1
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1

Discussioni simili