Chiffre d’affaire sans limites!!!

Sécurisez votre site web pour renforcer votre image de marque, du logo au branding

Chargement…

GUIDE TECHNIQUE · VERSION 1.1.1

Documentation 3DIS Multifiles

Cette documentation concerne 3DIS Multifiles 1.1.1 et son application Windows 1.0.0. Elle décrit l’installation, les réglages CF7, les accès aux documents et leur récupération. Voir les licences et télécharger le plugin.

1. Prérequis et installation

Prévoyez WordPress 6.7+, Contact Form 7 6.1.7+, PHP 8.1+, HTTPS et les extensions PHP Sodium, Fileinfo, Mbstring, OpenSSL et ZIP. Les réseaux WordPress multisites ne sont pas pris en charge. Les limites de votre hébergement restent applicables aux transferts et aux e-mails.

  1. Dans Extensions → Ajouter une extension, téléversez l’archive ZIP, installez puis activez Multifiles.
  2. Ouvrez Extensions → 3DIS Drag & Drop Multifiles — Licence et démarrez l’essai de 15 jours ou activez votre clé.
  3. Dans Outils → 3DIS Multifiles, préparez le stockage privé et lancez le diagnostic.
  4. Configurez un formulaire de test avant de proposer les dépôts à vos visiteurs.

2. Stockage et coffre de clés

L’assistant prépare des dossiers privés si l’hébergement autorise leur création. Le déplacement vers wp-content/uploads/3dis-multifiles/data est une opération distincte, soumise à une vérification de protection HTTP. Le coffre de clés reste séparé, hors de la racine web. Les fichiers chiffrés ne sont pas des documents directement lisibles dans le gestionnaire de fichiers du serveur.

Une configuration manuelle peut utiliser les constantes THREEDIS_MULTIFILES_STORAGE et THREEDIS_MULTIFILES_KEYRING. Elles sont prioritaires sur les chemins enregistrés. Sauvegardez les données, l’index et le coffre correspondant dans des emplacements protégés. Sans les bonnes clés, une sauvegarde de fichiers chiffrés ne peut pas être déchiffrée.

3. Champs et zones de dépôt

Dans l’éditeur CF7, utilisez le générateur 3DIS Multifiles. Donnez un nom unique à chaque zone : documents et complement, par exemple. Les balises sont threedis_multifiles et threedis_multifiles* pour un champ obligatoire. Copiez la balise générée plutôt que de deviner les options.

Réglez les formats, le nombre de fichiers et les tailles. PDF, JPG/JPEG, PNG, TXT et MP4 sont acceptés selon ces réglages. Les formats Office, ZIP et SVG sont exclus. Le moteur limite un champ à 30 fichiers, 100 Mio par fichier et 300 Mio au total ; les quotas et limites serveur peuvent être inférieurs. Le contrôle du type MIME ne remplace pas une analyse antivirus.

Le glisser-déposer et Parcourir alimentent la même sélection. Les zones sont indépendantes. Un fichier prêt n’indique pas encore que le formulaire a été envoyé. Après une erreur de validation CF7, la sélection reste exploitable dans la limite de la session ; un rechargement de page ne la restaure pas automatiquement.

4. Conservation et suppression

L’onglet 3DIS Multifiles du formulaire règle la conservation après succès, le quota, les couleurs et les textes. La conservation par défaut est de 90 jours. Le plafond global est réglé dans Outils → 3DIS Multifiles.

La suppression anticipée est facultative et désactivée par défaut. Pour l’afficher au visiteur, activez-la et choisissez un délai strictement inférieur à la conservation normale : 7 jours au lieu de 90, par exemple. La case du visiteur n’est jamais précochée.

Dans le gestionnaire, sélectionnez les fichiers, choisissez Supprimer définitivement, cochez la confirmation puis appliquez. Un document retiré n’est plus téléchargeable ; une trace d’historique peut subsister. Les copies déjà téléchargées ou reçues par e-mail ne sont pas supprimées.

À expiration, l’accès est refusé même si la purge physique attend encore son exécution. Le nettoyage utilise WP-Cron et les visites, au plus toutes les cinq minutes pour le complément opportuniste. Sur un site sans visite, configurez une tâche serveur pour une purge ponctuelle.

