123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- <?php
- // Librairie de fonctions MYSQL
- // Fonction pour afficher les erreurs SQL
- function afficheMessage($message) {
- return "<div style='color:#ff0000; margin-bottom:25px;'>" . $message . "</div>";
- }
- // Fonction de connexion globale au moteur Mysql
- function getConnectionMysql($hote, $db, $usager, $motdepasse) {
- $connection = mysqli_connect($hote, $usager, $motdepasse, $db);
- if (!$connection) {
- die(mysqli_connect_error());
- }
- return $connection;
- }
- // Fonction de connexion à la bd de travail
- // Si vide, connexion principale
- // princiaple = connexion à la bd de travail
- // validationlogin = connexion à la bd des utilisateurs
- function setConnectionSql($typeconn = 'travail') {
- $usager = $_ENV["SQL_USER"];
- $motdepasse = $_ENV["SQL_PW"];
- if ($typeconn == 'travail') {
- $db = "dbogrdax2q4gaw";
- } elseif ($typeconn == 'maitre') {
- $db = "dbjfsfkukkmfd6";
- }
- $hote = "localhost";
- global $connection;
- global $lastConnection;
- $connection = getConnectionMysql($hote, $db, $usager, $motdepasse);
- $lastConnection = $typeconn;
- return $connection;
- }
- // Fonction de construction d'une requête SQL
- // Recoit des paramètres SQL (table, join, etc)
- // Retourne un tableau de résultats
- // Debug=1 (minimal)
- // Debug=2 (complet)
- function executerRequeteSql($paramsql) {
- //Connexion par défaut
- if (!isset($paramsql["connexion"])) {
- $paramsql["connexion"] = "travail";
- }
- if (isset($paramsql["mode"]) && $paramsql["mode"] === "direct") {
- $sql = $paramsql["sql"];
- } else {
- //Type de requête par défaut
- if (!isset($paramsql["type"])) {
- $paramsql["type"] = "SELECT";
- }
- // Au moins, une table est requise pour la requête SQL
- if (empty($paramsql["table"])) {
- echo "Une table est requise au minimum.";
- die;
- }
- // Est-ce qu'il y a des jointures à effectuer pour établir des relations
- // entre plusieurs tables pour la requête SQL
- if (isset($paramsql["join"])) {
- if (count($paramsql["table"]) == 1 && count($paramsql["join"]) == 0) {
- $table = $paramsql["table"][0];
- } elseif (count($paramsql["table"]) == count($paramsql["join"]) + 1) {
- $parenth = str_repeat("(", count($paramsql["join"]));
- $table = $paramsql["table"][0];
- for ($x = 0; $x < count($paramsql["join"]); $x++) {
- if ($x < count($paramsql["join"])) {
- unset($conditionjoin);
- if (is_array($paramsql["join"][$x])) {
- $conditionjoin = array_slice($paramsql["join"][$x], 0, 1, false);
- switch (strtolower($conditionjoin[0])) {
- case "left":
- $conditionjoin = " LEFT ";
- break;
- case "right":
- $conditionjoin = " RIGHT ";
- break;
- default:
- $conditionjoin = "INNER ";
- break;
- }
- } else {
- $conditionjoin = "INNER ";
- }
- }
- $table .= " $conditionjoin JOIN " . $paramsql["table"][$x + 1] . " ";
- if ($x < count($paramsql["join"])) {
- if (is_array($paramsql["join"][$x])) {
- $table .= " ON " . $paramsql["join"][$x][1];
- } else {
- $table .= " ON " . $paramsql["join"][$x];
- }
- }
- if (count($paramsql["join"]) > 0) {
- $table .= ") ";
- }
- }
- $table = $parenth . $table;
- }
- } else {
- $table = $paramsql["table"][0];
- }
- if (isset($paramsql["debug"]) && $paramsql["debug"] == 2) {
- echo "table:" . $table . "<br>\n";
- }
- // Ajout des champs personnalisés
- $a = 0;
- $champs = "";
- if (isset($paramsql["champs"])) {
- if (count($paramsql["champs"]) > 0) {
- foreach ($paramsql["champs"] as $clef => $xchamps) {
- if ($paramsql["type"] == "SELECT") {
- $champs .= ( ($a == 0) ? "" : ",") . $xchamps;
- } elseif ($paramsql["type"] == "UPDATE") {
- $champs .= ( ($a == 0) ? "" : ",") . $clef . "=" . $xchamps;
- } elseif ($paramsql["type"] == "INSERT") {
- $champs .= ( ($a == 0) ? "" : ",") . $clef . "=" . $xchamps;
- }
- $a++;
- }
- } else {
- $champs = $paramsql["champs"];
- }
- } else {
- $champs = "*";
- }
- if (isset($paramsql["debug"]) && $paramsql["debug"] == 2) {
- echo "champs:" . $champs . "<br>\n";
- }
- // Ajout des conditions
- $b = 0;
- unset($xchamps);
- $condition = "";
- if (isset($paramsql["where"])) {
- if (is_array($paramsql["where"])) {
- foreach ($paramsql["where"] as $clef => $xchamps) {
- if ($b == 0) {
- $condition = "WHERE ";
- $car = "";
- } else {
- $car = " AND ";
- }
- $condition .= $car . $xchamps;
- $b++;
- }
- } else {
- $condition = "WHERE " . $paramsql["where"];
- }
- }
- if (isset($paramsql["debug"]) && $paramsql["debug"] == 2) {
- print "condition:" . $condition . "<br>\n";
- }
- // Ajout du ou des tris pour la requête
- $c = 0;
- unset($xchamps);
- $tri = "";
- if (isset($paramsql["ordre"])) {
- if (is_array($paramsql["ordre"])) {
- foreach ($paramsql["ordre"] as $clef => $xchamps) {
- if ($c == 0) {
- $tri = " ORDER BY ";
- $car = "";
- } else {
- $car = ",";
- }
- $tri .= $car . $xchamps;
- $c++;
- }
- } else {
- $tri = " ORDER BY " . $paramsql["ordre"];
- }
- }
- if (isset($paramsql["debug"]) && $paramsql["debug"] == 2 && $tri) {
- echo "tri:" . $tri . "<br>\n";
- }
- // Clause Group By
- $d = 0;
- $groupe = "";
- if (isset($paramsql["groupe"])) {
- if (is_array($paramsql["groupe"])) {
- foreach ($paramsql["groupe"] as $clef => $xgroupes) {
- if ($d == 0) {
- $groupe = " GROUP BY ";
- $car = "";
- } else {
- $car = ",";
- }
- $groupe .= $car . $xgroupes;
- $d++;
- }
- } else {
- $groupe = " GROUP BY " . $paramsql["groupe"];
- }
- }
- if (isset($paramsql["debug"]) && $paramsql["debug"] == 2 && $tri) {
- echo "groupe:" . $groupe . "<br>\n";
- }
- // Limite SQL
- $limite = "";
- if (isset($paramsql["limite"])) {
- $limite = "LIMIT " . $paramsql["limite"];
- }
- if (isset($paramsql["debug"]) && $paramsql["debug"] == 2 && $limite) {
- echo "limite:" . $limite . "<br>\n";
- }
- // Préparation de la requête SQL
- $sql = "";
- switch ($paramsql["type"]) {
- case "SELECT":
- $sql2 = "";
- if (isset($paramsql["compte"])) {
- $compte = $paramsql["compte"];
- $sql2 = sprintf("SELECT count(%s) as compte FROM %s %s", $compte, $table, $condition);
- }
- $sql = sprintf("SELECT %s FROM %s %s %s %s %s", $champs, $table, $condition, $groupe, $tri, $limite);
- break;
- case "UPDATE":
- $sql = sprintf("UPDATE %s SET %s %s", $table, $champs, $condition);
- break;
- case "INSERT":
- $sql = sprintf("INSERT INTO %s SET %s %s", $table, $champs, $condition);
- break;
- }
- }
- // Connexion à la BD
- if (isset($paramsql["connexion"])) {
- $connection = setConnectionSql($paramsql["connexion"]);
- } else {
- $connection = setConnectionSql("travail");
- }
- if (isset($paramsql["debug"])) {
- if ($paramsql["debug"] >= 1) {
- print $sql . "\n<br>";
- }
- } else {
- $paramsql["debug"] = 0;
- }
- //Défini l'ensemble de jeu de caractères à UTF-8
- if ($paramsql["type"] == "SELECT") {
- mysqli_query($connection, "SET NAMES 'utf8'");
- mysqli_query($connection, "SET CHARACTER SET utf8");
- } else {
- mysqli_set_charset($connection, 'utf8');
- }
- if (isset($paramsql["connexion"]) || $paramsql["connexion"] != "travail") {
- $result = mysqli_query($connection, "SET SQL_BIG_SELECTS=1");
- if (!$result) {
- die("Error " . mysqli_error());
- }
- unset($result);
- }
- $result = mysqli_query($connection, "$sql");
- if (!$result) {
- print mysqli_errno($connection) . " / " . mysqli_error($connection) . "<br>";
- die(afficheMessage("Erreur SQL $sql"));
- }
- if (isset($paramsql["compte"])) {
- $result2 = mysqli_query($connection, "$sql2");
- $ligne2 = mysqli_fetch_array($result2, MYSQLI_ASSOC);
- }
- switch ($paramsql["type"]) {
- case "UPDATE":
- return $result;
- case "INSERT":
- return mysqli_insert_id($connection);
- default:
- // Requête de sélection
- // Construction du tableau de données
- if ($result) {
- $tableauresultats = array();
- while ($ligne = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
- if (isset($paramsql["compte"])) {
- $ligne["compte"] = $ligne2["compte"];
- }
- $tableauresultats[] = $ligne;
- }
- if (isset($paramsql["debug"])) {
- if ($paramsql["debug"] >= 1) {
- print "<br><br>Nombre de résultats : " . count($tableauresultats) . "<br><br>";
- }
- if ($paramsql["debug"] == 2) {
- var_dump($tableauresultats);
- }
- }
- mysqli_free_result($result);
- // Retour des données
- return $tableauresultats;
- } else {
- if (isset($paramsql["debug"]) && $paramsql["debug"] == 2) {
- $erreur = mysqli_errno();
- $erreurmsg = mysqli_error();
- if ($erreur != 0) {
- echo $erreurmsg;
- die;
- }
- } else {
- return null;
- }
- }
- break;
- }
- }
- // Fais la mise à jour des infos utilisateur
- function updateSessionUtilisateur($page, $action) {
- // Une session existe ?
- if (session_id() != "" && !empty($_SESSION["utilisateur"]) && !empty($_SESSION["adressecourriel"])) {
- //Requêtes mySQL pour établir la validation.
- $sqlparam["connexion"] = "maitre";
- $sqlparam["table"][] = "administration";
- $sqlparam["where"][] = sprintf("utilisateur = '%s'", addslashes($_SESSION["utilisateur"]));
- $sqlparam["where"][] = sprintf("email = '%s'", addslashes($_SESSION["adressecourriel"]));
- $sqlparam["limite"] = 1;
- $result = executerRequeteSql($sqlparam);
- if ($result && $result[0]["acces"] == 0) {
- unset($sqlparam);
- $sqlparam["connexion"] = "maitre";
- $sqlparam["type"] = "UPDATE";
- $sqlparam["table"][] = "administration";
- $sqlparam["where"][] = sprintf("utilisateur = '%s'", addslashes($_SESSION["utilisateur"]));
- $sqlparam["where"][] = sprintf("email = '%s'", addslashes($_SESSION["adressecourriel"]));
- $sqlparam["champs"]["dern_acces"] = "'" . date("Y-m-d H:i:s") . "'";
- $sqlparam["champs"]["essais"] = 0;
- $sqlparam["champs"]["enligne"] = 1;
- executerRequeteSql($sqlparam);
- ajoutHistoriquePage(addslashes($_SESSION["noutilisateur"]), $page, $action);
- } elseif ($page != "validation.php") {
- fermeSessionUtilisateur(-10);
- }
- } else {
- fermeSessionUtilisateur();
- }
- }
- // Ajout de l'action dans l'historique
- function ajoutHistoriquePage($utilisateur, $page, $action) {
- $sqlparam["connexion"] = "maitre";
- $sqlparam["type"] = "INSERT";
- $sqlparam["table"][] = "historique_page";
- $sqlparam["champs"]["noutilisateur"] = sprintf("%d", $utilisateur);
- $sqlparam["champs"]["page"] = sprintf("'%s'", $page);
- $sqlparam["champs"]["action"] = sprintf("'%s'", $action);
- executerRequeteSql($sqlparam);
- }
|