Completare iscrizione con link attivazione

  • Creatore Discussione Creatore Discussione psw_md5
  • Data di inizio Data di inizio

psw_md5

Nuovo Utente
29 Nov 2015
13
0
0
Salve ragazzi,
devo fare un sito in cui devo consentire agli utenti di registrarsi compilando un primo form di registrazione. Successivamente il sistema invierà all’indirizzo mail indicato una mail di invito in cui è indicata la URL a cui accedere per poter completare la registrazione. Il completamento della registrazione avviene nella url indicata nella mail di invito, in cui l’utente fornisce un nome_utente e una password.
Ho svolto in questa maniera qui

registrazione.php


PHP:
<?php

ob_start(); 
// includo il file di connessione al database 
include ('configurazione.php');  
?>
 <html> 

<div class="row">

	<div class="col-md-4 col-md-offset-4" background-color="green" >
	<!-- Titolo -->
	<h1 class="text-center" >Registrazione</h1><br>
	
	<h5 class="text-center" >File contrassegnati da asterisco sono obbligatori</h5><br>
	
	
	<form action='?inviodati=ok' method='POST'>
	  
	  
	  <!--- form  -->
	  
				
		  <div class="form-group">
			<label>Nome*</label>
			<input class="form-control" type='text' name='nome' class="inputbox select validate[required] " value="<?=(isset($_POST['nome']) ? $_POST['nome'] : '')?>"></input>
		  </div>
		  
		  <div class="form-group">
			<label>Cognome*</label>
			<input class="form-control" type='text' name='cognome' class="inputbox select validate[required] " value="<?=(isset($_POST['cognome']) ? $_POST['cognome'] : '')?>"></input>
		  </div>
		  
		  <div class="form-group">
			<label>Ruolo*</label>
			<select class="form-control" name="ruolo">
                    <option selected>Docente</option>
                    <option>Studente</option>
                    </select> 
		  </div>
		  
		  <div class="form-group">
		  <label>Email*</label>
		   <input class="form-control" type='text' name='mail' value="<?=(isset($_POST['mail']) ? $_POST['mail'] : '')?>"></input>
          </div> 
		  
		 <br>
		 <br>
		 <div>
		  <button  type="submit" class="btn btn-primary btn-lg btn-block"  value='Registrati' >Submit</button>
		</form>
	  		  
 </div>
</div>	   

</html>
<?php
//funzione per il classico check del formato mail
function chkEmail($mail)
{
	// elimino spazi, "a capo" e altro alle estremità della stringa
	$mail = trim($mail);

	// se la stringa è vuota sicuramente non è una mail
	if(!$mail) {
		return false;
	}

	// controllo che ci sia una sola @ nella stringa
	$num_at = count(explode( '@', $mail )) - 1;
	if($num_at != 1) {
		return false;
	}

	// controllo la presenza di ulteriori caratteri "pericolosi":
	if(strpos($mail,';') || strpos($mail,',') || strpos($mail,' ')) {
		return false;
	}

	// la stringa rispetta il formato classico di una mail?
	if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $mail)) {
		return false;
	}
	return true;
}

//controllo il formato della mail se è studente
function chkEmailStud($mail)
{
	
	if (strstr($mail, "@studenti.uniba.it")=="@studenti.uniba.it")
	{
		
		return true;
	}
	echo "Utilizza il formato ''[email protected]'' per gli studenti. ";
	return false;
}

//controllo il formato della mail se è docente
function chkEmailDoc($mail)
{
	
	if (strstr($mail, "@uniba.it") == "@uniba.it")
	{
		return true;
	}
	echo " Utilizza il formato ''[email protected]'' per i docenti. ";
	return false;
}