5. E-mail et copie au client

Choisissez séparément le mode E-mail et E-mail (2) : liens sécurisés, pièces jointes déchiffrées, ou les deux. Activez E-mail (2) dans CF7 pour la copie client. Le champ e-mail peut porter le nom de votre choix : utilisez son mail-tag comme destinataire, par exemple [votre-email].

Les mail-tags Multifiles dans le corps du message servent aux liens. Le mode pièces jointes joint les champs Multifiles sélectionnés au message ; il n’existe pas de sélection des pièces champ par champ. Vérifiez les limites du transport SMTP.

Sans liens externes par jeton, le téléchargement exige un accès WordPress autorisé. Si vous autorisez ces liens, leur détenteur peut accéder au document jusqu’à expiration ou révocation. Ce réglage doit correspondre à vos destinataires.

6. Application Windows

  1. Dans Outils → 3DIS Multifiles → Accès à l’application, activez votre accès personnel.
  2. Définissez un mot de passe Multifiles d’au moins 12 caractères. Il est distinct du mot de passe WordPress.
  3. Téléchargez l’application Windows et extrayez toute l’archive.
  4. Lancez 3DIS Multifiles.exe en conservant le dossier engine à côté.
  5. Cliquez sur Connecter mon site et utilisez votre identifiant WordPress avec le mot de passe Multifiles.

Le téléchargement ajoute l’URL du site, jamais les identifiants ni les documents. Les routes de connexion sont fournies par le plugin activé. Le mode connecté nécessite HTTPS, les droits administrateur et une licence ou un essai actif. Désactiver l’accès dans WordPress le révoque. Le mot de passe n’est pas sauvegardé dans l’application.

Le tableau permet de rechercher, filtrer et exporter les documents. Le mode connecté est en lecture : la suppression se fait dans WordPress. Le paquet Windows x64 contient son moteur ; PHP et Python n’ont pas à être installés séparément. L’exécutable 1.0.0 n’est pas signé Authenticode.

7. Récupération hors ligne

Ouvrir une sauvegarde permet de choisir les données chiffrées, leur index et le coffre correspondant. Si le coffre est protégé, saisissez sa phrase de protection. Le déverrouillage se fait en mémoire, sans copie déchiffrée du coffre sur disque. Les documents exportés sont déchiffrés et restent dans le dossier choisi.

Cette récupération locale fonctionne sans WordPress et sans licence active. Elle ne recrée pas des fichiers absents de votre sauvegarde. Protégez l’ordinateur et le dossier d’export selon la sensibilité des documents.

8. Licences et dépannage

Solo : 1 site, Équipe : 5 sites, Agence : 20 sites. L’essai dure 15 jours. Une licence active autorise les nouveaux dépôts, l’accès connecté de l’application et les mises à jour. Après expiration, l’administration peut toujours récupérer les documents existants et la récupération locale reste disponible.

  • Connexion refusée : vérifiez le mot de passe Multifiles, l’activation de votre accès et vos droits.
  • Licence inactive : ouvrez l’écran Licence et lancez Vérifier maintenant.
  • Dépôt refusé : contrôlez le diagnostic, le format, les tailles et les quotas.
  • Courriel incomplet : vérifiez le mode du message, E-mail (2) et les limites SMTP.
  • Fichier expiré : seule une sauvegarde contenant encore le fichier et son coffre peut permettre une récupération locale.

Lire la présentation des usages de Multifiles ou choisir une licence.

Architecture, intégration et maintenance — 3DIS Multifiles

Référence : plugin 1.0.1, application Windows 1.0.0 inchangée · documentation actualisée le 30 septembre 2026. Cette partie complète le guide d’utilisation. Les exemples doivent être adaptés puis testés sur un formulaire ou contenu de recette. Ils ne modifient pas automatiquement votre site.

Composants et cycle d’un document

Dans src/, Plugin raccorde CF7, REST et les courriels ; Store gère sessions, quotas, index et états ; Crypto chiffre et déchiffre les flux ; KeyVault conserve les clés ; TemporaryFiles protège les fichiers temporaires. Admin fournit les réglages et le gestionnaire ; StorageLocation et Diagnostics contrôlent les chemins. DesktopAccess authentifie l’application et DesktopApi fournit sa lecture distante. Licensing raccorde le SDK.

