{"id":2026,"date":"2025-12-25T11:24:50","date_gmt":"2025-12-25T10:24:50","guid":{"rendered":"https:\/\/atti.tn\/?page_id=2026"},"modified":"2025-12-25T12:53:28","modified_gmt":"2025-12-25T11:53:28","slug":"verifier-attestation","status":"publish","type":"page","link":"https:\/\/atti.tn\/index.php\/verifier-attestation\/","title":{"rendered":""},"content":{"rendered":"    \n    <div class=\"atti-verification-container\">\n        <div class=\"atti-verification-header\">\n            <h1><span class=\"atti-icon\">\ud83d\udd0d<\/span> V\u00e9rifier une attestation ATTI<\/h1>\n            <p class=\"atti-subtitle\">V\u00e9rifiez l'authenticit\u00e9 d'une attestation d'adh\u00e9sion, d'organisation ou de participation<\/p>\n        <\/div>\n        \n        <!-- Formulaire de v\u00e9rification -->\n        <div class=\"atti-verification-form-container\">\n            <h2>V\u00e9rification manuelle<\/h2>\n            <p class=\"atti-form-description\">Entrez les informations de l'attestation<\/p>\n            \n            <form method=\"post\" class=\"atti-verification-form\">\n                <input type=\"hidden\" id=\"atti_verification_nonce\" name=\"atti_verification_nonce\" value=\"39db855c20\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/index.php\/wp-json\/wp\/v2\/pages\/2026\" \/>                \n                <div class=\"atti-form-group\">\n                    <label for=\"atti_id\">ID Attestation (optionnel)<\/label>\n                    <input type=\"text\" id=\"atti_id\" name=\"atti_id\" \n                           placeholder=\"ATTI-2024-123-ABC123\"\n                           value=\"\">\n                    <small class=\"atti-form-help\">Trouv\u00e9 en bas de l'attestation<\/small>\n                <\/div>\n                \n                <div class=\"atti-form-row\">\n                    <div class=\"atti-form-group\">\n                        <label for=\"atti_nom\">Nom *<\/label>\n                        <input type=\"text\" id=\"atti_nom\" name=\"atti_nom\" required\n                               value=\"\">\n                    <\/div>\n                    \n                    <div class=\"atti-form-group\">\n                        <label for=\"atti_prenom\">Pr\u00e9nom *<\/label>\n                        <input type=\"text\" id=\"atti_prenom\" name=\"atti_prenom\" required\n                               value=\"\">\n                    <\/div>\n                <\/div>\n                \n                <div class=\"atti-form-group\">\n                    <label for=\"atti_annee\">Ann\u00e9e d'adh\u00e9sion *<\/label>\n                    <select id=\"atti_annee\" name=\"atti_annee\" required>\n                        <option value=\"\">S\u00e9lectionnez une ann\u00e9e<\/option>\n                        <option value=\"2026\" >2026<\/option><option value=\"2025\" >2025<\/option><option value=\"2024\" >2024<\/option><option value=\"2023\" >2023<\/option><option value=\"2022\" >2022<\/option><option value=\"2021\" >2021<\/option><option value=\"2020\" >2020<\/option>                    <\/select>\n                <\/div>\n                \n                <div class=\"atti-form-submit\">\n                    <button type=\"submit\" name=\"verifier_attestation\" class=\"atti-btn atti-btn-primary\">\n                        <span class=\"atti-btn-icon\">\ud83d\udd0d<\/span> V\u00e9rifier l'attestation\n                    <\/button>\n                <\/div>\n                \n                <p class=\"atti-form-note\">\n                    <small>* Champs obligatoires si pas d'ID fourni<\/small>\n                <\/p>\n            <\/form>\n        <\/div>\n        \n        <!-- Scanner QR Code -->\n        <div class=\"atti-qr-scanner-container\">\n            <h2>\ud83d\udcf1 Scan QR Code<\/h2>\n            <p>Scannez le QR code sur l'attestation<\/p>\n            <div id=\"atti-qr-reader\" style=\"width: 100%; max-width: 400px; margin: 0 auto;\"><\/div>\n            <p class=\"atti-qr-hint\">Le scan redirigera automatiquement vers cette page avec les informations<\/p>\n        <\/div>\n        \n        <!-- R\u00e9sultat de la v\u00e9rification -->\n                \n        <!-- Informations -->\n        <div class=\"atti-info-section\">\n            <h3>\ud83d\udccb Comment \u00e7a marche ?<\/h3>\n            <div class=\"atti-steps\">\n                <div class=\"atti-step\">\n                    <div class=\"atti-step-number\">1<\/div>\n                    <h4>Entrez les informations<\/h4>\n                    <p>ID attestation ou nom\/pr\u00e9nom\/ann\u00e9e de l'adh\u00e9rent<\/p>\n                <\/div>\n                <div class=\"atti-step\">\n                    <div class=\"atti-step-number\">2<\/div>\n                    <h4>V\u00e9rification dans les trois registres<\/h4>\n                    <p>Recherche dans les attestations d'adh\u00e9sion, d'organisation et de participation<\/p>\n                <\/div>\n                <div class=\"atti-step\">\n                    <div class=\"atti-step-number\">3<\/div>\n                    <h4>R\u00e9sultats distincts<\/h4>\n                    <p>Affiche les r\u00e9sultats s\u00e9par\u00e9ment pour chaque type d'attestation<\/p>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    \n    <!-- Styles -->\n    <style>\n    .atti-verification-container {\n        max-width: 1200px;\n        margin: 0 auto;\n        padding: 20px;\n        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    }\n    \n    .atti-verification-header {\n        text-align: center;\n        margin-bottom: 40px;\n    }\n    \n    .atti-verification-header h1 {\n        color: #1a237e;\n        font-size: 28px;\n        margin-bottom: 10px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        gap: 10px;\n    }\n    \n    .atti-subtitle {\n        color: #666;\n        font-size: 16px;\n    }\n    \n    .atti-verification-form-container {\n        background: white;\n        border-radius: 10px;\n        padding: 30px;\n        margin-bottom: 30px;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n    }\n    \n    .atti-form-group {\n        margin-bottom: 20px;\n    }\n    \n    .atti-form-group label {\n        display: block;\n        margin-bottom: 8px;\n        font-weight: 600;\n        color: #333;\n    }\n    \n    .atti-form-group input,\n    .atti-form-group select {\n        width: 100%;\n        padding: 12px 15px;\n        border: 1px solid #ddd;\n        border-radius: 6px;\n        font-size: 16px;\n        box-sizing: border-box;\n    }\n    \n    .atti-form-row {\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 15px;\n    }\n    \n    .atti-form-submit {\n        margin-top: 30px;\n    }\n    \n    .atti-btn {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 10px;\n        padding: 14px 28px;\n        border-radius: 6px;\n        font-size: 16px;\n        font-weight: 600;\n        text-decoration: none;\n        border: none;\n        cursor: pointer;\n        width: 100%;\n    }\n    \n    .atti-btn-primary {\n        background: #1a237e;\n        color: white !important;\n    }\n    \n    .atti-btn-primary:hover {\n        background: #283593;\n    }\n    \n    .atti-qr-scanner-container {\n        background: white;\n        border-radius: 10px;\n        padding: 30px;\n        margin-bottom: 30px;\n        text-align: center;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n    }\n    \n    .atti-verification-result {\n        margin: 40px 0;\n    }\n    \n    .atti-info-section {\n        background: #f1f8ff;\n        border-radius: 10px;\n        padding: 30px;\n        margin-top: 40px;\n    }\n    \n    .atti-steps {\n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n        gap: 30px;\n        margin-top: 30px;\n    }\n    \n    .atti-step {\n        text-align: center;\n    }\n    \n    .atti-step-number {\n        background: #1a237e;\n        color: white;\n        width: 40px;\n        height: 40px;\n        border-radius: 50%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        font-weight: bold;\n        margin: 0 auto 15px;\n    }\n    \n    \/* R\u00e9sultats *\/\n    .atti-results-container {\n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n        gap: 20px;\n        margin-top: 30px;\n    }\n    \n    @media (max-width: 768px) {\n        .atti-results-container {\n            grid-template-columns: 1fr;\n        }\n    }\n    \n    .atti-result-card {\n        background: white;\n        border-radius: 10px;\n        padding: 25px;\n        box-shadow: 0 5px 15px rgba(0,0,0,0.08);\n        border-top: 4px solid;\n        height: 100%;\n    }\n    \n    .atti-result-source-header {\n        display: flex;\n        align-items: center;\n        gap: 10px;\n        margin-bottom: 20px;\n        padding-bottom: 15px;\n        border-bottom: 1px solid #eee;\n    }\n    \n    .atti-result-source-icon {\n        font-size: 24px;\n    }\n    \n    .atti-result-source-title {\n        margin: 0;\n        font-size: 18px;\n        color: #333;\n    }\n    \n    .atti-result-authentique {\n        border-top-color: #28a745;\n    }\n    \n    .atti-result-invalide {\n        border-top-color: #dc3545;\n    }\n    \n    .atti-result-non-trouve {\n        border-top-color: #6c757d;\n    }\n    \n    .atti-result-details {\n        display: grid;\n        grid-template-columns: 1fr;\n        gap: 15px;\n        margin: 20px 0;\n    }\n    \n    .atti-detail-item {\n        background: #f8f9fa;\n        padding: 15px;\n        border-radius: 8px;\n    }\n    \n    .atti-detail-label {\n        font-size: 13px;\n        color: #666;\n        margin-bottom: 5px;\n        display: block;\n    }\n    \n    .atti-detail-value {\n        font-size: 16px;\n        font-weight: 600;\n        color: #333;\n    }\n    \n    .atti-result-message {\n        padding: 15px;\n        border-radius: 8px;\n        margin: 15px 0;\n        text-align: center;\n    }\n    \n    .atti-message-success {\n        background: #d4edda;\n        color: #155724;\n        border: 1px solid #c3e6cb;\n    }\n    \n    .atti-message-error {\n        background: #f8d7da;\n        color: #721c24;\n        border: 1px solid #f5c6cb;\n    }\n    \n    .atti-message-info {\n        background: #d1ecf1;\n        color: #0c5460;\n        border: 1px solid #bee5eb;\n    }\n    \n    .atti-result-actions {\n        display: flex;\n        gap: 10px;\n        margin-top: 20px;\n    }\n    \n    .atti-btn-small {\n        padding: 10px 15px;\n        font-size: 14px;\n        width: auto;\n    }\n    \n    @media (max-width: 768px) {\n        .atti-form-row {\n            grid-template-columns: 1fr;\n        }\n        \n        .atti-steps {\n            grid-template-columns: 1fr;\n        }\n        \n        .atti-result-actions {\n            flex-direction: column;\n        }\n    }\n    <\/style>\n    \n    <!-- Scripts -->\n    <script src=\"https:\/\/unpkg.com\/html5-qrcode\"><\/script>\n    <script>\n    document.addEventListener('DOMContentLoaded', function() {\n        \/\/ Scanner QR Code\n        const qrReader = document.getElementById('atti-qr-reader');\n        if (qrReader) {\n            const html5QrCode = new Html5Qrcode(\"atti-qr-reader\");\n            \n            html5QrCode.start(\n                { facingMode: \"environment\" },\n                { fps: 10, qrbox: 250 },\n                (decodedText) => {\n                    \/\/ Parser l'URL\n                    try {\n                        const url = new URL(decodedText);\n                        const params = url.searchParams;\n                        \n                        \/\/ R\u00e9cup\u00e9rer les param\u00e8tres\n                        const id = params.get('id');\n                        const nom = params.get('nom');\n                        const prenom = params.get('prenom');\n                        const annee = params.get('annee');\n                        \n                        \/\/ Rediriger avec les param\u00e8tres\n                        let redirectUrl = window.location.pathname + '?';\n                        if (id) redirectUrl += 'id=' + encodeURIComponent(id) + '&';\n                        if (nom) redirectUrl += 'nom=' + encodeURIComponent(nom) + '&';\n                        if (prenom) redirectUrl += 'prenom=' + encodeURIComponent(prenom) + '&';\n                        if (annee) redirectUrl += 'annee=' + encodeURIComponent(annee);\n                        \n                        window.location.href = redirectUrl;\n                        \n                    } catch (e) {\n                        console.error('Erreur scan QR:', e);\n                        alert('QR code non valide');\n                    }\n                }\n            ).catch(err => {\n                console.log('Scanner non disponible:', err);\n                qrReader.innerHTML = \n                    '<p style=\"color: #666; padding: 20px;\">' +\n                    '\u26a0\ufe0f Scanner non disponible. Utilisez le formulaire manuel.' +\n                    '<\/p>';\n            });\n        }\n    });\n    <\/script>\n    \n    \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-header-image","meta":{"footnotes":""},"class_list":["post-2026","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/pages\/2026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/comments?post=2026"}],"version-history":[{"count":3,"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/pages\/2026\/revisions"}],"predecessor-version":[{"id":2035,"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/pages\/2026\/revisions\/2035"}],"wp:attachment":[{"href":"https:\/\/atti.tn\/index.php\/wp-json\/wp\/v2\/media?parent=2026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}