// controllo che il form sia stato inviato 
if ( isset($_GET['inviodati']) && $_GET['inviodati'] == "ok") {



// recupero i dati inviati con il form
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$ruolo = $_POST['ruolo'];
$mail = $_POST['mail'];


//  controllo che i campi siano stati tutti compilati
if ($nome == TRUE && $cognome == TRUE && $ruolo == TRUE && $mail == TRUE  )  {



// controllo se il campo mail è stato scritto in maniera errata
if(chkEmail($mail)) {
	$isstudente = strstr($ruolo,'Studente');
	$isdocente = strstr($ruolo,'Docente');
	
if($isstudente == TRUE){
		$check = chkEmailStud($mail);
} else 
		
if($isdocente == TRUE){
		$check = chkEmailDoc($mail);}

if($check){

// controllo se l'email è presente già nel database
$sql = mysql_query("SELECT * FROM utenti WHERE mail = '$mail'") or die (mysql_error());
$num_rows = mysql_num_rows($sql); 
if ( $num_rows == 0 ) {

//inserisco i dati nel database
mysql_query("INSERT INTO utenti
             (nome, cognome, ruolo, mail )
             VALUES 
             ('$nome','$cognome','$ruolo', '$mail')") OR DIE(mysql_error());



// e invio una mail con la riuscita registazione
define("EOL", "\r\n");
$header = "MIME-Version: 1.0" . EOL;
$header .= "Content-Type: text/html" . EOL;
$header .= "From: Consegna Elettronica <[email protected]>\n";
$header .="X-Priority: 2\r\n";
$destinatario = $mail; 
$object = "Registrazione conferma elettronica";
$message = "

Congratulazioni! La tua registrazione è andata a buon fine. <br>
Per confemare vai alla pagina http://consegnaelettronica.altervista.org/Consegnaelettronica/paginacontinuaregistrazione.php?user=$mail;
<br>Da questo indirizzo potrai completare la tua registrazione inserendo username e password che utilizzerai per il login.<br>
Ecco un riepilogo dei tuoi dati: <br>

<br>Questo il nome: $nome<br>
<br>Questo il cognome: $cognome<br>
<br>Questo il ruolo: $ruolo<br>
<br>Questa la mail: $mail<br>

  ";
mail($destinatario, $object,$message, $header);

header("location: paginaconfermaregistrazione.php");




} else{

echo'Email è già in uso!';

}

} else {
	
echo "Mail non vailda!\n";	
	
}

}else{

echo "Questa mail non e' consentita.";

}

} else {

echo "I campi contrassegnati sono obbligatori"; 

}
}

?>

paginacontinuaregistrazione.php



PHP:
<?php
ob_start(); 
// includo il file di connessione al database 
include ('configurazione.php');

?>
<html>
<title>Continua registrazione</title>

	      
                <span class="Stile147">Adesso scegli un username e una password</span> 

<form action='?inviodati=ok' method='POST'>
            
              <p><span class="Stile147">Account</span></p>
              <table width="700" border="1" cellpadding="10" cellspacing="10" bordercolor="#CCCCCC">
                <tr>
                  <td width="50%" bordercolor="#CCCCCC" bgcolor="#EAF1F5"><span class="Stile145"><b>Username</b></span><br>
                    <input type='text' name='username' value="<?=(isset($_POST['username']) ? $_POST['username'] : '')?>"></td>
                  
                </tr>
                <tr>
                  <td colspan="2" bordercolor="#CCCCCC"><span class="Stile145"><b>Password</b></span><br>
                    <input type='password' name='password'></td>
                  </tr>
                <tr>
                  <td colspan="2" bgcolor="#EAF1F5"><span class="Stile145"><b>Confirm Password</b></span><br>
                      <input type='password' name='confirm_password'></td>
                  </tr>
              </table>
              <p>
                <input type='submit' value='Submit'>
                <br>
          </p>
              </form>
<?php
$mail = $_GET['user'];

// controllo che il form sia stato inviato 
if ( isset($_GET['inviodati']) && $_GET['inviodati'] == "ok") {



// recupero i dati inviati con il form
$username = $_POST['username'];
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];


//  controllo che i campi siano stati tutti compilati
if ($username == TRUE && $password == TRUE && $confirm_password == TRUE )  {



// controllo se l'username è presente già nel database
$sql = mysql_query("SELECT * FROM utenti WHERE username = '$username'") or die (mysql_error());
$num_rows = mysql_num_rows($sql); 
if ( $num_rows == 0 ) {



//controllo se la password abbia più di 6 caratteri
if (strlen($password) >= 6)
        {
     

//ora controllo se le passw inserite siano identiche
if ( $password == $confirm_password ) {

$pass_md5 = md5($password);


//inserisco i dati nel database
//mysql_query('UPDATE utenti SET username = '$username', password='$pass_md5'  WHERE mail = '$mail'') OR DIE(mysql_error());
mysql_query("UPDATE utenti SET username ='$username', password ='$pass_md5' WHERE mail = '$mail'")OR DIE(mysql_error());


//header("location: paginacompletaregistrazione.php");


} else {

echo "Passwords do not match";

}

}else { echo "Password is too short. It must be at least 6 characters long.";

}


} else{

echo'Username address already in use';

}



} else {

echo "Marked fields are mandatory"; 

}
}