Le cycle est receiving → ready → sending → retained. Un retrait produit removed. Un dépôt prêt n’est pas encore une soumission ; la sélection finale est vérifiée et engagée avant l’envoi CF7. Un échec du courriel principal permet le retour à l’état prêt. CF7 ne répercute pas nécessairement un échec de Mail (2) dans le statut principal : la conservation ne prouve pas la réception de chaque courriel.

Deux champs dans un formulaire

Chaque champ possède un nom distinct et ses propres limites. L’exemple suivant prévoit une zone obligatoire et un complément facultatif. Les tailles sont en octets. Configurez les destinataires dans CF7 et choisissez le mode de chaque message dans l’onglet Multifiles.

<label>Votre e-mail
    [email* votre-email]
</label>

<label>Documents
    [threedis_multifiles* documents maxfiles:5 minfiles:1 maxbytes:10485760 totalbytes:26214400 filetypes:pdf|jpg|jpeg|png]
</label>

<label>Complément facultatif
    [threedis_multifiles complement maxfiles:2 maxbytes:5242880 totalbytes:10485760 filetypes:pdf|txt]
</label>

[submit "Envoyer"]

Pour la copie client, le destinataire Mail (2) est [votre-email] dans cet exemple ; le nom peut être différent. Les balises [documents] et [complement] s’utilisent dans le corps du courriel. N’y placez pas le chemin physique du coffre ou des fichiers chiffrés.

Index, chemins et concurrence

L’index JSON versionné décrit sessions, fichiers, contexte, états et échéances. index.lock protège ses opérations ; l’écriture utilise un temporaire puis un renommage. Le chemin d’un document suit site-ID/formulaire-ID/AAAA-MM/titre-normalise-pageID/champ/UUID.mfenc. Le nom original reste une métadonnée ; le chemin n’est pas renommé lorsque le titre de page change.

Cette architecture impose des plafonds : index de 16 Mio, 10 000 enregistrements de fichiers et 5 000 sessions. Elle n’est pas une certification de stockage distribué sur NFS ni de charge massive. Une sauvegarde doit capturer ensemble index et fichiers : suspendez les dépôts pendant la copie ou utilisez un snapshot cohérent.

Chiffrement et sauvegarde restaurable

Les contenus utilisent Sodium secretstream XChaCha20-Poly1305, avec un en-tête 3DISMF01, l’identifiant de clé, des blocs authentifiés et une terminaison vérifiée. Les noms et métadonnées de l’index ne sont pas chiffrés par ce format. Le serveur détient les clés pour les restitutions : ce n’est pas un chiffrement de bout en bout.

  1. Relevez le chemin effectif du stockage et celui du coffre, y compris les constantes qui peuvent remplacer les réglages.
  2. Sauvegardez l’index et les fichiers chiffrés de façon cohérente, puis le coffre correspondant dans un emplacement séparé et protégé.
  3. Conservez la phrase de protection séparément de la sauvegarde du coffre. Ne publiez jamais le coffre dans la médiathèque.
  4. Testez la récupération sur une copie, avec l’application, dans un dossier de restitution vide. Ouvrez le fichier obtenu et comparez-le à un original de test.
  5. Après restauration serveur, relancez le diagnostic d’accès HTTP et vérifiez les permissions et les alias éventuels de l’hébergement.

Sans les clés correspondantes, l’application ne peut pas reconstituer les documents. Ne restaurez pas un index ancien sur les nouveaux dépôts sans rapprochement. Les copies exportées ou reçues par e-mail restent sous la responsabilité de leur détenteur.

Routes et droits

Les dépôts utilisent POST /wp-json/3dis-multifiles/v1/session, /upload, /cancel et /status. Le contexte signé identifie le site, formulaire, occurrence et champ ; le secret de session autorise les opérations. Origine et en-tête spécifique sont vérifiés. Ne reproduisez pas ces appels en supprimant ces protections.

L’application utilise les routes GET /wp-json/3dis-multifiles-desktop/v1/status, /files et /files/{id}/download. Elle exige HTTPS, l’accès personnel activé, le mot de passe Multifiles, les capacités manage_options et manage_3dis_multifiles, ainsi qu’une autorisation de licence. Dix échecs d’authentification déclenchent une limitation temporaire. L’API est en lecture seule et ne transmet pas le coffre.

