Documentation complète

Polaszyk Booking

Plateforme de réservation de logements — guide complet de toutes les fonctionnalités, logique de fonctionnement et URLs.

https://booking.polaszyk.com
4
Rôles
40+
Pages
2FA
Sécurité
Stripe
Paiement
5
Langues
🏠
Vue d'ensemble
Ce que fait le site et ce qu'il intègre

Polaszyk Booking est une plateforme type Airbnb permettant à des utilisateurs de rechercher et réserver des logements, et à des loueurs de publier et gérer leurs annonces.

🔐
Authentification complète
Inscription par email, connexion Google OAuth, 2FA par email ou Google Authenticator.
🗺️
Recherche géolocalisée
Carte interactive OpenStreetMap, filtres avancés, rayon GPS, disponibilités en temps réel.
💳
Paiement Stripe
Paiement sécurisé via Stripe Checkout. Mode démo disponible si Stripe non configuré.
💬
Messagerie temps réel
Chat entre voyageurs et loueurs, mis à jour toutes les 3 secondes, avec avatars.
Avis & notes
Système d'avis post-séjour, notes 1-5 étoiles, réponses des loueurs.
🛡️
Modération
Validation des candidatures loueurs et des annonces par les modérateurs.
👥
Rôles utilisateurs
4 niveaux d'accès distincts
👤 Utilisateur

Visiteur connecté. Peut rechercher, réserver, noter et utiliser la messagerie.

✓ 2FA optionnelle
🏘️ Loueur

Publie des annonces et gère ses réservations. Statut obtenu après candidature validée.

⚠ 2FA obligatoire
🛡️ Modérateur

Valide les candidatures loueurs et les annonces publiées.

⚠ 2FA obligatoire
👑 Admin

Accès complet : utilisateurs, annonces, réservations, journal d'audit.

⚠ 2FA obligatoire
ℹ️
Pour devenir loueur, un utilisateur doit soumettre une candidature depuis /visiteur/devenir-loueur.php. Un modérateur l'examine et l'accepte ou la refuse.
🔐
Connexion & Sécurité
Inscription, login, 2FA, mot de passe oublié
Inscription
Connexion
2FA
Mot de passe oublié

Inscription — /public/register.php

  • Prénom, nom, email, mot de passe
  • Un email de vérification est envoyé automatiquement
  • Le compte reste inactif jusqu'au clic sur le lien
  • Si l'email n'arrive pas : /public/resend-verification.php

Connexion — /public/login.php

  • Email + mot de passe classique
  • Bouton "Continuer avec Google" (OAuth)
  • Si 2FA activée : étape de vérification supplémentaire
  • Protection contre le brute-force (blocage après plusieurs échecs)

Double authentification — /public/settings.php?tab=securite

Deux méthodes disponibles :

  • Email : code à 6 chiffres envoyé par email, valable 15 min (max 3 renvois)
  • Google Authenticator (TOTP) : scan d'un QR code, code renouvelé toutes les 30s
  • Option "Se souvenir 30 jours" sur l'appareil en cours
  • Max 5 tentatives de code incorrectes, puis renvoi vers le login
⚠️
Loueurs, modérateurs et admins ne peuvent pas désactiver la 2FA.

