fomulaire RGPD de/en

This commit is contained in:
Olivier Legat 2021-11-23 10:18:58 +01:00
parent 407158963e
commit 12a63a1ee4
2 changed files with 420 additions and 0 deletions

View file

@ -0,0 +1,210 @@
<?php
require_once '../autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Tableau de tous les sites pointant sur le formulaire RGPD Groupe LDC
$tSitesweb = array ('acb', 'agis-sa', 'boutique-vol', 'corico', 'espri', 'foods', 'idhalal', 'jx-argoat', 'jx-reghalal', 'ldc', 'ldc-rest', 'lmdb', 'lpt', 'lta', 'mairet', 'marie', 'mdn-loue', 'ner', 'pet', 'sbv', 'tda', 'regalette');
$sDebug="";
// Si j'ai des POST et que j'ai le POST du recaptcha
if(isset($_POST) && isset($_POST['g-recaptcha-response'])){
$secret = "6LcPodQUAAAAANOJ3SMyXVidfktbHFesx5VIAxsO";
$response = $_POST['g-recaptcha-response'];
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && $_SERVER["HTTP_X_FORWARDED_FOR"] != ""){
if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',')) {
$explode = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$remoteip = trim($explode[0]);
}else{
$remoteip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
}else{
$remoteip = $_SERVER["REMOTE_ADDR"];
}
$api_url = "https://www.google.com/recaptcha/api/siteverify?secret=". $secret. "&response=" . $response. "&remoteip=" . $remoteip ;
$decode = json_decode(file_get_contents($api_url), true);
// Si le recaptcha et OK
if ($decode['success'] == true){
// Déclaration d'un PHPMailer
$mail = new PHPMailer();
// Valorisation des variables pour dialoguer avec le serveur mail
configure_smtp($mail);
$bPass=false;
$sErreur="";
$sSiteweb="";
// Vérification que toutes les informations demandées ont été renseignées
if (isset($_POST['lastname']) && isset($_POST['firstname']) && isset($_POST['email'])) {
$sSource=htmlspecialchars($_POST['source']);
$sLastName=htmlspecialchars($_POST['lastname']);
$sFirstName=htmlspecialchars($_POST['firstname']);
$sMail=htmlspecialchars($_POST['email']);
$sChoice=htmlspecialchars($_POST['droits']);
$sMsg=htmlspecialchars($_POST['commentaires']);
// Vérification de la structure de l'adresse mail (la gestion d'erreur n'est pas prise en compte)
if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $sMail)) {
$sErreur="La structure de l'email n'est pas correcte !";
}
// Dès qu'il y a un GET website, on ctrl selon le tab déclaré en début de code.
if (isset($_GET['website'])) {
$sSiteweb=htmlspecialchars($_GET['website']);
$bSiteOK=false;
foreach($tSitesweb as $site) {
if ($sSiteweb == $site) {
$bSiteOK=true;
break;
}
}
}
// On construit le mail si pas de GET siteweb ou si le GET est OK.
if ($sSiteweb == "" || $bSiteOK == true) {
//Objet du mail
$mail->Subject = 'Nouvelles dispositions RGPD - ' . $sSource;
// Email de l'expéditeur affiché dans le mail envoyé.
$mail->From =$sMail;
// Email de l'expéditeur
$mail->Sender= $sMail;
// Nom de l'expéditeur affiché dans le mail envoyé
$mail->FromName= $sFirstName . ' ' . $sLastName;
switch ($sChoice) {
case 'check':
$right='Vérifier mes données';
break;
case 'modify':
$right='Rectifier mes données';
break;
case 'delete':
$right='Effacer mes données';
break;
case 'freeze':
$right='Geler l\'utilisation de mes données';
break;
case 'import':
$right='Emporter mes données';
break;
case 'refuse':
$right='M\'opposer à l\'utilisation de mes données';
break;
default:
$right='Aucun choix.';
break;
}
//Le contenu du mail.
if ($sSiteweb != "") {
$sBody="<b>Source : </b>" . $sSource . " (via le site web " . $sSiteweb . ")<br><br>";
} else {
$sBody="<b>Source : </b>" . $sSource . "<br><br>";
}
$sBody=$sBody . "<b>Nom : </b>" . $sLastName . "<br>";
$sBody=$sBody . "<b>Prénom : </b>" . $sFirstName . "<br>";
$sBody=$sBody . "<b>Email : </b>" . $sMail . "<br><br>";
$sBody=$sBody . "<b>L'utilisateur souhaite exercer le droit suivant :</b> " . $right . "<br><br>";
$sBody=$sBody . "<b>Message : </b>" . $sMsg;
$mail->Body = $sBody;
$bSendOK=false;
$bPass=true;
if ($mail->send()){
$bSendOK=true;
}
}
}
}
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="../css/style.css"/>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" />
<script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
<title>Formulaire RGPD</title>
</head>
<body>
<div class="container">
<form method="POST">
<fieldset>
<legend>Zugriff auf meine persönliche Daten<?= $sDebug; ?></legend>
<p>
<label for="nom">Name*</label>
<input type="text" name="lastname" id="nom" style="width:196px;" autofocus required>
</p>
<p>
<label for="prenom">Vorname*</label>
<input type="text" name="firstname" id="prenom" style="width:177px;" required>
</p>
<p>
<label for="courriel">Email*</label>
<input type="text" name="email" id="mail" style="width:191px;" required>
</p>
<p>
<select name="droits" id="selDroits" style="width:250px;">
<option value="ask" selected>Welches Recht möchten Sie geltend machen?</option>
<option value="check">Meine Daten prüfen</option>
<option value="modify">Meine Daten ändern</option>
<option value="delete">Meine Daten löschen</option>
<option value="freeze">Die Nutzung von meinen Daten sperren</option>
<option value="import">Meine Daten mitnehmen</option>
<option value="refuse">Die Nutzung von meinen Daten verweigern</option>
</select>
</p>
<p>
<textarea name="commentaires" id="comment" maxlength="1900" rows="10"
placeholder="Weitere Informationen"></textarea>
</p>
<div class="g-recaptcha" data-sitekey="6LcPodQUAAAAAEOYHMF7Et6qvzu_F3jZ3HhOlV7Q"></div>
<p class="button">
<span>
<input type="hidden" name="source" value="consommateurs">
<input type="submit" value="Senden">
</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span>*Pflichtfelder</span>
</p>
</fieldset>
</form>
</div>
<?php if (isset($bSendOK)): ?>
<div class="return">
<p>Votre demande a été transmise à nos services. Vous recevrez une réponse à l'adresse mail renseignée dans le formulaire dans les plus brefs délais. Pour plus d'informations, merci de consulter notre <a data-fancybox data-src="#charte" href="javascript:;">charte de confidentialité</a>.<br>
A bientôt <?= $sFirstName; ?> sur notre site !</p>
</div>
<?php
try {
$query = $db->prepare("SELECT post_content FROM $charte_TABLE WHERE ID = :id");
$query->execute(['id' => $charte_POST_ID]);
} catch (\PDOException $e) {
//die($e->getMessage());
die('Une erreur est survenue.');
}
$query->setFetchMode(\PDO::FETCH_ASSOC);
$result = $query->fetch();
$query->closeCursor();
if (empty($result))
die('Une erreur est survenue.');
?>
<div id="charte" style="display:none; width:80%; height:80%;">
<?= $result['post_content']; ?>
</div>
<?php else: ?>
<?php if (isset($bPass)): ?>
<div class="return">
<p>La demande n'a pas été envoyée car un des champs n'a pas été correctement renseigné !</p>
</div>
<?php endif; ?>
<?php endif; ?>
</body>
</html>