L’archive de l’application peut contenir l’adresse du site ; elle ne crée pas les routes, qui sont enregistrées par le plugin. Un proxy qui retire l’en-tête d’authentification peut empêcher la connexion. Les réponses authentifiées et les téléchargements ne doivent pas être mis en cache publiquement.

Hooks et intégrations

wpcf7_posted_data remplace les valeurs publiques par des références durables 3dis-mf:UUID. Les claims techniques restent distincts. Les validations des balises, wpcf7_before_send_mail, wpcf7_mail_components, wp_mail et wpcf7_submit assurent sélection, pièces jointes et état final. Le hook 3dis_multistep_validate_step raccorde les dépôts à la validation intermédiaire.

Le filtre threedis_multifiles_minimum_files($minimum, $tag, $form) permet une règle conditionnelle du nombre minimal. Limitez votre callback au formulaire et champ voulus, renvoyez un entier cohérent avec les limites, et utilisez des données vérifiées côté serveur. Masquer une zone par CSS ne la rend pas facultative. CFDB peut conserver la référence, pas un lien public automatique ; l’incorporation dans Send PDF n’est pas fournie par ce contrat.

Exploitation, mise à jour et retour arrière

La tâche threedis_multifiles_cleanup et le complément opportuniste à la fermeture d’une requête PHP effectuent le nettoyage. Sans visite ni planification externe, la purge physique peut être retardée ; le contrôle d’expiration refuse néanmoins la lecture. Contrôlez la date du dernier nettoyage, les quotas et le diagnostic. Une ligne d’historique retirée n’implique pas que le fichier soit encore téléchargeable.

Avant mise à jour, sauvegardez base, index, stockage et coffre. Contrôlez ensuite deux zones et deux occurrences, le refus des types interdits, le retrait, les modes de courriel, l’application et une récupération locale. En retour arrière, vérifiez la compatibilité du format d’index et du coffre avant de remettre un ancien code. La désactivation ne doit pas servir à purger les fichiers : utilisez les actions explicites de gestion. La recette datée ci-dessous distingue les vérifications effectivement réalisées des contrôles à reproduire lors de vos propres mises à jour.

Retrouver les autres documentations 3DIS · Assistance technique

Version 1.0.1 — transferts et intégration facultative

Mise à jour du 30 septembre 2026. Multifiles 1.0.1 fonctionne avec Contact Form 7 sans Multistep. L’application Windows reste en version 1.0.0 et n’est pas modifiée par cette livraison. Les mécanismes de stockage, chiffrement, liens sécurisés et licence restent inchangés.

Navigation pendant un dépôt

Avec Multistep 0.4.5, la progression est bloquée tant que les fichiers de l’étape sont en attente ou en transfert. Un fichier en erreur doit être renvoyé ou retiré avant de poursuivre. Un fichier prêt reste sélectionné lors des retours entre étapes. L’envoi final reste soumis à la validation serveur CF7 et Multifiles.

Le signal générique 3dis:upload-state communique l’état des transferts, sans divulguer les secrets de session. Multifiles peut annuler 3dis:before-step-change pour ses propres champs de l’étape courante. Le contrat est facultatif : l’absence de l’autre extension ne doit pas empêcher l’usage normal du plugin.

Les requêtes de session et de gestion sont bornées à 30 secondes ; le transfert conserve son délai de 600 secondes. Les réponses devenues obsolètes sont ignorées. Si la connexion échoue, utilisez la reprise ou le retrait proposé, puis vérifiez le format, les quotas et le diagnostic de stockage. Ne retirez pas les contrôles de sécurité pour contourner une erreur.

Recette vérifiée et procédure reproductible

Environnement de production contrôlé le 30 septembre 2026 : WordPress 7.1.2, Contact Form 7 6.1.7, Multifiles 1.0.1 et Multistep 0.4.5. Deux occurrences du même formulaire ont été testées sans perte croisée de sélection. Les limites de nombre, les formats refusés, le retrait d’un fichier, la conservation entre étapes et le blocage pendant transfert ont été vérifiés.