?>

Va tutto bene, tranne l'update dei dati. Ovvero nella seconda parte della registrazione, quando inserisco username e password e vado a fare l'update nel database, la query va a buon fine ma non viene effettuato nessun aggiornamento dei campi username e password. (ho provato a stampare anche la $mail = $_GET['user']; e mi esce effettivamente la mail dal quale si arriva). Come è possibile? Vi prego aiutatemi, sto perdendo la testa.

Dimenticavo...questo lo script database:

create database sito

use sito;


CREATE TABLE IF NOT EXISTS `utenti` (
`nome` varchar(45) NOT NULL,
`cognome` varchar(60) NOT NULL,
`ruolo` varchar(20) NOT NULL,
`mail` varchar(60) NOT NULL,
`username` varchar(45) NOT NULL,
`password` varchar(45) NOT NULL,
`isAmministratore` bit(11) DEFAULT b'0',
PRIMARY KEY (`mail`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
ciao
così a naso mi sembra ok
una cosa per verificare l'email fai semplicemente
PHP:
<?php
function chkEmail($mail){
	$mail=filter_var($mail, FILTER_SANITIZE_EMAIL);
	if(filter_var($mail, FILTER_VALIDATE_EMAIL)){
		return TRUE;
	}else{
		return FALSE;
	}
}
?>
poi nella tabella manca l'identificativo del record (generalmente chiamato id)
id int(9) autoincrement primarikey

dimenticavo dopo la verifica formale dell'indirizzo fai gli altri controlli che ti servono
 
Ultima modifica:
Ciao borgo italia! Grazie per il consiglio, ma il mio problema è un altro.
L'update nella continua della registrazione non va. La query non da errore, però nel database nei campi username e password non viene scritto nulla. Diciamo che era questo il mio problema!
Grazie comunque per la risposta :)
 
ciao
io farei così, però devi provare perchè non ho fatto il db
se leggi i commenti si dovrebbe capire quello che ho fatto
ho eliminato tutto l'html superfluo per risparmiare spazio
pagina registrazione e invio email
PHP:
<?php
ob_start(); 
// includo il file di connessione al database 
require_once('configurazione.php');  
//a me le funzioni piace tenerle all'inizio, ma è lo stesso
function  chkEmail($mail, $r){
	//per $r il valore della scelta del ruolo
	$mail=filter_var($mail, FILTER_SANITIZE_EMAIL);//questa potrebbe esswere messa anche fuori sul $_POST
	if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
		echo "non è un indirizzo valido";
		return FALSE;
	}else{
		switch($r){
			case "docente":
				if (strstr($mail, "@uniba.it") == "@uniba.it"){
        			return true;
				}else{
					echo " Utilizza il formato ''[email protected]'' per i docenti.";
					return false;
				}
				break;
			case "studente":
				if (strstr($mail, "@studenti.uniba.it")=="@studenti.uniba.it"){
        			return true;
    			}else{
					echo "Utilizza il formato ''[email protected]'' per gli studenti.";
					return false;
				}
		}
	}
}
?>
<!-- usa il meno possibile il GET sono sempre potenzialmente pericolosi
usa il pulsante di submit o se usi type button ricorda che ci vuole js
io preferisco sempre il type submit che poi abbelisci con i css
 -->
 <!-- tralascio div e label per risparmiare spazio -->
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='POST'>    
	<input class="form-control" type='text' name='nome' class="inputbox select" validate[required] value="<?=(isset($_POST['nome']) ? $_POST['nome'] : '')?>" />
	<input class="form-control" type='text' name='cognome' class="inputbox select" validate[required] value="<?=(isset($_POST['cognome']) ? $_POST['cognome'] : '')?>" />
	<select class="form-control" name="ruolo"><!-- ti sei dimenticato il value-->
		<option selected value='docente'>Docente</option>
		<option value='studente'>Studente</option>
	</select> 
	<input class="form-control" type='text' name='mail' value="<?=(isset($_POST['mail']) ? $_POST['mail'] : '')?>"/>
	<input type="submit" name="inviodati" value="inviodati">
	<!--<button  type="submit" class="btn btn-primary btn-lg btn-block"  value='Registrati' name='inviodati'>Submit</button>-->
