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; }