/** * Authentifier un utilisateur * On commence par rechercher l'utilisateur par son username * puis, s'il existe, on effectue le test d'authentification proprement dit * NB : Avec cette appproche, il faut lire le hash enregistré avant de faire la comparaison * @param $username * @param $password * @return array|bool */ function user_authenticate($username, $password) { global $pdo; $resultat = false; // Mode défensif $queryStr = 'SELECT * FROM ' . PHPAT_DB_TB_USER . ' WHERE ' . get_tb_col_pair(USER_TB_COL_USERNAME); try { $sth = $pdo->prepare($queryStr); $params = array(COLON_CAR . USER_TB_COL_USERNAME => $username); $res = $sth->execute($params); //$sth->debugDumpParams(); //var_dump($res); } catch (PDOException $e) { echo "Echec tentative d'authentification de l'utilisateur {$username} : (" . $e->getMessage() . ')<br/>'; exit; } if ($res) { $user_data = $sth->fetch(PDO::FETCH_ASSOC); // Test de validité du mot de passe if (passwd_check($password, $user_data[USER_TB_COL_PASSWORD_HASH])) { var_dump($user_data); // Retirer le hash des valeurs retournées unset($user_data[USER_TB_COL_PASSWORD_HASH]); $resultat = $user_data; } } return $resultat; }
include "Server_Conf.php"; include "db/_common.php"; session_start(); try { $cn = new PDO("mysql:host=" . HOST_NAME . ";dbname=" . DATABASE_NAME, USER_NAME, PASSEWORD); $cn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $qt = "SELECT username,email,age,password,sex,orientation,region,buts,description,statut,photo FROM user WHERE email=?"; $stmt = $cn->prepare($qt); $stmt->bindValue(1, $_POST['email']); //$stmt->bindValue(2, passwd_encrypt($_POST['pass'])); if ($stmt->execute()) { $ligne = $stmt->fetch(PDO::FETCH_OBJ); $_SESSION['user'] = $ligne; if (!empty($_SESSION['user'])) { if (passwd_check($_POST['pass'], $ligne->password)) { $qt = "UPDATE user SET statut=1 WHERE email='" . $_POST['email'] . "';"; $stm = $cn->prepare($qt); $stm->execute(); header('Location:index.php'); } else { header('Location:alerte.php'); } } else { header('Location:alerte.php'); } } } catch (PDOException $ex) { $_SESSION['messcon'] = '<span style="color:red">Erreur : ' . $ex->getMessage() . '</span>'; echo "Error : " . $ex->getMessage() . ";alert-error"; }