</form>     
<?php
if(isset($_POST['inviodati'])){
	// recupero i dati inviati con il form
	$nome = trim($_POST['nome']);
	$cognome = trim($_POST['cognome']);
	$ruolo = $_POST['ruolo'];
	$mail = strtolower(trim($_POST['mail']));//tutti i caratteri minuscoli
	//attento i dati poi vanno nel db quindi necessitano i controlli
	//esempio nome e cognome devono essero composti di soli caratteri alfabetici
	//  controllo che i campi siano stati tutti compilati
	if ($nome !="" && $cognome !="" && $ruolo !=""&& $mail !=""){
		if(chkEmail($mail, $ruolo)){
			$sql = mysql_query("SELECT * FROM utenti WHERE mail = '$mail'");
			if ( mysql_num_rows($sql) == 0 ){
				//per un minimo di sicurezza
				$nome=addslashes($nome);
				$cognome=addslashes($cognome);
				//SPERO CHE TU ABBIA AGGIUNTO IL CAMPO ID NELL TABELLA utenti
				$ris=mysql_query("INSERT INTO utenti(nome, cognome, ruolo, mail) VALUES ('$nome','$cognome','$ruolo', '$mail')");
				//ricavo l'id con cui è stato inserito il record
				$id_da_trasm=mysql_insert_id($ris);
				//tutto il bla bla dell'email.....
				$message = "...Per confemare vai alla pagina http://consegnaelettronica.altervista.org/Consegnaelettronica/paginacontinuaregistrazione.php?id=$id_da_trasm;..";
				//ecc.....
			}
	
	}
	header( "refresh:5;url=index.php");
}
ob_end_flush();//da mettere dopo il tag </html>
?>
pagina conferma registrazione
PHP:
<?php
ob_start(); 
if((int)$_GET['id'] == 0 || $_GET['id'] ==""){
	//probabilmente un tentativo di accesso non autorizzato
	header("location: index.php");//o dove preferisci
	exit();
}
// includo il file di connessione al database 
require_once ('configurazione.php');
?>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='POST'>
	<table width="700" border="1" cellpadding="10" cellspacing="10" bordercolor="#CCCCCC">
		<tr>
			<td width="50%" bordercolor="#CCCCCC" bgcolor="#EAF1F5">
				<input type='text' name='username'>
			</td>
		</tr>
		<tr>
			<td colspan="2" bordercolor="#CCCCCC">
				<input type='password' name='password'>
			</td>
		</tr>
		<tr>
			<td colspan="2" bgcolor="#EAF1F5">
				<input type='password' name='confirm_password'>
			</td>
		</tr>
		<tr>
			<td colspan="2" bgcolor="#EAF1F5">
				<input name="id" type="hidden" value="<?php echo $_GET['id'];?>">
				<input type='submit' value='Submit' name'invia'>
			</td>
		</tr>
	</table>
<?php
// controllo che il form sia stato inviato 
if (isset($_POST['invia'])){
	// recupero i dati inviati con il form
	$username = trim($_POST['username']);
	$password = trim($_POST['password']);
	$confirm_password = trim($_POST['confirm_password']);
	$id=trim($_POST['id'];
	// controllo che i campi siano stati tutti compilati
	$errore="";
	if ($username != '' && $password != '' && $confirm_password !='')
		// controllo se l'username è presente già nel database
		$sql = mysql_query("SELECT * FROM utenti WHERE username = '$username'") or die (mysql_error());
		$num_rows = mysql_num_rows($sql); 
		if ( $num_rows > 0 ) $errore.="username esistente, modifica<br>";
	}else{
		$errore.="non hai reimpito tutti i campi<br>";
	}
	if (strlen($password) < 6) $errore.="la password deve essere di almeno 6 caratteri<br>";
	if ( $password != $confirm_password )$errore.="la password e conferma non coincidono<br>";
	if($errore != ''){
		//ci sono stati degli errori
		echo $errore;
		//dai il tempo di leggere e rimandi al form
		header( "refresh:5;url=$_SERVER['PHP_SELF']"); 
	}else{
		$pass_md5 = md5($password);
		$query="UPDATE utenti SET username ='$username', password ='$pass_md5' WHERE id=$id";
		if(mysql_query($query)){
			echo "registrazione ok";
		}else{
			echo "c'è stato un errore di connessione riprova più tardi ok";
		}
		header( "refresh:5;url=index.php");//o dove preferisci
	}
}
ob_end_flush();//da mettere dopo il tag </html>
?>
poi un suggerimento abbandona la funzione mail() spesso da problemi di invio, usa la classe mailerphp vedi https://www.mrw.it/php/inviare-email-classe-phpmailer_7047.html
tra l'altro è comoda per inviare l'email in formato html quindi il link che metti nell'email diventa un vero link
un'altra cosa ho ancora usato le funzioni di php mysql cdonsidera però che sono deprecate devi passare alle nuove mysqli

spero che funzioni, se non funzione posta gli errori che riporta
 
Grazie mille Borgo Italia.
Adesso è andato tutto a buon fine! Sei stato gentilissimo!
Ultima domanda le funzioni mysql sono deprecate, mi hai scritto.
Puoi spiegarti meglio? Quali dovrei utilizzare?
 
Ah, ho solo un problema...
Quando commetto un errore (username già esistente o password troppo corta), la pagina fa il refresh e mi perde l'id che che ho passato tramite l'indirizzo http e quindi l'update non va più a buon fine.
Come posso risolvere?
 
ciao
dovresti usare le sessioni
prova a fere queste modifiche

PHP:
<?php
ob_start();
session_start();
if((int)$_GET['id'] == 0 || $_GET['id'] ==""){
    //probabilmente un tentativo di accesso non autorizzato
    header("location: index.php");//o dove preferisci
    exit();
}else{
	$_SESSION['id']=$_GET['id'];
}
//.....
?>
e nel form
PHP:
		<!-- ....... -->
		<tr>
            <td colspan="2" bgcolor="#EAF1F5">
                <input name="id" type="hidden" value="<?php echo $_SESSION['id'];?>">
                <input type='submit' value='Submit' name'invia'>
            </td>
        </tr>
		<!-- ....... -->
e dove finisci
PHP:
<?php
//...........
}else{
            echo "c'è stato un errore di connessione riprova più tardi ok";
        }
        $_SESSION=array();//avendo finito annulli la sessione
		header( "refresh:5;url=index.php");//o dove preferisci
    }
}
ob_end_flush();//da mettere dopo il tag </html>
?>
 
