true, // Connexion persistante
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
} catch (PDOException $e) {
erreurSQL($e->getMessage(), "Pb connexion", $dbh);
}
return $dbh;
}
/**
* Ajout de l'utilisateur dont les données sont passée en paramètre
* @param type $dbh chaine de connexion
* @param type $nom nom du nouvel utilisateur
* @param type $prenom prenom du nouvel utilisateur
* @param type $mail courriel du nouvel utilisateur
* @param type $login login, qui devra être unique
* @param type $mdp mot de passe
*/
function ajouterUtilisateur($dbh, $nom, $prenom, $mail, $login, $mdp) {
$ajout = false;
if (!existLogin($dbh, $login)) {
//echo("
mdpChiffre : " . $mdpChiffre);
$mdpChiffre = password_hash($mdp, PASSWORD_DEFAULT); //************ Chiffrement
$sql = "INSERT INTO utilisateur VALUES (NULL, '$nom', '$prenom', '$mail', '$login', '$mdpChiffre');";
$resultat = $dbh->exec($sql);
if ($resultat === false) {
erreurSQL("Pb lors de l ajout d un utilisateur.", $sql, $dbh);
}
$ajout = true;
}
return $ajout;
}
/**
* Recherche si le login existe déjà
* @param type $dbh Connexion
* @param type $login pseudo à vérifier
* @return type booléen, true si le login existe
*/
function existLogin($dbh, $login) {
$sql = "SELECT COUNT(*) FROM utilisateur WHERE login = '$login';";
$resultat = $dbh->query($sql); // Execution de la requete
if ($resultat === false) {
erreurSQL("Pb lors de la recherche du login.", $sql, $dbh);
}
$count = $resultat->fetchColumn(); // Retourne la valeur de la 1ère col de la ligne suivante (param 0 par défaut)
return ($count > 0);
}
/** afficherErreurSQL :
* Ajout message d'erreur dans le fichier log, fin de l'application
* @param $message : message a afficher
* @param $req : requete executee
* @param $dbh : connexion PDO
*/
function erreurSQL($message, $req, $dbh) {
error_log("\n***Erreur SQL*** " . date('Y-m-d H-i-s') . "\tAdresse IP : " . getIp(), TYPE_LOG, DEBUG_SQL);
error_log("\n\tMessage: " . $message, TYPE_LOG, DEBUG_SQL);
error_log("\n\tRequete: " . $req, TYPE_LOG, DEBUG_SQL);
if ($dbh) {
//$erreur = print_r($dbh->errorInfo(), true);
$erreur = $dbh->errorInfo()[2];
error_log("\n\tErreur: " . $erreur, TYPE_LOG, DEBUG_SQL);
}
//echo("Taille log : " . stat(DEBUG_SQL)[7]);
//echo(" - Date dernière modif : " . date("d m Y H:i:s.", filemtime(DEBUG_SQL)));
if (isset($_SESSION)) {
session_unset();
session_destroy();
}
die("
Désolé, site actuellement indisponible
"); } /** * Controle de l'utilisateur, mot de passe non chiffré * @param type $dbh * @param type $pseudo * @param type $mdp * @return type utilisateur trouvé ou false sinon; */ function rechercherUtilisateur($dbh, $login, $mdp) { $sql = "SELECT * FROM utilisateur WHERE login = '$login' AND mdp = '$mdp';"; $resultat = $dbh->query($sql); // Execution de la requete if ($resultat === false) { erreurSQL("Pb lors de la recherche de l utilisateur.", $sql, $dbh); } return $resultat->fetch(); } /** * Recherche de tous les clients * @param type $dbh * @return type jeu d'enregistrements */ function rechercherLesClients($dbh) { $sql = "SELECT * FROM client ORDER BY codePostal;"; $resultat = $dbh->query($sql); // Execution de la requete if ($resultat === false) { erreurSQL("Pb lors de la recherche des clients.", $sql, $dbh); } return $resultat; } /** * Controle de l'utilisateur, mot de passe chiffré * @param type $dbh * @param type $login * @param type $mdp * @return type false si le contrôle a échoué, l'utilisateur sinon */ function controlerUtilisateur($dbh, $login, $mdp) { $sql = "SELECT * FROM utilisateur WHERE login = '$login';"; $resultat = $dbh->query($sql); // Execution de la requete if ($resultat === false) { erreurSQL("Pb lors de la recherche de l utilisateur.", $sql, $dbh); } $user = $resultat->fetch(); $hash = $user ? $user["mdp"] : " "; return password_verify($mdp, $hash) ? $user : false; } /** * Récupération adresse IP du client * @return type */ function getIp() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; } function rechercherLesVisitesDuCommercial($dbh, $id) { $sql = "SELECT idVisite, praNom, praPrenom, praVille, date, heure, remarque FROM visite INNER JOIN praticien ON visite.praNum= praticien.praNum ORDER BY date, heure"; $resultat = $dbh->query($sql); // Execution de la requete if ($resultat === false) { erreurSQL("Pb lors de la recherche des visites.", $sql, $dbh); } return $resultat; } function rechercherLesComptesRendusDuCommercial($dbh, $idVisite){ $sql = "SELECT idCompteRendu, praNom, praPrenom, visite.date, visite.heure, remarque, compteRendu FROM comptesRendus INNER JOIN visite ON visite.idVisite= comptesRendus.idVisite NATURAL JOIN praticien WHERE visite.idVisite = $idVisite"; $resultat = $dbh->query($sql); // Execution de la requete if ($resultat === false) { erreurSQL("Pb lors de la recherche des comptes rendus.", $sql, $dbh); } return $resultat; }