Files
ASPIC/prospect_doc.php
2026-08-28 20:47:44 +02:00

49 lines
1.7 KiB
PHP

<?php
// prospect_doc.php
// Point d'entrée public (clic sur le lien de documentation dans un mail) :
// vérifie que les paramètres n'ont pas été modifiés (signature), journalise
// la lecture du prospect, puis redirige vers l'URL réelle du document.
// URL attendue : prospect_doc.php?a=<PSP_Incr>&b=<DOC_Incr>&c=<CMP_Incr>&d=<signature>
require __DIR__ . '/prospects_core.php';
// Destination neutre si les paramètres ont été trafiqués : ta page d'accueil
// plutôt qu'une réponse d'erreur qui confirmerait la tentative au visiteur.
const URL_REDIRECTION_SI_INVALIDE = 'https://mevelia-solutions.bzh';
$idProspect = filter_input(INPUT_GET, 'a', FILTER_VALIDATE_INT);
$idDoc = filter_input(INPUT_GET, 'b', FILTER_VALIDATE_INT);
$idCampagne = filter_input(INPUT_GET, 'c', FILTER_VALIDATE_INT);
$signature = $_GET['d'] ?? '';
if (!$idProspect || !$idDoc || !$idCampagne || $signature === '') {
header('Location: ' . URL_REDIRECTION_SI_INVALIDE, true, 302);
exit;
}
$signatureAttendue = signerParametresDoc($idProspect, $idDoc, $idCampagne);
if (!hash_equals($signatureAttendue, $signature)) {
header('Location: ' . URL_REDIRECTION_SI_INVALIDE, true, 302);
exit;
}
$pdo = getDbConnection();
$stmt = $pdo->prepare('SELECT PSP_CodeCampagne FROM ASP_Prospects WHERE PSP_Incr = ?');
$stmt->execute([$idProspect]);
$prospect = $stmt->fetch();
$stmt = $pdo->prepare('SELECT DOC_URL, DOC_Libelle FROM ASP_Docs WHERE DOC_Incr = ?');
$stmt->execute([$idDoc]);
$doc = $stmt->fetch();
if (!$prospect || !$doc) {
header('Location: ' . URL_REDIRECTION_SI_INVALIDE, true, 302);
exit;
}
journaliserOperation($idProspect, $prospect['PSP_CodeCampagne'] . '-LEC', $doc['DOC_Libelle']);
header('Location: ' . $doc['DOC_URL'], true, 302);
exit;