From 3ed9f8e1fcfcaba2f00ae4d2efa03cef327c2adc Mon Sep 17 00:00:00 2001 From: stephan Date: Thu, 28 May 2026 11:18:58 -0400 Subject: [PATCH] code qr vehicule --- ms1_kc_set.php | 182 +++++++++++++++++++++++++++++++++++++++++++ php/inc_settings.php | 3 + 2 files changed, 185 insertions(+) create mode 100644 ms1_kc_set.php diff --git a/ms1_kc_set.php b/ms1_kc_set.php new file mode 100644 index 0000000..704289a --- /dev/null +++ b/ms1_kc_set.php @@ -0,0 +1,182 @@ + + * Numéro affiché : saisie + KEYCHAIN_HTTP_EDIT_SHIFT (ex. 8 → pk 108). + */ +$blnNoMaintenance = true; +session_start(); + +require_once __DIR__ . '/php/inc_fonctions.php'; + +header('X-Robots-Tag: noindex, nofollow'); +header('Cache-Control: no-store, no-cache, must-revalidate'); + +global $objDatabase; + +$strSecret = isset($_GET['k']) ? (string) $_GET['k'] : ''; +$blnAuth = ($strSecret !== '' && hash_equals(KEYCHAIN_HTTP_EDIT_SECRET, $strSecret)); + +if (!$blnAuth) { + http_response_code(403); + echo '403

Accès refusé.

'; + exit; +} + +if (empty($_SESSION['kc_edit_csrf'])) { + $_SESSION['kc_edit_csrf'] = bin2hex(random_bytes(16)); +} +$strCsrf = $_SESSION['kc_edit_csrf']; +$strBaseUrl = htmlspecialchars($_SERVER['PHP_SELF'] . '?k=' . rawurlencode($strSecret), ENT_QUOTES, 'UTF-8'); + +$strMessage = ''; +$strMessageClass = ''; +$intPk = 0; +$strCurrentHttp = ''; +$blnShowUrlForm = false; + +function kc_set_resolve_pk($input) +{ + return intval($input) + KEYCHAIN_HTTP_EDIT_SHIFT; +} + +function kc_set_validate_url($url) +{ + $url = trim($url); + if ($url === '') { + return false; + } + if (!filter_var($url, FILTER_VALIDATE_URL)) { + return false; + } + $parts = parse_url($url); + if (empty($parts['scheme']) || !in_array(strtolower($parts['scheme']), ['http', 'https'], true)) { + return false; + } + return $url; +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $strPostedCsrf = isset($_POST['csrf']) ? (string) $_POST['csrf'] : ''; + if (!hash_equals($strCsrf, $strPostedCsrf)) { + $strMessage = 'Jeton invalide. Rechargez la page.'; + $strMessageClass = 'err'; + } else { + $strAction = isset($_POST['action']) ? (string) $_POST['action'] : ''; + + if ($strAction === 'load') { + $intPk = kc_set_resolve_pk(isset($_POST['pk_input']) ? $_POST['pk_input'] : 0); + if ($intPk <= 0) { + $strMessage = 'Numéro invalide.'; + $strMessageClass = 'err'; + } else { + $sql = 'SELECT key_chain_http FROM key_chain WHERE pk_key_chain = ' . $intPk; + $row = $objDatabase->fxGetRow($sql); + if ($row === null) { + $strMessage = 'Aucune ligne pour pk ' . $intPk . ' (saisie + ' . KEYCHAIN_HTTP_EDIT_SHIFT . ').'; + $strMessageClass = 'err'; + } else { + $strCurrentHttp = $row['key_chain_http']; + $blnShowUrlForm = true; + } + } + } elseif ($strAction === 'save') { + $intPk = intval(isset($_POST['pk']) ? $_POST['pk'] : 0); + $strNewHttp = kc_set_validate_url(isset($_POST['key_chain_http']) ? $_POST['key_chain_http'] : ''); + if ($intPk <= 0) { + $strMessage = 'PK invalide.'; + $strMessageClass = 'err'; + } elseif ($strNewHttp === false) { + $strMessage = 'URL invalide (http ou https requis).'; + $strMessageClass = 'err'; + } else { + $sqlCheck = 'SELECT pk_key_chain FROM key_chain WHERE pk_key_chain = ' . $intPk; + if ($objDatabase->fxGetRow($sqlCheck) === null) { + $strMessage = 'Ligne introuvable (pk ' . $intPk . ').'; + $strMessageClass = 'err'; + } else { + $sqlUpdate = "UPDATE key_chain SET key_chain_http = '" . $objDatabase->fxEscape($strNewHttp) . "' WHERE pk_key_chain = " . $intPk; + if ($objDatabase->fxQuery($sqlUpdate) === false) { + $strMessage = 'Erreur lors de la mise à jour.'; + $strMessageClass = 'err'; + } else { + $strMessage = 'Enregistré — pk ' . $intPk . ' → ' . htmlspecialchars($strNewHttp, ENT_QUOTES, 'UTF-8'); + $strMessageClass = 'ok'; + $strCurrentHttp = $strNewHttp; + $blnShowUrlForm = true; + } + } + } + } + } +} + +?> + + + + + + + Key chain HTTP + + + +

Key chain — URL de destination

+

Numéro saisi + = pk en base (ex. 8 → 108).

+ + +
+ + + +
+ + + + +

Entrée pour charger l’URL actuelle.

+
+ +

pk_key_chain :

+
+ + + + + +

Entrée pour enregistrer.

+
+

← Autre numéro

+ + + + + diff --git a/php/inc_settings.php b/php/inc_settings.php index be8b848..b6b057b 100644 --- a/php/inc_settings.php +++ b/php/inc_settings.php @@ -11,6 +11,9 @@ define('_VERSION_CODE', '4.72.54'); define('_DATE_CODE', '2026-03-09'); //MSIN-4290 define('QR_SECRET_KEY', 'ms1_qr_2026_cle_secrete_longue_et_fixe'); +// Outil temporaire key_chain HTTP (ms1_kc_set.php) — changer en prod si besoin +define('KEYCHAIN_HTTP_EDIT_SECRET', 'ms1_kc_http_edit_2026_c7e4a91f3b2d8e0f6a5c4b3d2e1f0a9'); +define('KEYCHAIN_HTTP_EDIT_SHIFT', 100); /********************** *