Les courriels client et administrateur ont été reçus. Une pièce jointe et un téléchargement sécurisé ont été comparés au fichier source. Un lien valable a répondu sans session WordPress ; un jeton altéré ou absent a été refusé. Un succès CF7 seul ne prouve pas la réception de Mail (2) : contrôlez séparément les deux boîtes.

Pour reproduire : créez deux zones avec des noms distincts, déposez un fichier autorisé et un fichier interdit, testez le nombre maximal et un retrait, revenez entre les étapes, puis envoyez une soumission fictive vers vos adresses de test. Ouvrez chaque pièce jointe, vérifiez les liens avec et sans accès autorisé selon votre configuration, puis retirez les données de recette avec les outils normaux.

Les délais réseau, reprises, annulations, réponses obsolètes, ordres de chargement des scripts, fonctionnement autonome et affichage à 390 px ont été vérifiés dans le banc local. Ils ne sont pas présentés comme des interruptions provoquées en production. L’application Windows n’a pas fait l’objet d’une nouvelle recette complète dans cette livraison ; aucun PDF de devis ni paiement réel n’a été revalidé. Les prérequis annoncés ne constituent pas une matrice de compatibilité testée sur toutes leurs versions.

Mise à jour et retour arrière 1.0.1

Conservez une sauvegarde cohérente de la base, du stockage, de l’index et du coffre. Remplacez le plugin par l’archive 1.0.1 et purgez les anciens scripts. Pour l’intégration du verrou de navigation, associez Multistep 0.4.5. La mise à jour n’ajoute pas de migration du format de stockage.

En cas de régression, restaurez le dossier 1.0.0 sauvegardé et sa configuration compatible, sans effacer les documents ni remettre un ancien index sur des dépôts nouveaux. Vérifiez les accès et la soumission après purge du cache. Le retour arrière est documenté mais n’a pas été exécuté sur la production pendant cette recette. Les notes de développement historiques présentes dans les sources ne décrivent pas le statut de publication de cette version.

Mise à jour 1.1.0 — accès propriétaire et ressources réutilisables

Publication du 1er octobre 2026. Cette section décrit la version historique 1.1.0. Consulter la version actuelle et les licences. L’application Windows reste en version 1.0.0. Les sections de recette 1.0.1 ci-dessus sont historiques ; les précisions suivantes décrivent la nouvelle version.

Configuration par champ, désactivée par défaut

Dans l’onglet 3DIS Multifiles du formulaire Contact Form 7, deux cases indépendantes permettent d’autoriser l’utilisateur connecté à accéder à ses propres fichiers et de conserver les fichiers jusqu’à suppression explicite. Le nom technique exact du champ, casse comprise, est utilisé. Par exemple, activez manuellement ces options pour ABMODELENTETE et laissez ABRIBFILE désactivé. Aucun champ ni formulaire existant n’est activé automatiquement.

L’identité provient de la session WordPress lors de la création du dépôt, jamais d’un e-mail ou identifiant fourni par le navigateur. Un abonné authentifié peut accéder à ses propres ressources sans droit administrateur. Un dépôt commencé anonymement reste sans propriétaire. Excluez les pages connectées du cache partagé ; rechargez la page si le nonce a expiré.

Conservation, révocation et confidentialité

Une ressource devient réutilisable après le succès du formulaire. La conservation jusqu’à suppression exige l’option active à la création de session et au succès ; elle n’est pas rétroactive. Les dépôts abandonnés restent temporaires et une demande de suppression anticipée reste prioritaire. La conservation seule ne donne aucun accès propriétaire.

Désactiver l’accès révoque immédiatement la voie propriétaire, sans modifier les voies administrateur et jeton. Désactiver la conservation ne raccourcit pas la durée des ressources déjà retenues : supprimez-les explicitement dans le gestionnaire si nécessaire. La fin d’un abonnement ou la suppression d’un compte ne déclenche pas de purge automatique. Les anciennes ressources sans propriétaire ne sont pas attribuées par e-mail. Supprimer un fichier ne retire pas ses copies déjà envoyées par courriel.

API PHP et intégration PDF

Après plugins_loaded, avec WordPress et CF7 chargés, instanciez new \ThreeDIS\Multifiles\OwnerAccess(new \ThreeDIS\Multifiles\Plugin()). references($formId, $field, $offset, $limit) liste les références du compte courant, avec une limite de 1 à 100. La pagination porte sur le compartiment propriétaire ; les entrées expirées peuvent raccourcir une page. L’index secondaire évite un parcours de tous les fichiers, mais l’index JSON global reste chargé sous verrou.