Mot de passe oublié — /public/forgot-password.php

  • Saisir son email → lien envoyé si le compte existe
  • Lien valable 1 heure
  • Limité à 5 demandes par heure par IP
  • Message générique affiché (ne révèle pas si l'email existe)
🏡
Fiche d'une annonce
/public/property.php?id=XXX
  • Galerie photos (principale + secondaires, WebP optimisé)
  • Titre, type de logement, ville, surface, nombre de chambres
  • Description complète + liste des équipements
  • Carte de localisation intégrée
  • Note moyenne et avis des précédents voyageurs
  • Profil de l'hôte avec lien vers sa page publique
  • Formulaire de réservation : dates, voyageurs, calcul du prix total
📅
Réservation & Paiement
Flux complet de la demande au paiement

Statuts d'une réservation

En attente Confirmée Refusée Annulée Payée

Étapes

  • Voyageur choisit dates + voyageurs → demande créée en en_attente
  • Loueur reçoit notification + email → accepte ou refuse
  • Si acceptée : toutes les autres demandes chevauchantes sont automatiquement refusées
  • Voyageur déclenche le paiement Stripe → redirigé vers page sécurisée Stripe
  • Après paiement → statut passe à payée
💳
Si Stripe n'est pas configuré, le site passe en mode démo : le paiement est simulé et la réservation est confirmée sans transaction réelle.

Annuler

Le voyageur peut annuler une réservation depuis /public/cancel-reservation.php?id=XXX ou depuis "Mes voyages".

💬
Messagerie
/visiteur/messages.php
  • Messagerie interne entre voyageurs et loueurs
  • Mise à jour automatique toutes les 3 secondes (pas de rechargement de page)
  • Avatars des contacts dans la liste et dans les bulles de chat
  • Indicateur Vu / Reçu sur les messages envoyés
  • Badge de messages non lus dans la barre de navigation
  • Un message automatique est créé lors de chaque nouvelle demande de réservation
🔔
Notifications
Cloche dans la navigation · /visiteur/notifications.php
📩
Nouvelle demande
Le loueur est notifié quand un voyageur fait une demande de réservation.
Réservation confirmée
Le voyageur est notifié quand le loueur accepte sa demande.
Réservation refusée
Le voyageur est notifié si sa demande est refusée.
🏠
Annonce publiée
Le loueur est notifié quand son annonce est approuvée par un modérateur.
⚙️
Paramètres du compte
/public/settings.php — 3 onglets
🖼️
Onglet Profil
Photo de profil (JPG/PNG → WebP, max 400×400 px). Visible dans la messagerie et le header. Modification du nom et prénom.
📧
Onglet Compte
Changement email (lien envoyé à la nouvelle adresse, effectif après confirmation). Changement mot de passe (déconnecte les autres appareils).
🔐
Onglet Sécurité
Activer/changer la méthode 2FA (email ou Google Authenticator). Désactivation possible uniquement pour les utilisateurs simples.
🌐
Support multilingue (i18n)
5 langues — détection automatique par le navigateur

L'interface est entièrement traduite en 5 langues. La langue est détectée automatiquement à partir du navigateur de l'utilisateur, sans aucune configuration requise. Le choix est mémorisé en session et dans un cookie de 30 jours.

🇫🇷
Français
Langue par défaut du site. Utilisée en fallback si une clé manque dans une autre langue.
🇬🇧
English
Anglais. Activé automatiquement pour les navigateurs configurés en en, en-US, en-GB
🇩🇪
Deutsch
Allemand. Activé pour de, de-DE, de-AT, de-CH
🇮🇹
Italiano
Italien. Activé pour it, it-IT, it-CH
🇪🇸
Español
Espagnol. Activé pour es, es-ES, es-MX, es-AR

Priorité de détection

1

Paramètre GET ?lang=xx

L'utilisateur clique sur un bouton du sélecteur (FR / EN / DE / IT / ES). Priorité maximale — mémorisé immédiatement en session et cookie.

2

Session PHP

Si une langue a déjà été choisie dans la session en cours, elle est réutilisée.

3

Cookie lang

Si la session a expiré mais que le cookie est encore valide (30 jours), la langue préférée est restaurée.

4

En-tête Accept-Language du navigateur

Détection automatique à la première visite. Le navigateur envoie ses préférences (ex: de-DE,de;q=0.9,en;q=0.8) — la première langue supportée est sélectionnée.

5

Fallback : Français

Si aucune correspondance n'est trouvée, le français est utilisé. Si une clé est absente dans la langue active, le français est utilisé comme langue de secours.

Architecture technique

FichierRôle
includes/lang.phpMoteur i18n : détection, chargement, fonction t(), sélecteur HTML
lang/fr.phpTraductions françaises (~80 clés) — langue par défaut et fallback
lang/en.phpTraductions anglaises
lang/de.phpTraductions allemandes
lang/it.phpTraductions italiennes
lang/es.phpTraductions espagnoles

Utilisation dans le code

Toutes les chaînes visibles par l'utilisateur passent par la fonction t($clé, $params) :

💡
Exemples :
t('nav.home')"Accueil" / "Home" / "Startseite"
t('error.too_many_min', [5])"Trop de tentatives. Réessayez dans 5 minute(s)."
Les strings JavaScript sont injectées via un objet _t = {…} généré en PHP côté serveur.

Ajouter une nouvelle langue

  • Créer lang/xx.php en copiant lang/en.php et en traduisant les valeurs
  • Ajouter 'xx' au tableau LANG_SUPPORTED dans includes/lang.php
  • Ajouter le label dans le tableau $labels de lang_switcher_html()
  • Le sélecteur et la détection automatique fonctionnent immédiatement
Le sélecteur de langue est affiché dans le header de toutes les pages. Les textes traduits couvrent : navigation, footer, page d'accueil, connexion, inscription, cards d'annonces, pagination, messages d'erreur et notifications dynamiques.
🏘️
Espace Loueur
Accessible uniquement au rôle loueur
PageURLDescription
Tableau de bord/loueur/dashboard.phpAnnonces actives, demandes en attente, stats
Créer une annonce/loueur/add-listing.phpFormulaire complet, jusqu'à 30 photos
Modifier une annonce/loueur/edit-listing.php?id=XXXRepasse en "en attente" après modif
Gérer une réservation/loueur/edit-reservation.php?id=XXXAccepter ou refuser une demande
Répondre à un avis/loueur/reply-avis.php?avis_id=XXXRéponse publique visible sur la fiche
📸
Les photos uploadées sont automatiquement converties en WebP et redimensionnées. L'adresse saisie dans le formulaire remplit automatiquement la ville, le code postal et les coordonnées GPS via autocomplétion.
🛡️
Espace Modérateur
Accessible uniquement au rôle modérateur
PageURLDescription
Tableau de bord/moderateur/dashboard.phpVue d'ensemble des éléments à valider
Candidatures loueurs/moderateur/candidatures.phpListe des demandes de passage loueur
Examiner candidature/moderateur/review-candidature.php?id=XXXAccepter = rôle loueur + 2FA activée auto
Valider annonce/moderateur/review-listing.php?id=XXXApprouver ou refuser une annonce
👑
Espace Admin
Accès complet à toute la plateforme
PageURLDescription
Tableau de bord/admin/dashboard.phpStats globales : users, annonces, revenus
Utilisateurs/admin/users.phpTous les comptes, changement de rôle
Fiche utilisateur/admin/user-detail.php?id=XXXHistorique, activité, statut
Annonces/admin/listings.phpToutes les annonces de la plateforme
Réservations/admin/reservations.phpVue complète de toutes les réservations
Conversations/admin/conversations.phpLecture de tous les échanges
Journal d'audit/admin/audit-log.phpHistorique de toutes les actions sensibles
🔄
Flux typique d'utilisation
Du visiteur à la réservation payée
1

Inscription / Connexion

L'utilisateur crée un compte ou se connecte via Google. Si 2FA activée, vérification du code.

2

Recherche d'un logement

Filtres (ville, dates, prix, services) + carte interactive. 12 résultats par page.

3

Consultation de la fiche

Photos, description, équipements, avis, localisation, profil de l'hôte.

4

Demande de réservation

Choix des dates et du nombre de voyageurs. La demande est créée en en_attente. Le loueur reçoit une notification.

5

Loueur accepte ou refuse

Si acceptée, toutes les autres demandes chevauchantes sont automatiquement refusées.

6

Paiement Stripe

Le voyageur paie via la page sécurisée Stripe. Réservation marquée payée.

7

Séjour terminé → Avis

Le voyageur laisse une note (1-5) et un commentaire. Le loueur peut y répondre publiquement.

🔗
Toutes les URLs
Cliquer sur une URL pour la copier

Pages publiques (sans connexion)

PageURL
Accueil/public/index.php
Recherche/public/search.php
Fiche annonce/public/property.php?id=XXX
Profil hôte/public/host.php?id=XXX
Connexion/public/login.php
Inscription/public/register.php
Mot de passe oublié/public/forgot-password.php

Pages connectées

PageURL
Mes voyages/public/mes-voyages.php
Favoris/public/favoris.php
Messagerie/visiteur/messages.php
Notifications/visiteur/notifications.php
Paramètres/public/settings.php
Devenir loueur/visiteur/devenir-loueur.php
Laisser un avis/public/avis.php?reservation_id=XXX
Payer/public/checkout.php?reservation_id=XXX

Pages légales

PageURL
CGU/public/cgu.php
Confidentialité/public/confidentialite.php
Cookies/public/cookies.php