JeromeDevome / GRR

GRR Officiel - Copyright Team DEVOME
https://grr.devome.com
GNU General Public License v2.0
84 stars 51 forks source link

GRR 3.5.1 Erreur fatale si une ressource a un apostrophe #290

Closed michaelpiche closed 1 year ago

michaelpiche commented 1 year ago

Décrivez le bogue J'ai une ressource qui a un apostrophe dans son nom ("Salle d'exposition"). Si un utilisateur réserve cette ressource, j'ai une erreur fatale dans la page de consultation des réservations par mois (month_all.php).

PHP Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exposition'' at line 1 in [...]\include\mysql.inc.php:68 Stack trace: [...]\include\mysql.inc.php(68): mysqli_query(Object(mysqli), 'SELECT whocan...') [...]\include\functions.inc.php(3924): grr_sql_query1('SELECT whocan...') [...]\month_all.php(196): verif_acces_ressource('', '1106 - Salle d'...') {main} thrown in ***\include\mysql.inc.php on line 68

Infos GRR Version de GRR : 3.5.1 Version PHP : 8.2 Problème suite à une installation ou mise à jour : L'erreur fatale n'est pas présente avec GRR 3.5.0

Contexte supplémentaire En modifiant le fichier month_all.php, ça élimine l'erreur fatale. J'ai changé _roomname pour _roomid, car verif_acces_ressource() et verif_acces_fiche_reservation() utilise le _roomid et non le _roomname.

Avant (lignes 196 à 208) :

            $verif_acces_ressource[$row['room_name']] = verif_acces_ressource($user_name, $row['room_name']);
            $acces_fiche_reservation[$row['room_name']] = verif_acces_fiche_reservation($user_name, $row['room_name']);
            $t = max((int)$row['start_time'], $month_start);
            $end_t = min((int)$row['end_time'], $month_end);
            $day_num = date("j", $t);
            if ($enable_periods == 'y')
                $midnight = mktime(12, 0, 0, $month, $day_num, $year);
            else
                $midnight = mktime(0, 0, 0, $month, $day_num, $year);
            while ($t < $end_t)
            {
                $d[$day_num]["id"][] = $row['id'];
                $d[$day_num]["id_room"][] = $row['room_name'];

Après (lignes 196 à 208) :

            $verif_acces_ressource[$row['room_id']] = verif_acces_ressource($user_name, $row['room_id']);
            $acces_fiche_reservation[$row['room_id']] = verif_acces_fiche_reservation($user_name, $row['room_id']);
            $t = max((int)$row['start_time'], $month_start);
            $end_t = min((int)$row['end_time'], $month_end);
            $day_num = date("j", $t);
            if ($enable_periods == 'y')
                $midnight = mktime(12, 0, 0, $month, $day_num, $year);
            else
                $midnight = mktime(0, 0, 0, $month, $day_num, $year);
            while ($t < $end_t)
            {
                $d[$day_num]["id"][] = $row['id'];
                $d[$day_num]["id_room"][] = $row['room_id'];
ynaessens commented 1 year ago

Bonjour, merci pour ce signalement et l'analyse qui l'accompagne. J'intègre les modifications dès que possible. Cordialement, YN

ynaessens commented 1 year ago

Bonjour, ce commit https://github.com/JeromeDevome/GRR/commit/14669d9c16f3c752c041216ffb1e01c0852ef44a devrait résoudre le problème soulevé. Cependant il me semble que les apostrophes posent problème lors de l'enregistrement en base de données : vous n'avez rien remarqué de tel ? Cordialement, YN

michaelpiche commented 1 year ago

Bonjour, Je n'avais pas essayé d'ajouter une nouvelle ressource vu que je partais d'un GRR 3.5.0 avec des données existantes, mais en effet il semble y avoir un problème lors de l'enregistrement. Après l'ajout d'une ressource avec un apostrophe (ex : Atelier d'exposition), les apostrophes ne s'affichent pas et j'ai ' qui s'affiche à la place (Ex : Atelier d'exposition). Cordialement,

ynaessens commented 1 year ago

A priori le commit suivant résout le problème des apostrophes https://github.com/JeromeDevome/GRR/commit/8d874708b015ebdfe71d359f10b51f4ad02a7c3c On m'avait demandé de modifier clean_input(), il y aura peut-être d'autres ajustements à faire. Merci pour votre contribution. Cordialement, YN

michaelpiche commented 1 year ago

Bonjour, Le commit corrige le problème de mon côté. J'ai constaté que la description avait aussi le même problème de conversion d'apostrophes (admin/admin_edit_room.php, ligne 41) Cordialement,

ynaessens commented 1 year ago

Merci, on va donc appliquer le même remède... https://github.com/JeromeDevome/GRR/commit/791e825efa806dad2c41fb551852e6ef6ac8c088 en espérant que cela suffira ! Cordialement, YN