mirror of
https://github.com/JMP-MS/ASPIC.git
synced 2026-08-28 22:23:14 +00:00
49 lines
1.7 KiB
PHP
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;
|