Oppure

Loading
01/04/17 12:04
domenico_rizzo
Non riesco a capire perche' non mi conferma il controllo.... Durante la fase di registrazione salvo nel database l'hash della password attraverso questa funzione:
function encrypt($string){
     return password_hash($string, PASSWORD_DEFAULT);
}

successivamente durante il login uso questo costrutto:
if( password_verify($_POST['password'], $hash_estratto_dal_database) ){ echo "valida"; }
else { echo "non valida"; }

Come mai mi da sempre false, nonostante inserisca la medesima password?? :_doubt:
aaa
01/04/17 12:26
pierotofy
Le chiamate a password_hash e password_verify sembrano corrette, il problema e' altrove.

Posta il codice completo.
Il mio blog: piero.dev
01/04/17 13:14
domenico_rizzo
<?php
session_start();
function encrypt($string){
     return password_hash($string, PASSWORD_DEFAULT);
}
function checkLogin($u, $p){
	global $wpdb;
	$username = $u;
	$password = $p;
	$result_search = $wpdb->get_var( $wpdb->prepare( "SELECT username FROM mytable WHERE username = %s", $username ) );
	if( !is_null($result_search) ){
		$result_search = $wpdb->get_var( $wpdb->prepare( "SELECT password FROM mytable WHERE username = %s", $username ) );
		if( !is_null($result_search) && password_verify($password, $result_search) ){
                     $result_search = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM mytable WHERE EXISTS (SELECT id FROM mytable2) AND username = %s", $username ) );
                     if( !is_null($result_search) )
                        $_SESSION['type'] = 'M';
		     else
                        $_SESSION['type'] = 'U';
		     return true;
		}//password non valida
		else{
			return false;
		}
	}//utente non trovato
	else{
		return false;
	}
}

if ( ! isset($_SESSION['user']) && !isset($_POST["type"]) ){
    echo "
	<ul class='tabs'>
		<li><a href='#scheda1'>Login</a></li>
	</ul>
	<div class='contenitore_tab'>
		<div id='scheda1' class='contenuto_tab'>
			<form action='' id='login_form' method='post'>
				<label for='lusername'>Username o Email</label>
				<input type='text' id='lusername' name='username' placeholder='Your username...'>
				<input type='hidden' name='type' value='login'>
				<label for='lpassword'>Password</label>
				<input type='password' id='lpassword' name='password' placeholder='Your password...'>
				<div style='text-align: center;'>
					<input type='submit' value='Login' /> <input type='button' value='Problemi?'  onclick='window.location.href=\"problemi-accesso/\";' />
				</div>
		    </form>
		</div>
	</div>";
}
else if (isset($_POST["type"]) && !empty($_POST["type"])) {
     $seconds = 4;
     if($_POST["type"] == 'login'){
           $u = str_replace( "'", "", str_replace("\"", "", $_POST['username']) );
           $p = str_replace( "'", "", str_replace("\"", "", $_POST['password']) );
           unset($_POST);
           if( checkLogin($u, $p) ){
                $_SESSION['user'] = $u;
	        echo "<div class='alert alert-success'><strong>Ottimo, Login Avvenuto Con Successo.!</strong>Indirizzamento fra $seconds secondi...</div>";
           }
           else{
	        echo "<div class='alert alert-danger'><strong>Attenzione, Dati Non Corretti.!</strong> Indirizzamento fra $seconds secondi...</div>";
           }
           echo "<script>reloadPage($seconds)</script>";
      }
      else if($_POST["type"] == 'register'){
      }
}
else if ( isset($_SESSION['user']) && isset($_SESSION['type']) ){
echo "<a style='float: right;' class='btn btn-danger' href='logout/' draggable='false' ondragstart='return false;'><i class='fa fa-sign-out' aria-hidden='true'></i> Logout</a><br>";

}
?>
aaa
01/04/17 13:19
pierotofy
E il codice per la registrazione degli utenti?
Il mio blog: piero.dev
01/04/17 13:48
domenico_rizzo
E' in fase di programmazione diciamo :rofl:
Comunque mi sono semplicemente limitato a mettere nel database la password criptata di ciao (che e' y$ups9TIcPNYw5ZKXxePkgtu2edYeYo3p2fwvu4zilYUdEqqDkUt9vG) di un utente e su quello far il controllo, ma mi restituisce comunque falso il controllo
Ultima modifica effettuata da domenico_rizzo 01/04/17 13:50
aaa
01/04/17 19:45
pierotofy
Eh... il problema e' probabilmente nel modo in cui hai inserito la password.
Il mio blog: piero.dev
01/04/17 21:20
domenico_rizzo
Mi sono semplicemente limitato a copiare ed incollare quel valore in un varchar di 250 :noway:
Non capisco proprio :d

Se usassi sha1 al suo posto?
Ultima modifica effettuata da domenico_rizzo 01/04/17 21:23
aaa
02/04/17 12:24
Goblin
Solo un piccolo appunto, un codice scritto in questo modo è passibile di un attacco SQL injection, forse sarebbe il caso di usare query parametriche con funzioni di "Sanitize" delle stringhe.
O sbaglio?
G.
Ibis redibis non morieris in bello