Buongiorno a tutti.
Ho questo quesito, anche se la risposta credo di saperla.
1) Ho criptato con
Codice PHP:
$pss = "kwta0eFD8X";
password_hash($pss, PASSWORD_DEFAULT);
//ottenendo la relativa stringa che ho inserito nella tabella nel campo psw_hash, tipo: text e codifica caratteri: latin1_swedish_ci
//ditemi per favore se il tipo e la codifica vanno bene oppure li devo cambiare
2) Nella tabella tb_utenti ho 3 campi: username, psw(non criptata), psw_hash
3) facendo questo controllo con password_verify($PASSWORD, $risultato['psw_hash']) come di seguito, il campo psw(non criptato) non ha motivo di esistere nella tabella giusto?
Codice PHP:
$USERNAME = $this->connect->real_escape_string($USER);$USERNAME = preg_replace('/[^0-9a-zA-Z]/u',"",strval($USERNAME));$PASSWORD = $this->connect->real_escape_string($PWS);$PASSWORD = preg_replace('/[^0-9a-zA-Z]/u',"",strval($PASSWORD));if($USERNAME!="" && $PASSWORD!=""){ $stmt = $this->connect->prepare("SELECT * FROM ".TB_UTENTI." WHERE UserName = ?"); $stmt->bind_param('s', $USERNAME); // 's' specifies the variable type => 'string' $stmt->execute(); $result = $stmt->get_result(); $risultato = $result->fetch_assoc(); if($risultato!=NULL){ if (password_verify($PASSWORD, $risultato['psw_hash'])) {
$_SESSION['login'] = true;
//etc etc
}
else{ echo "Non è abilitato."; }
} else{ echo "Non sei registrato oppure i dati inseriti per l'autenticazione non sono validi"; } $stmt->free_result();}
4) la password che sceglie l'utente, mi serve soltanto per creare quella criptata con password_hash($pss, PASSWORD_DEFAULT), e quindi non la devo memorizzare da nessuna parte. Giusto?
Quindi, nel caso, l'utente la dimentica, glie ne faccio scegliere una nuova, ma che verrà utilizzata soltanto per generare una nuova password criptata. Giusto?
Poi, vi scriver� per altro.
Grazie ancora e ancora.