url($reference) fournit une URL stable privée admin-post.php?action=tdmf_owner : ce n’est pas un jeton public. Chaque requête vérifie le compte, le propriétaire, le formulaire et le champ autorisé, la conservation et l’expiration. PNG/JPEG sont affichés avec leur MIME réel ; les autres fichiers sont téléchargés. Les réponses utilisent private/no-store, Vary: Cookie et nosniff.

withFile($reference, $consume) remet un chemin déchiffré privé au callback synchrone. Le moteur PDF doit lire et incorporer la ressource avant son retour ; ne conservez pas le chemin pour plus tard. Le temporaire est nettoyé, y compris en cas d’exception. Revalidez toute référence stockée dans vos données métier et gérez les exceptions sans exposer les chemins ni secrets. N’utilisez pas l’URL privée comme source d’un moteur PDF sans cookies.

withServerFile($reference, $authorize, $consume) permet une génération PHP hors connexion, sans route HTTP de contournement. L’autorisation reçoit reference, owner_id, form_id et field ; elle doit retourner strictement true après contrôle métier côté serveur. Vérifiez la tâche autorisée et le lien entre document, compte, formulaire et référence dans vos données fiables. Un identifiant du navigateur ou un callback toujours vrai ne constitue pas une autorisation. La politique est revérifiée après ce contrôle.

Aucun sélecteur métier, espace client, plugin PDF ni intégration Deasy Life n’est créé automatiquement. Il n’y a pas de nouvelle dépendance entre addons. Les exemples et contrats complets sont dans docs/09-acces-proprietaire.md de l’archive.

Vérifications réalisées et limites

En production : dépôt d’un PNG, refus du champ obligatoire vide, soumission réelle, réception administrative avec pièce jointe confirmée, accès du propriétaire connecté, refus anonyme et révocation/réactivation par réglage ont été vérifiés. Le formulaire de recette isolé a ensuite été remis en mode démonstration ; le formulaire commercial n’a pas été remplacé.

En local : 34 assertions WordPress/API, 7 contrôles HTTP, 37 assertions de stockage, 16 contrôles de chiffrement, 10 groupes de tests navigateur avec endpoints simulés, 25 fichiers PHP contrôlés et vérification JavaScript. Le scénario de compte abonné distinct et l’incorporation dans un PDF réel ont été contrôlés localement, pas comme une recette PDF complète en production. La copie client Yopmail de cette recette n’est pas confirmée. L’application Windows n’a pas fait l’objet d’une nouvelle recette complète. Ces résultats ne constituent pas une compatibilité vérifiée avec toutes les versions de WordPress, CF7 ou moteurs PDF.

Les notes de recette incluses dans le ZIP reflètent la préparation locale avant publication. Cette section complète leur statut avec les constats de production, sans modifier l’archive testée.

Mise à jour et retour arrière

Sauvegardez de façon cohérente le code précédent, la base, l’index, les fichiers privés et le coffre de clés. N’écrasez aucune clé. L’index reste en version 1 avec des propriétés facultatives ; chiffrement et chemins physiques sont inchangés. Une expiration permanente utilise 253402300799, jamais zéro.

Pour revenir à la 1.0.1, remplacez uniquement le code avec l’archive sauvegardée. Les nouvelles routes et API ne seront plus disponibles. Les ressources permanentes restent conservées ; l’ancien affichage peut montrer l’année 9999 et leur suppression doit être gérée explicitement. Ne restaurez pas un ancien index par-dessus des dépôts récents sans restauration cohérente complète. Le retour arrière n’a pas été exécuté sur la production pendant cette recette.

Version 1.1.1 — compte créé pendant la soumission

Version publiée le 2 octobre 2026 sur le serveur officiel de licences. Le plugin reste autonome : il ne crée aucun compte automatiquement et n’impose aucun autre addon 3DIS. L’application Windows reste en version 1.0.0.

Contrat PHP et ordre des traitements

\ThreeDIS\Multifiles\SubmissionOwner::request(
    $submission,
    $userId,
    ['nom_exact_du_champ']
);

