Buongiorno/buonasera.
Come da titolo, vorrei effettuare un controllo sulla password che viene registrata nel form, al momento del login. Siccome sono due file separati e ho usato la funzione password_hash(), come posso effettuare questa operazione? qui di seguito vi lascio i codici:
login:
Codice PHP:
<?php
if(isset($_POST) && ! empty($_POST)){
?>
<?php
// info per collegamento al DB
$server = "127.0.0.1";
$username = "root";
$password = "";
$database = "tes";
$usn = $_POST['email'];
$pass = $_POST['password'];
// connessione al DB
$conn = mysqli_connect($server,$username,$password) or die("Connessione non riuscita");
/* se il DB esiste, effettua la connessione
altrimenti no */
mysqli_select_db($conn,$database) or die("database non presente");
/*controllo dei dati inseriti dall'utente nel form
per verificare correttezza o esistenza dell'utente inserito*/
$query = "SELECT nome,cognome,telefono FROM clienti
WHERE email = '$usn' AND password = '$pass'";
$result = mysqli_query($conn,$query) or die("errore");
$num = mysqli_num_rows($result); // può avere valore 0 o 1
if($num == 0)
echo "<p id='p1'>"."password o username errati"."</p>";
else{
$record = mysqli_fetch_row($result);
echo "accesso effettuato! benvenuto ".$record[0]." ".$record[1];
}
}
?>
form:
Codice PHP:
<?php
if(isset($_POST) && ! empty($_POST)){ // esegue le operazioni solo se nelle caselle di input è stato
// inserito qualcosa, per evitare messaggi di errori di "undefined index"
?>
<?php
function chkEmail($email) // controlla correttezza email
{
// elimino spazi, "a capo" e altro alle estremità della stringa
$email = trim($email);
// se la stringa è vuota sicuramente non è una mail
if(!$email) {
return false;
}
// controllo che ci sia una sola @ nella stringa
$num_at = count(explode( '@', $email )) - 1;
if($num_at != 1) {
return false;
}
// controllo la presenza di ulteriori caratteri "pericolosi":
if(strpos($email,';') || strpos($email,',') || strpos($email,' ')) {
return false;
}
// la stringa rispetta il formato classico di una mail?
if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
return false;
}
return true;
}
// info per collegamento al DB
$server = "127.0.0.1";
$username = "root";
$password = "";
$database = "tes";
// info utente
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$dob = $_POST['dob'];
$gender = $_POST['gender'];
$telefono = $_POST['numero_tel'];
$residenza = $_POST['residenza'];
$citta = $_POST['citta'];
$provincia = $_POST['provincia'];
$cap = $_POST['cap'];
$email = $_POST['email'];
$pass = $_POST['password'];
// connessione al DB
$conn = mysqli_connect($server,$username,$password) or die("Connessione non riuscita");
/* se il DB esiste, effettua la connessione
altrimenti no */
mysqli_select_db($conn,$database) or die("database non presente");
// registrazione utente
if(chkEmail($email)){
$query = "SELECT * FROM clienti
WHERE email = '$_POST[email]'"; // controllo se esiste già l'email inserita
$result = mysqli_query($conn,$query) or die("errore");
$num = mysqli_num_rows($result); // può avere valore 0 o 1
if($num == 1)
die("utente già esistente.");
else {
/* se non esiste lo inserisco */
$hash = password_hash($pass, PASSWORD_DEFAULT); // cifro la password
$insert = "INSERT INTO clienti (nome,cognome,residenza,email,password,sesso,DoB,telefono,citta,provincia,cap)
VALUES (
'$nome',
'$cognome',
'$residenza',
'$email',
'$hash',
'$gender',
'$dob',
'$telefono',
'$citta',
'$provincia',
'$cap')";
if(mysqli_query($conn,$insert))
echo "ok";
else
echo "no";
}
}
else
die("formato email non corretta");
}
?>
grazie per la vostra attenzione.