예제 #1
0
/**
 * 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;
}
예제 #2
0
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";
}