Appelez cette méthode depuis votre traitement serveur existant, après la réussite vérifiée de wp_insert_user(), dans wpcf7_before_send_mail à priorité 10 (impérativement avant 20). Utilisez la soumission CF7 courante, un identifiant issu de la création ou d’une authentification serveur fiable, et les noms exacts des champs. N’acceptez jamais un identifiant ou un e-mail envoyé par le navigateur comme preuve de propriété. Les erreurs sont signalées par exception.

L’appel enregistre une intention pour cette requête PHP. Multifiles revérifie les preuves du dépôt au verrouillage, puis applique le propriétaire dans wpcf7_submit à priorité 90, uniquement pour mail_sent et si le compte existe encore et l’accès propriétaire du champ est actif. Pour exploiter la nouvelle ressource, intervenez après cette finalisation, par exemple à priorité 100. Le hook wpcf7_mail_sent est trop tôt pour cette réutilisation.

Échecs, sécurité et retour arrière

Un échec d’envoi ne rattache pas les fichiers, mais le compte peut déjà exister : votre intégration doit prévoir une reprise authentifiée. Aucun ancien dépôt anonyme n’est récupéré par rapprochement d’e-mail. Répéter la même intention avant verrouillage est idempotent ; un propriétaire contradictoire est refusé. L’accès propriétaire et la conservation restent deux choix indépendants par champ.

Sauvegardez ensemble index, documents et coffre de clés. Un retour au code 1.1.0 exige de retirer ou conditionner les appels à la nouvelle classe ; ne restaurez pas un ancien index sur des dépôts récents. Le format de stockage et le chiffrement ne changent pas. Le contrat détaillé est inclus dans docs/11-rattachement-soumission.md.

Recette du 2 octobre 2026

Sur 3DIS Development, le parcours navigateur initialement anonyme a créé un compte pendant la soumission, déposé deux PNG et obtenu le succès CF7. La réception administrative des deux pièces jointes a été confirmée. Les contrôles serveur ont vérifié le rattachement dans la même requête, l’accès au document autorisé, les refus pour un anonyme et un autre abonné, l’exclusion du second champ, l’idempotence et le nettoyage du temporaire déchiffré. Ces contrôles d’accès ont été effectués dans les contextes utilisateur serveur ; ils ne sont pas présentés comme de nouvelles connexions navigateur de chaque compte. Aucun nouvel essai sur téléphone physique ni nouvelle recette complète Windows n’est revendiqué.

Multifiles 1.2.0 — Copie déchiffrée accessible par lien

Version stable publiée le 2 octobre 2026. Dans l’onglet 3DIS Multifiles du formulaire CF7, activez « Créer une copie déchiffrée accessible par lien » uniquement pour les champs souhaités. Chaque champ détecté possède son propre réglage, désactivé par défaut. Il concerne les nouveaux dépôts ; les fichiers existants ne sont pas convertis.

Effet du réglage

L’original reste chiffré dans le stockage privé. Après la finalisation réussie de la soumission, une copie distincte devient accessible à une URL stable et difficile à deviner, sans connexion WordPress. Les sorties de liens existantes, notamment les courriels, utilisent cette URL pour les champs concernés. Les autres champs conservent leur fonctionnement habituel. Aucune nouvelle balise CF7, aucun bouton de partage et aucune gestion de groupe ne sont nécessaires.

Toute personne possédant le lien peut consulter et télécharger la copie. Le lien peut être transmis ; ce réglage ne convient pas à un document devant rester réservé à un compte. La suppression sur le serveur ne supprime pas les copies déjà téléchargées par des tiers.

URL directe, MIME et stockage

Les nouvelles copies sont servies directement depuis le répertoire public dédié wp-content/uploads/3dis-multifiles-public/, avec un nom aléatoire et une extension correspondant au fichier. Un PNG peut ainsi être utilisé par son URL dans un document. Ce répertoire est distinct du coffre privé et ne doit autoriser ni exécution de scripts ni listing. Vérifiez les règles équivalentes sur un serveur qui n’interprète pas les fichiers .htaccess, notamment Nginx. N’exposez jamais le coffre, les index ou les clés.