Questa parte di codice sul controllo degli accessi non autorizzati mi da problemi.
Quando compilo i campi non fa nessun update e mi rimanda a registrazione e quindi non effettua nessun controllo e nessun comando PHP che viene dopo.
Ed è strano, visto che l'id risulta avere un valore e quindi dovrebbe superare tranquillamente il primo if

PHP:
<?php 
ob_start(); 
session_start(); 
if((int)$_GET['id'] == 0 || $_GET['id'] ==""){ 
    //probabilmente un tentativo di accesso non autorizzato 
    header("location: index.php");//o dove preferisci 
    exit(); 
}else{ 
    $_SESSION['id']=$_GET['id']; 
} 
//..... 
?>
 
E comunque anche così facendo l'id continuo a perderlo e non appena inserisco due password non corrispondenti o un username già presente, mi ricarica la pagina perdendo l'id.
Lo posso notare dall'indirizzo web che prende il nome del file e non ha più informazione che ci recupera l'id.
Non so se mi sono spiegato :)
 
ciao
prima della modifica funzionava, a parte perdere l'id in caso di errore?
cioè se non facevi errori, uppava?

poi prima mi ero dimenticato
le nuove funzioni si chiamano mysqli e sono abbastanza simili alle vecchie ma non completamente uguali, dalla versione 5 di php le vecchie mysql non saranno più supportate
 
