| Current Path : /home/happyrenas/myreco.online/ |
Linux webd005.cluster105.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 |
| Current File : /home/happyrenas/myreco.online/index.php |
<?php
include("configuration.php");
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
require_once __DIR__ . '/PHPMailer-6.9.1/src/Exception.php';
require_once __DIR__ . '/PHPMailer-6.9.1/src/PHPMailer.php';
require_once __DIR__ . '/PHPMailer-6.9.1/src/SMTP.php';
include("includes/fonctions.php");
/* ----------------------------------------------------------------------------
Envoi mail SIMPLE + DEBUG + BCC
---------------------------------------------------------------------------- */
if (!function_exists('envoyerMail')) {
function envoyerMail(
string $to,
string $subject,
string $htmlBody,
string $textBody = '',
string $replyTo = '',
string $replyName = '',
?string &$erreur = null
): bool {
try {
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
// DEBUG SMTP
//$mail->SMTPDebug = 2;
//$mail->Debugoutput = 'html';
// CONFIG SMTP
$mail->isSMTP();
$mail->Host = 'smtp.mail.ovh.net';
$mail->SMTPAuth = true;
$mail->Username = SMTP_USER;
$mail->Password = SMTP_PASS;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
// EXPEDITEUR / DEST
$mail->setFrom(SMTP_USER, 'MyReco');
$mail->addAddress($to);
// BCC automatique
if (defined('EMAIL_BCC') && filter_var(EMAIL_BCC, FILTER_VALIDATE_EMAIL)) {
$mail->addBCC(EMAIL_BCC);
}
// ReplyTo
if ($replyTo && filter_var($replyTo, FILTER_VALIDATE_EMAIL)) {
$mail->addReplyTo($replyTo, $replyName);
}
// CONTENU
$mail->isHTML(true);
$mail->Subject = $subject;
$mail->Body = $htmlBody;
$mail->AltBody = $textBody ?: strip_tags($htmlBody);
$mail->send();
return true;
} catch (Exception $e) {
$erreur = $mail->ErrorInfo ?: $e->getMessage();
return false;
}
}
}
/* ----------------------------------------------------------------------------
Traitement formulaire CLEAN
---------------------------------------------------------------------------- */
$miseajour = '';
$debugErreur = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// =========================
// 1. VERIFICATION CAPTCHA
// =========================
$turnstileToken = $_POST['cf-turnstile-response'] ?? '';
if (empty($turnstileToken)) {
$debugErreur = 'Captcha manquant.';
} else {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://challenges.cloudflare.com/turnstile/v0/siteverify");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'secret' => TURNSTILE_SECRET_KEY,
'response' => $turnstileToken,
'remoteip' => $_SERVER['REMOTE_ADDR']
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
$captchaSuccess = !empty($result['success']) ? 'Oui' : 'Non';
$captchaHostname = $result['hostname'] ?? '';
$captchaErrors = !empty($result['error-codes']) ? implode(', ', $result['error-codes']) : '';
$captchaChallenge = $result['challenge_ts'] ?? '';
$captchaTokenDebug = $turnstileToken;
if (empty($result['success'])) {
$debugErreur = 'Captcha invalide.';
}
}
// =========================
// 2. SI CAPTCHA OK → TRAITEMENT
// =========================
if ($debugErreur === '') {
// Récupération
$form_vousetes = trim($_POST['form_vousetes'] ?? '');
$form_nom = trim($_POST['form_nom'] ?? '');
$form_email = trim($_POST['form_email'] ?? '');
$form_tel = trim($_POST['form_tel'] ?? '');
$form_message = trim(strip_tags($_POST['form_message'] ?? ''));
// Vérifications
if ($form_nom === '') {
$debugErreur = 'Nom manquant.';
} elseif (!filter_var($form_email, FILTER_VALIDATE_EMAIL)) {
$debugErreur = 'Email invalide.';
} elseif ($form_message === '') {
$debugErreur = 'Message manquant.';
} else {
// Destinataire
$destinataire = defined('ADMIN_EMAIL') ? ADMIN_EMAIL : 'contact@myreco.online';
$sujet = "Formulaire MyReco - " . $form_vousetes;
$corps = ''
. 'Type : ' . htmlspecialchars($form_vousetes) . '<br>'
. 'Nom : ' . htmlspecialchars($form_nom) . '<br>'
. 'Email : ' . htmlspecialchars($form_email) . '<br>'
. 'Tél : ' . htmlspecialchars($form_tel) . '<br><br>'
. '<b>Captcha :</b><br>'
. 'Validé : ' . htmlspecialchars($captchaSuccess) . '<br>'
. 'Hostname : ' . htmlspecialchars($captchaHostname) . '<br>'
. 'Date challenge : ' . htmlspecialchars($captchaChallenge) . '<br>'
. 'Erreurs : ' . htmlspecialchars($captchaErrors) . '<br><br>'
. '<b>Message :</b><br>'
. nl2br(htmlspecialchars($form_message));
$textBody =
"Type : $form_vousetes\n" .
"Nom : $form_nom\n" .
"Email : $form_email\n" .
"Tél : $form_tel\n\n" .
"Message :\n$form_message";
// Envoi
$erreurMail = null;
if (envoyerMail(
$destinataire,
$sujet,
$corps,
$textBody,
$form_email,
$form_nom,
$erreurMail
)) {
$miseajour = "1";
} else {
$miseajour = "non";
$debugErreur = 'Erreur PHPMailer : ' . $erreurMail;
}
}
}
// =========================
// 3. Gestion affichage erreur
// =========================
if ($miseajour === '' && $debugErreur !== '') {
$miseajour = "non";
}
}
?>
<!DOCTYPE html>
<html class="no-js" lang="fr">
<head>
<?include("includes/google_head.php");?>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>MyReco.Online</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="shortcut icon" href="img/icone.png" />
<link rel="stylesheet" href="assets/css/bootstrap.min.css" />
<link rel="stylesheet" href="assets/css/LineIcons.2.0.css" />
<link rel="stylesheet" href="assets/css/animate.css" />
<link rel="stylesheet" href="assets/css/tiny-slider.css" />
<link rel="stylesheet" href="assets/css/glightbox.min.css" />
<link rel="stylesheet" href="assets/css/main.css" />
<style>
.custom-modal-height .modal-content {
height: 400px;
}
.custom-modal-height .modal-body {
overflow-y: auto; /* Activer la barre de défilement si le contenu est trop long */
}
</style>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
</head>
<body>
<?include("includes/google_body.php");?>
<!--[if lte IE 9]>
<p class="browserupgrade">
You are using an <strong>outdated</strong> browser. Please
<a href="https://browsehappy.com/">upgrade your browser</a> to improve
your experience and security.
</p>
<![endif]-->
<header class="header navbar-area">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-12">
<div class="nav-inner">
<nav class="navbar navbar-expand-lg">
<a class="navbar-brand" href="index.php">
<img src="img/logo.png" alt="Logo">
</a>
<button class="navbar-toggler mobile-menu-btn" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="">
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
<span class="toggler-icon"></span>
</button>
<div class="collapse navbar-collapse sub-menu-bar" id="navbarSupportedContent">
<ul id="nav" class="navbar-nav ms-auto">
<li class="nav-item"><a href="#fonctionnalite" class="page-scroll">Fonctionnalités</a></li>
<li class="nav-item"><a href="#caracteristique" class="page-scroll">Caractéristiques</a></li>
<li class="nav-item"><a href="#tarif" class="page-scroll">Tarif</a></li>
<li class="nav-item"><a href="#apropos" class="page-scroll">A propos</a></li>
<li class="nav-item"><a href="#contact" class="page-scroll">Contact</a></li>
<li class="nav-item">
<a class="page-scroll dd-menu collapsed" href="#blog" data-bs-toggle="collapse" data-bs-target="#submenu-1-4" aria-controls="navbarSupportedContent" aria-expanded="false">Langue</a>
<ul class="sub-menu collapse" id="submenu-1-4">
<li class="nav-item active"><a href="index.php">FR</a></li>
<li class="nav-item "><a href="index-es.php">ES</a></li>
<li class="nav-item "><a href="index-it.php">IT</a></li>
</ul>
</li>
</ul>
</div>
<div class="button add-list-button">
<a href="#tarif" class="btn">S'abonner</a>
</div>
</nav>
</div>
</div>
</div>
</div>
</header>
<section id="accueil" class="hero-area">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-5 col-md-12 col-12">
<div class="hero-content">
<h1 class="wow fadeInLeft" data-wow-delay=".4s">MyReco, <br>c'est un simple QR CODE.</h1><br>
<h2 class="wow fadeInLeft" data-wow-delay=".4s" style="color: #fff;">A afficher partout ou vous le souhaitez.</h2>
<h6 class="mt-4 wow fadeInLeft" data-wow-delay=".4s"><i>Et c'est tout ce que vous avez à faire !</i></h6>
<p class="wow fadeInLeft" data-wow-delay=".6s"></p>
<div class="button wow fadeInLeft" data-wow-delay=".8s">
<a href="#tarif" class="btn">Voir les tarifs</a>
</div>
<h4 class="text-white mt-4">
<b>Déjà 186 055 hébergements référencés</b><br>sur MyReco, en France, Espagne, Italie<br><br>
Vous aussi, faites profiter de MyReco à vos clients !
</h4>
</div>
</div>
<div class="col-lg-7 col-md-12 col-12">
<div class="hero-image wow fadeInRight" data-wow-delay=".4s">
<img src="img/photo_site_mr1.png" alt="#">
</div>
</div>
</div>
</div>
</section>
<section id="fonctionnalite" class="features section">
<div class="container">
<div class="row align-items-center">
<div class="col-4">
<div class="" data-wow-delay=".4s">
<img src="img/image_main_appli4_transparente.png" alt="#">
</div>
</div>
<div class="col-7">
<div class="">
<h2 class="wow fadeInLeft" data-wow-delay=".4s">Vos clients accèdent directement aux meilleures activités ludiques, lieux à visiter et restaurants autour de votre hébergement</h2>
<h4 class="mt-5 wow fadeInLeft" data-wow-delay=".4s">MyReco compile les meilleures idées de sorties spécialement pour votre hébergement</h4>
</div>
</div>
</div>
</div>
</section>
<section id="overview" class="app-info section">
<div class="container">
<div class="info-one style2">
<div class="row align-items-center">
<div class="col-7">
<div class="info-text wow fadeInRight" data-wow-delay=".5s">
<h2>Vos clients partagent leurs coups de coeur avec les clients suivants</h2>
<h4 class="mt-5">MyReco aide vos clients<br> à se transmettre les bonnes adresses</h4>
<h4 class="mt-5">Vous pouvez également ajouter vos propres recommandations ! </h4>
<div class="button mt-5">
<a href="#tarif" class="btn">Voir les tarifs</a>
</div>
</div>
</div>
<div class="col-5">
<div class="info-image wow fadeInLeft" data-wow-delay=".3s"><img class="ss1" src="img/image_avis_transparente.png"></div>
</div>
</div>
</div>
</div>
</section>
<section id="caracteristique" class="our-achievement section">
<div class="container">
<div class="row">
<div class="col-lg-10 offset-lg-1 col-md-12 col-12">
<div class="title">
<h2 class="text-white">MyReco aide vos clients<br> à profiter pleinement de leur séjour chez vous.</h2>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8 offset-lg-2 col-md-12 col-12">
<div class="row">
<div class="col-12">
<div class="single-achievement wow fadeInUp" data-wow-delay=".2s">
<h4 class="text-dark">Chaque hébergement dispose de sa propre liste construite selon sa localisation géographique et la qualité des activités, lieux à voir et restaurants à proximité directe.</h4>
<h4 class="text-white mt-4">Vous pouvez afficher le QR code partout ou vous le souhaitez sans aucune limitation : A l'accueil, dans les chambres, sur votre site internet, dans vos emails, etc.</h4>
<h4 class="text-dark mt-4">Vos clients accèdent gratuitement à l'appli<br>Sans aucune inscription, limitation ou obligation.<br>Aucune donnée personnelle n'est demandée ni collectée.</h4>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="tarif" class="pricing-table section">
<div class="container">
<div class="row">
<div class="col-12">
<div class="section-title">
<h2 class="wow fadeInUp" data-wow-delay=".4s">Tarifs</h2>
</div>
</div>
</div>
<!--
<div class="row">
<div class="col-lg-4 col-md-6 col-12 position-relative">
<div class="single-table wow fadeInUp" data-wow-delay=".2s">
<div class="table-head">
<h4 class="title" style="font-size: 24px;">Location saisonnière</h4>
<p><a href="https://tarifs.myreco.online/c/loc-saisonniere" class="stretched-link">à partir de</a></p>
<div class="price">
<h2 class="amount">0 € / mois</h2>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 position-relative">
<div class="single-table wow fadeInUp" data-wow-delay=".2s">
<div class="table-head">
<h4 class="title" style="font-size: 24px;">Camping</h4>
<p><a href="https://tarifs.myreco.online/c/camping" class="stretched-link">à partir de</a></p>
<div class="price">
<h2 class="amount">3,50 € / mois</h2>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 position-relative">
<div class="single-table wow fadeInUp" data-wow-delay=".6s">
<div class="table-head">
<h4 class="title" style="font-size: 24px;">Hôtel</h4>
<p><a href="https://tarifs.myreco.online/c/hotel" class="stretched-link">à partir de</a></p>
<div class="price">
<h2 class="amount">10 € / mois</h2>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4 col-md-6 col-12 position-relative" style="padding-left:50px;padding-right:50px;">
<div class="single-table wow fadeInUp" data-wow-delay=".8s">
<div class="table-head">
<h4 class="title">Auberge de jeunesse</h4>
<p><a href="https://tarifs.myreco.online/c/auberge-jeunesse" class="stretched-link">à partir de</a></p>
<div class="price">
<h2 class="amount" style="font-size: 20px;">2,90 € / mois</h2>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 position-relative" style="padding-left:50px;padding-right:50px;">
<div class="single-table wow fadeInUp" data-wow-delay=".8s">
<div class="table-head">
<h4 class="title">Résidence de tourisme</h4>
<p><a href="https://tarifs.myreco.online/c/residence-tourisme" class="stretched-link">à partir de</a></p>
<div class="price">
<h2 class="amount" style="font-size: 20px;">25 € / mois</h2>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-6 col-12 position-relative" style="padding-left:50px;padding-right:50px;">
<div class="single-table wow fadeInUp" data-wow-delay=".8s">
<div class="table-head">
<h4 class="title">Autre type d'hébergement</h4>
<p><a href="#contact" class="stretched-link">sur demande</a></p>
<div class="price">
<h2 class="amount" style="font-size: 20px;">Contactez nous</h2>
</div>
</div>
</div>
</div>
</div>
-->
<div class="row mt-5">
<div class="col-12"><center><h4 style="font-size: 20px;"><i>MyReco est totalement gratuit, pour vous et vos voyageurs !</i></h4></center></div>
</div>
<div class="row mt-5">
<div class="col-12"><center><p class="wow fadeInUp" data-wow-delay=".6s">Recevez sur simple demande le QR code spécifique à votre localisation.<br>
(et permettez à vos clients de découvrir les meilleures recommandations autour de vous)</p></center></div>
</div>
</div>
</section>
<section class="section call-action">
<div class="container">
<div class="row"></div>
</div>
</section>
<section class="pricing-table section">
<div class="container">
<div class="row">
<div class="col-lg-12 col-md-12 col-12">
<div class="single-table wow fadeInUp" data-wow-delay=".2s" style="background-color:#cbc1b8;">
<div class="table-content">
<h4 class="middle-title text-white"><b>Inclus dans l'abonnement</b></h4>
<ul class="table-list">
<li><i class="lni lni-checkmark-circle"></i> <span class="text-white">1 semaine d'essai gratuit.</span></li>
<li><i class="lni lni-checkmark-circle"></i> <span class="text-white">Abonnement sans engagement.</span></li>
<li><i class="lni lni-checkmark-circle"></i> <span class="text-white">Accès illimité.</span></li>
<li><i class="lni lni-checkmark-circle"></i> <span class="text-white">Résiliation par simple mail.</span></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="apropos" class="app-info section">
<div class="container">
<div class="row align-items-center">
<div class="col-12">
<div class="">
<h4 class="mt-5 wow fadeInLeft" data-wow-delay=".4s" style="font-size: 20px;">
<center>
<i>Basé à proximité de Toulouse (France), nous sommes l'association de deux expériences de 15 ans dans l'hébergement touristique et le développement d'outils numériques. <br><br>
Notre souhait est de <b>proposer un outil d'une grande simplicité d'accès et d'utilisation :</b><br><br>
Sans création de compte,<br>
Sans app a télécharger,<br>
Sans recueil de données personnelles.<br>
<b>Personnalisé spécialement pour votre hébergement</b></i><br>
</center>
</h4>
</div>
</div>
</div>
</div>
</section>
<section id="contact">
<div class="contact-form-head section">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-12 col-md-12 col-12">
<div class="form-main">
<form class="form" method="post" action="index.php">
<div class="row">
<div class="col-lg-6 col-12">
<div class="form-group">
<select name="form_vousetes">
<option required selected value="">Vous êtes</option>
<option value="Location saisonnière">Location saisonnière</option>
<option value="Camping">Camping</option>
<option value="Hôtel">Hôtel</option>
<option value="Auberge de jeunesse">Auberge de jeunesse</option>
<option value="Résidence de tourisme">Résidence de tourisme</option>
<option value="Autre">Autre</option>
</select>
</div>
</div>
<div class="col-lg-6 col-12">
<div class="form-group">
<input name="form_nom" type="text" placeholder="Votre nom" required>
</div>
</div>
<div class="col-lg-6 col-12">
<div class="form-group">
<input name="form_email" type="email" placeholder="Adresse email" required>
</div>
</div>
<div class="col-lg-6 col-12">
<div class="form-group">
<input name="form_tel" type="text" placeholder="Téléphone">
</div>
</div>
<div class="col-12">
<div class="form-group message">
<textarea name="form_message" placeholder="Votre message" required></textarea>
</div>
</div>
<div class="col-12 mt-3">
<div class="cf-turnstile" data-sitekey="<?= TURNSTILE_SITE_KEY ?>"></div>
</div>
<div class="col-12 mt-3">
<div class="form-group button">
<button type="submit" class="btn">Envoyer</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
<? include("includes/footer.php"); ?>
<a href="#" class="scroll-top">
<i class="lni lni-chevron-up"></i>
</a>
<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/wow.min.js"></script>
<script src="assets/js/tiny-slider.js"></script>
<script src="assets/js/glightbox.min.js"></script>
<script src="assets/js/count-up.min.js"></script>
<script src="assets/js/main.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="https://www.myreco.online/js/notify.js"></script>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for (const registration of registrations) {
registration.unregister();
}
});
caches.keys().then(function(names) {
for (const name of names) {
caches.delete(name);
}
});
}
</script>
<script type="text/javascript">
var getBootstrapVersion = function () {
var deferred = $.Deferred();
var script = $('script[src*="bootstrap"]');
if (script.length == 0) {
return deferred.reject();
}
var src = script.attr('src');
$.get(src).done(function(response) {
var matches = response.match(/(?!v)([.\d]+[.\d])/);
if (matches && matches.length > 0) {
version = matches[0];
deferred.resolve(version);
}
});
return deferred;
};
getBootstrapVersion().done(function(version) {
console.log(version); // '3.3.4'
});
$('.choix').on('change', function() {
var val = $(this).val();
if (val)
{
window.location.href = val;
}
})
//====== counter up
var cu = new counterUp({
start: 0,
duration: 2000,
intvalues: true,
interval: 100,
append: " ",
});
cu.start();
<?if ($miseajour==1) {?>
$.notify('Votre message a bien été envoyé', {
autoHide: true,
autoHideDelay: 4000,
globalPosition: 'top center',
className: 'success'
});
<?}?>
<?if ($miseajour=="non") {?>
$.notify('Une erreur a eu lieu', {
autoHide: true,
autoHideDelay: 4000,
globalPosition: 'top center',
className: 'danger'
});
<?}?>
</script>
</body>
</html>