Les anciens liens de copie utilisant admin-post.php restent compatibles ; leur présence dans un ancien courriel ne signifie pas qu’un nouveau dépôt utilisera ce format. Ne remplacez pas un lien réel par un nom d’exemple.

Conservation, suppression et limite des fichiers statiques

La copie suit la conservation du document et est supprimée avec l’original lors de la suppression manuelle, anticipée ou du nettoyage. En conservation permanente, elle reste disponible jusqu’à suppression. Une validation refusée ou une soumission échouée ne doit pas publier la copie. Si la création échoue, l’original est conservé et le mécanisme d’erreur existant signale l’échec ; aucun lien de copie inexistante ne doit être fourni.

Limite du lien direct statique : l’accès cesse lors de la suppression physique du fichier, pas par une vérification PHP à chaque lecture. Si le nettoyage planifié est retardé, la copie peut rester accessible après l’échéance prévue. Un cache intermédiaire peut également conserver une réponse : tenir compte de ses règles et le purger lorsque nécessaire. Pour un retrait strict à une heure donnée, un accès contrôlé est requis plutôt qu’un fichier statique.

Recette et exploitation

La recette navigateur a utilisé deux champs, l’un public et l’autre privé, avec plusieurs fichiers. Les copies PNG et TXT ont répondu sans connexion avec un contenu identique et le type MIME attendu ; le lien privé a refusé l’accès anonyme. La suppression du TXT public a produit une réponse 404 tout en laissant l’autre copie accessible. L’installation officielle de 1.2.0 a été contrôlée. Les contrôles de courriels et de pièces jointes réalisés sur les candidats ne prouvent pas à eux seuls leur réception sur chaque installation ; vérifiez votre configuration. Aucun nouvel essai complet de récupération Windows ou de téléphone physique n’est revendiqué pour cette livraison.

Sauvegardez conjointement les originaux, index et clés avant mise à jour. Ne restaurez pas un ancien index au-dessus de nouveaux dépôts. L’application Windows reste en version 1.0.0 ; cette livraison modifie le plugin WordPress.

Multifiles 1.2.1 — Fiabilisation des mises à jour sous licence

Publication du 2 octobre 2026. La recherche conserve une cadence de douze heures. WordPress affiche la version disponible ; seul l’administrateur décide de cliquer sur « Mettre à jour ». Aucun réglage de mise à jour automatique n’est activé par cette correction.

La recherche vérifie les métadonnées signées et les conserve 24 heures, sans y stocker le jeton de téléchargement. Un jeton neuf est demandé au moment du téléchargement. La licence, la version, la signature, la destination, l’expiration, la taille et l’empreinte SHA-256 sont vérifiées ; un refus ou un fichier altéré empêche l’installation.

Le bouton de vérification de licence relance aussi la recherche, avec une limite d’une fois par minute et un verrou contre les appels concurrents. Une visite de l’administration peut effectuer le contrôle arrivé à échéance même lorsque WP-Cron est désactivé. Cela ne modifie pas la configuration cron de l’hébergement. Les anciens liens signés conservés dans une annonce WordPress ne sont plus réutilisés.

Les licences, données et réglages existants sont conservés. Shop et PAYMENT embarquent désormais chacun leur copie isolée du SDK pour éviter une dépendance à l’ordre de chargement. Multistep 0.4.10 possédait déjà ce mécanisme ; les versions associées sont Shop 0.3.8, PAYMENT 1.1.2, Multifiles 1.2.1 et CFDB Optimizer 1.1.2.

Sur 3dis-development.com, les quatre candidats ont conservé leur licence valide ; les quatre téléchargements officiels ont été vérifiés, puis les quatre mises à jour manuelles natives vers les versions stables ont réussi. Les tests locaux couvrent aussi le refus des liens expirés, des fichiers corrompus et des autorisations refusées. Ces contrôles concernent le mécanisme de mise à jour, pas une nouvelle recette de tous les paiements ou formulaires.

Si le site héberge lui-même son serveur de licences, la maintenance pendant une mise à jour AJAX peut interrompre la demande de jeton. Le parcours WordPress dans une page complète a été validé sur cette configuration. Ne pas contourner un refus en exposant publiquement le ZIP ; utiliser le paquet officiel autorisé et le téléversement administrateur si nécessaire. Sauvegarder le site avant toute mise à jour.