Sì sì.
Se non commetto errori fa l'upload di username e password nel database.
Non riesco a risolvere questo problema della perdita dell'id.
Hai qualche idea? :confused:
 
ciao
il problema è che per provarlo e vedere esattamente dove è il problema dovrei costruirmi il db, quindi vado un po' per tentativi
prova a correggere la parte iniziale
PHP:
<?php
ob_start();
session_start();
if(((int)$_GET['id'] == 0 || $_GET['id'] =="") && !isset($_SESSION['id'])){
    //probabilmente un tentativo di accesso non autorizzato
    header("location: index.php");//o dove preferisci
    exit();
}elseif(!isset($_SESSION['id'])){
    $_SESSION['id']=$_GET['id'];
}
//poi aggiungi questo (che poi toglierai)
var_dump($_GET['id']); echo "<br>"; var_dump($_SESSION['id']); echo "<br>";
//fai delle prove e dimmi cosa riporta al primo ingresso e provando a fare un errore
//.....
?>
in questo modo
il primo if se non c'è il get e non c'è ancora la sessione esce, se la sessione esiste invece continua
il secondo (eleseif) c'è il get e se la sessione non esiste la crea, se invece la sessione gia esiste non la tocca
 
Ciao Borgo Italia, ma se volessi mantenere la selezione di un menù a tendina (quando viene commesso un errore) come posso fare?
Ad esempio qui

PHP:
<label>Ruolo*</label>
			<select class="form-control" name="ruolo" id="ruolo"    onchange='changeRuolo();controllaSubmit(invioDati)' >
					<option value="docente">Docente</option>
                      <option value="studente">Studente</option>
             </select>
 
Scusate se mi intrometto ma tanto per dire due cose :D
La prima è che non c'è bisogno di fare questo:
PHP:
// recupero i dati inviati con il form
    $nome = trim($_POST['nome']);
    $cognome = trim($_POST['cognome']);
    $ruolo = $_POST['ruolo'];
    $mail = strtolower(trim($_POST['mail']));//tutti i caratteri minuscoli
Il trim si può far funzionare su tutti gli array e $_POST è un array, quindi:
PHP:
function trimming( &$valore ) {
    $value = trim( $valore, " \t\n\r\0\x0B" );
}
 array_walk( $_POST, 'trimming' );
e sei a cavallo di un cavallo :D
E ti spiego anche la seconda stringa, in pratica dice a trim di eliminare sia all'inizio che alla fine di ogni elemento dell'array: gli spazi, le tabulazioni, i caratteri di fine riga, i ritorni a capo, i caratteri NUL e le tabulazioni verticali!
Perché inserendo i dati in un form si può giocare a nascondere script proprio tramite questi caratteri, e siccome a toglierli ci vuole poco... gioco fatto.

Altra cosa più importante, ma davvero stai realizzando un sito per l'università e usi ancora md5? O se preferisci ma davvero usi ancora md5?
Passi che metti account e password nella stessa tabella, passi che non usi un "grano di sale" ma usa almeno una criptazione più complessa.
Dici di usare una password di almeno 6 caratteri, ma sei caratteri in md5 con un pc di casa e un buon dizionario la password si scopre un mezzo secondo, con 8 caratteri già ci vuole un po' più di tempo, se poi usi una codifica come sha256 che ha almeno un hash formato da 64 caratteri, molto più sicura di un md5.
Per generarla il PHP mette a disposizione la funzione hash, quindi $password = hash( 'sha256', $password ); in questo modo viene generato un hash di 64 bit di una frase generica ( che abbia almeno caratteri e numeri ).
Scusatemi se sono entrato a gamba tesa :)
 
Ultima modifica:
Il sito non è per l''università ma per un esame universitario.
Essendo alle prime armi in PHP e non avendo dall'università ottimi insegnamenti (questo è un problema tutto e solo italiano, dovresti saperlo) sto cercando di imparare da solo a programmare in PHP. Sincero è il primo sito.
Non sapevo di sha256. Domanda, poi per il login? Come traduco la password in sha256 presente nel database confrontandola con quella inserita dall'utente in paginalogin? prima con MD5 facevo "WHERE password = MD5('$password')". Adesso?
 

Discussioni simili