View file

@ -0,0 +1,210 @@
<?php
require_once '../autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Tableau de tous les sites pointant sur le formulaire RGPD Groupe LDC
$tSitesweb = array ('acb', 'agis-sa', 'boutique-vol', 'corico', 'espri', 'foods', 'idhalal', 'jx-argoat', 'jx-reghalal', 'ldc', 'ldc-rest', 'lmdb', 'lpt', 'lta', 'mairet', 'marie', 'mdn-loue', 'ner', 'pet', 'sbv', 'tda', 'regalette');
$sDebug="";
// Si j'ai des POST et que j'ai le POST du recaptcha
if(isset($_POST) && isset($_POST['g-recaptcha-response'])){
$secret = "6LcPodQUAAAAANOJ3SMyXVidfktbHFesx5VIAxsO";
$response = $_POST['g-recaptcha-response'];
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"]) && $_SERVER["HTTP_X_FORWARDED_FOR"] != ""){
if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',')) {
$explode = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$remoteip = trim($explode[0]);
}else{
$remoteip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
}else{
$remoteip = $_SERVER["REMOTE_ADDR"];
}
$api_url = "https://www.google.com/recaptcha/api/siteverify?secret=". $secret. "&response=" . $response. "&remoteip=" . $remoteip ;
$decode = json_decode(file_get_contents($api_url), true);
// Si le recaptcha et OK
if ($decode['success'] == true){
// Déclaration d'un PHPMailer
$mail = new PHPMailer();
// Valorisation des variables pour dialoguer avec le serveur mail
configure_smtp($mail);
$bPass=false;
$sErreur="";
$sSiteweb="";
// Vérification que toutes les informations demandées ont été renseignées
if (isset($_POST['lastname']) && isset($_POST['firstname']) && isset($_POST['email'])) {
$sSource=htmlspecialchars($_POST['source']);
$sLastName=htmlspecialchars($_POST['lastname']);
$sFirstName=htmlspecialchars($_POST['firstname']);
$sMail=htmlspecialchars($_POST['email']);
$sChoice=htmlspecialchars($_POST['droits']);
$sMsg=htmlspecialchars($_POST['commentaires']);
// Vérification de la structure de l'adresse mail (la gestion d'erreur n'est pas prise en compte)
if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $sMail)) {
$sErreur="La structure de l'email n'est pas correcte !";
}
// Dès qu'il y a un GET website, on ctrl selon le tab déclaré en début de code.
if (isset($_GET['website'])) {
$sSiteweb=htmlspecialchars($_GET['website']);
$bSiteOK=false;
foreach($tSitesweb as $site) {
if ($sSiteweb == $site) {
$bSiteOK=true;
break;
}
}
}
// On construit le mail si pas de GET siteweb ou si le GET est OK.
if ($sSiteweb == "" || $bSiteOK == true) {
//Objet du mail
$mail->Subject = 'Nouvelles dispositions RGPD - ' . $sSource;
// Email de l'expéditeur affiché dans le mail envoyé.
$mail->From =$sMail;
// Email de l'expéditeur
$mail->Sender= $sMail;
// Nom de l'expéditeur affiché dans le mail envoyé
$mail->FromName= $sFirstName . ' ' . $sLastName;
switch ($sChoice) {
case 'check':
$right='Vérifier mes données';
break;
case 'modify':
$right='Rectifier mes données';
break;
case 'delete':
$right='Effacer mes données';
break;
case 'freeze':
$right='Geler l\'utilisation de mes données';
break;
case 'import':
$right='Emporter mes données';
break;
case 'refuse':
$right='M\'opposer à l\'utilisation de mes données';
break;
default:
$right='Aucun choix.';
break;
}
//Le contenu du mail.
if ($sSiteweb != "") {
$sBody="<b>Source : </b>" . $sSource . " (via le site web " . $sSiteweb . ")<br><br>";
} else {
$sBody="<b>Source : </b>" . $sSource . "<br><br>";
}
$sBody=$sBody . "<b>Nom : </b>" . $sLastName . "<br>";
$sBody=$sBody . "<b>Prénom : </b>" . $sFirstName . "<br>";
$sBody=$sBody . "<b>Email : </b>" . $sMail . "<br><br>";
$sBody=$sBody . "<b>L'utilisateur souhaite exercer le droit suivant :</b> " . $right . "<br><br>";
$sBody=$sBody . "<b>Message : </b>" . $sMsg;
$mail->Body = $sBody;
$bSendOK=false;
$bPass=true;
if ($mail->send()){
$bSendOK=true;
}
}
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="../css/style.css"/>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" />
<script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
<script src='https://www.google.com/recaptcha/api.js' async defer></script>
<title>Formulaire RGPD</title>
</head>
<body>
<div class="container">
<form method="POST">
<fieldset>
<legend>Controlling my personal data <?= $sDebug; ?></legend>
<p>
<label for="nom">Name*</label>
<input type="text" name="lastname" id="nom" style="width:196px;" autofocus required>
</p>
<p>
<label for="prenom">First Name*</label>
<input type="text" name="firstname" id="prenom" style="width:177px;" required>
</p>
<p>
<label for="courriel">Email*</label>
<input type="text" name="email" id="mail" style="width:191px;" required>
</p>
<p>
<select name="droits" id="selDroits" style="width:250px;">
<option value="ask" selected>What kind of rights do you wish to exercise?</option>
<option value="check">Checking my datas</option>
<option value="modify">Changing my datas</option>
<option value="delete">Erasing my datas</option>
<option value="freeze">Blocking the use of my datas</option>
<option value="import">Withdrawing my datas</option>
<option value="refuse">Refusing the use of my data</option>
</select>
</p>
<p>
<textarea name="commentaires" id="comment" maxlength="1900" rows="10"
placeholder="Informations complémentaires notamment si vous souhaitez nous expliquer les raisons de votre demande (et nous permettre d'améliorer nos services)"></textarea>
</p>
<div class="g-recaptcha" data-sitekey="6LcPodQUAAAAAEOYHMF7Et6qvzu_F3jZ3HhOlV7Q"></div>
<p class="button">
<span>
<input type="hidden" name="source" value="consommateurs">
<input type="submit" value="Submit">
</span>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span>*required</span>
</p>
</fieldset>
</form>
</div>
<?php if (isset($bSendOK)): ?>
<div class="return">
<p>Votre demande a été transmise à nos services. Vous recevrez une réponse à l'adresse mail renseignée dans le formulaire dans les plus brefs délais. Pour plus d'informations, merci de consulter notre <a data-fancybox data-src="#charte" href="javascript:;">charte de confidentialité</a>.<br>
A bientôt <?= $sFirstName; ?> sur notre site !</p>
</div>
<?php
try {
$query = $db->prepare("SELECT post_content FROM $charte_TABLE WHERE ID = :id");
$query->execute(['id' => $charte_POST_ID]);
} catch (\PDOException $e) {
//die($e->getMessage());
die('Une erreur est survenue.');
}
$query->setFetchMode(\PDO::FETCH_ASSOC);
$result = $query->fetch();
$query->closeCursor();
if (empty($result))
die('Une erreur est survenue.');
?>
<div id="charte" style="display:none; width:80%; height:80%;">
<?= $result['post_content']; ?>
</div>
<?php else: ?>
<?php if (isset($bPass)): ?>
<div class="return">
<p>La demande n'a pas été envoyée car un des champs n'a pas été correctement renseigné !</p>
</div>
<?php endif; ?>
<?php endif; ?>
</body>
</html>