403Webshell
Server IP : 188.114.96.3  /  Your IP : 216.73.216.143
Web Server : Apache
System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64
User :  ( 3194769)
PHP Version : 8.5.12
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /polana/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /polana/admin/polana-analityka.php
<?php
declare(strict_types=1);
require_once dirname(__DIR__) . '/includes/functions.php';
require_admin_role();

$allowedModes = ['off', 'direct', 'gtm'];
$keys = ['polana_tracking_mode','polana_ga4_id','polana_gtm_id','polana_meta_pixel_id'];
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    verify_csrf();
    $mode = strtolower(trim((string)($_POST['polana_tracking_mode'] ?? 'off')));
    $ga4 = strtoupper(trim((string)($_POST['polana_ga4_id'] ?? '')));
    $gtm = strtoupper(trim((string)($_POST['polana_gtm_id'] ?? '')));
    $pixel = trim((string)($_POST['polana_meta_pixel_id'] ?? ''));
    $errors = [];
    if (!in_array($mode, $allowedModes, true)) $errors[] = 'Nieprawidłowy tryb analityki.';
    if ($ga4 !== '' && !preg_match('/^G-[A-Z0-9]{5,20}$/', $ga4)) $errors[] = 'GA4 powinno mieć format G-XXXXXXXXXX.';
    if ($gtm !== '' && !preg_match('/^GTM-[A-Z0-9]{4,20}$/', $gtm)) $errors[] = 'GTM powinno mieć format GTM-XXXXXXX.';
    if ($pixel !== '' && !preg_match('/^[0-9]{5,25}$/', $pixel)) $errors[] = 'Meta Pixel ID musi zawierać wyłącznie cyfry.';
    if ($mode === 'direct' && $ga4 === '' && $pixel === '') $errors[] = 'W trybie bezpośrednim podaj GA4 i/lub Meta Pixel.';
    if ($mode === 'gtm' && $gtm === '') $errors[] = 'W trybie GTM podaj identyfikator kontenera.';
    if ($errors) {
        foreach ($errors as $err) flash('error', $err);
    } else {
        $stmt = db()->prepare('INSERT INTO settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)');
        foreach (['polana_tracking_mode'=>$mode,'polana_ga4_id'=>$ga4,'polana_gtm_id'=>$gtm,'polana_meta_pixel_id'=>$pixel] as $key=>$value) {
            $stmt->execute([$key, $value]);
        }
        admin_log('polana_tracking_settings', 'Zmieniono konfigurację analityki i pikseli.');
        flash('success', 'Ustawienia analityki zapisane. Skrypty uruchamiają się dopiero po zgodzie odwiedzającego.');
        redirect('/admin/polana-analityka.php');
    }
}
$mode = setting('polana_tracking_mode','off');
$ga4 = setting('polana_ga4_id','');
$gtm = setting('polana_gtm_id','');
$pixel = setting('polana_meta_pixel_id','');
$core = @file_get_contents(dirname(__DIR__) . '/includes/functions.php');
$installed = is_string($core) && str_contains($core, 'POLANA_TRACKING_HEAD_V174') && str_contains($core, 'POLANA_TRACKING_FOOTER_V174');
render_admin_header('Analityka i piksele');
?>
<style>
.pa174-wrap{max-width:1120px;margin:auto}.pa174-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.pa174-card{background:var(--panel,#fff);color:inherit;border:1px solid #7774;border-radius:16px;padding:22px;margin-bottom:18px}.pa174-card h2{margin:0 0 12px;font-size:21px}.pa174-card p{line-height:1.55}.pa174-card label{display:block;font-weight:700;margin:16px 0 6px}.pa174-card input,.pa174-card select{display:block;width:100%;max-width:100%;box-sizing:border-box;border:1px solid #7777;background:var(--input-bg,#fff);color:inherit;border-radius:9px;padding:12px;font-size:15px}.pa174-note{background:#5b793013;border-left:4px solid #879956;padding:12px 15px;border-radius:7px;font-size:14px}.pa174-badge{display:inline-block;border:1px solid #7787a6;padding:6px 10px;border-radius:99px;font-size:13px;font-weight:700}.pa174-links{display:flex;gap:9px;flex-wrap:wrap}.pa174-links a,.pa174-save{display:inline-block;text-decoration:none;background:#253b29;color:#fff;border-radius:9px;padding:11px 15px;font-weight:700;border:0;cursor:pointer}.pa174-save{background:#d5a758;color:#1d241d;font-size:15px;margin-top:20px}.pa174-small{font-size:13px;opacity:.82}.pa174-card ul{padding-left:21px;line-height:1.75}@media(max-width:780px){.pa174-grid{grid-template-columns:1fr}.pa174-card{padding:16px}}
</style>
<div class="pa174-wrap">
  <div class="admin-title-row"><div><h1>Analityka i piksele</h1><p>Google Analytics 4 · Google Tag Manager · Meta Pixel · zgody cookie</p></div></div>
  <div class="pa174-card">
    <span class="pa174-badge"><?= $installed ? '✓ Integracja z szablonem zainstalowana' : '⚠ Wymagana instalacja hooków' ?></span>
    <p>Nie wklejaj kodu Google ręcznie w kilka miejsc. Wybierz <strong>jeden tryb</strong>. W trybie GTM konfigurujesz GA4 i Meta Pixel w kontenerze Google Tag Manager, a strona nie dołącza ich ponownie.</p>
    <?php if (!$installed): ?><p><a href="/admin/polana-v174-instalator.php">Uruchom instalator V17.4 →</a></p><?php endif; ?>
  </div>
  <form method="post" class="pa174-card">
    <?= csrf_field() ?>
    <h2>Konfiguracja pomiaru</h2>
    <label for="pa174-mode">Sposób uruchamiania</label>
    <select id="pa174-mode" name="polana_tracking_mode">
      <option value="direct" <?= $mode === 'direct' ? 'selected' : '' ?>>GA4 / Meta Pixel bezpośrednio (prosty start)</option>
      <option value="gtm" <?= $mode === 'gtm' ? 'selected' : '' ?>>Google Tag Manager (jeden kontener)</option>
      <option value="off" <?= $mode === 'off' ? 'selected' : '' ?>>Wyłącz pomiar</option>
    </select>
    <div class="pa174-grid">
      <div><label for="pa174-ga4">Google Analytics 4 — Measurement ID</label><input id="pa174-ga4" name="polana_ga4_id" value="<?= e($ga4) ?>" placeholder="G-H5C811DZHV" maxlength="24"><p class="pa174-small">W trybie bezpośrednim aktywuje GA4 po zgodzie na analitykę.</p></div>
      <div><label for="pa174-gtm">Google Tag Manager — Container ID</label><input id="pa174-gtm" name="polana_gtm_id" value="<?= e($gtm) ?>" placeholder="GTM-XXXXXXX" maxlength="24"><p class="pa174-small">W trybie GTM strona uruchamia tylko kontener; tagi konfigurujesz w GTM.</p></div>
      <div><label for="pa174-pixel">Meta Pixel — Pixel ID</label><input id="pa174-pixel" name="polana_meta_pixel_id" value="<?= e($pixel) ?>" placeholder="np. 123456789012345" maxlength="25"><p class="pa174-small">W trybie bezpośrednim aktywuje Meta Pixel po zgodzie marketingowej.</p></div>
    </div>
    <div class="pa174-note"><strong>RODO / prywatność:</strong> banner pozwala osobno zaakceptować analitykę i marketing, odrzucić je oraz później zmienić decyzję. Skrypty nie są pobierane przed zgodą. Uzupełnij też politykę prywatności i zweryfikuj inne narzędzia cookies działające na stronie.</div>
    <button class="pa174-save" type="submit">Zapisz ustawienia analityki</button>
  </form>
  <div class="pa174-grid">
    <div class="pa174-card"><h2>Google Analytics 4</h2><p>Twój identyfikator: <strong><?= e($ga4 ?: 'nie ustawiono') ?></strong></p><p>W raporcie <strong>Czas rzeczywisty</strong> sprawdzisz ruch po zaakceptowaniu analityki na stronie.</p><div class="pa174-links"><a target="_blank" rel="noopener" href="https://analytics.google.com/">Otwórz GA4 ↗</a><a target="_blank" rel="noopener" href="https://tagassistant.google.com/">Tag Assistant ↗</a></div></div>
    <div class="pa174-card"><h2>Google Tag Manager</h2><p>Jeżeli wybierzesz GTM, dodaj w nim tag Google dla <strong><?= e($ga4 ?: 'identyfikatora GA4') ?></strong> oraz opcjonalnie Meta Pixel. Skonfiguruj w GTM wymaganą zgodę dla każdego tagu, aby nie uruchamiał się bez pozwolenia.</p><div class="pa174-links"><a target="_blank" rel="noopener" href="https://tagmanager.google.com/">Otwórz GTM ↗</a></div></div>
    <div class="pa174-card"><h2>Meta Pixel</h2><p>Identyfikator jest edytowalny. Wybierz go z <strong>Menedżera zdarzeń Meta</strong>. Nie dodawaj równolegle drugiego piksela przez GTM.</p><div class="pa174-links"><a target="_blank" rel="noopener" href="https://business.facebook.com/events_manager2/">Menedżer zdarzeń ↗</a></div></div>
    <div class="pa174-card"><h2>Co mierzymy?</h2><ul><li>Odsłony stron — po zgodzie na analitykę.</li><li>Kliknięcia w „Rezerwacja” i „Menu” — zdarzenia <code>polana_click_rezerwacja</code> i <code>polana_click_menu</code>.</li><li>Meta Pixel: <code>PageView</code> — po zgodzie marketingowej, w trybie bezpośrednim.</li></ul><p class="pa174-small">Nie wysyłamy danych osobowych z formularza. Potwierdzenie rezerwacji jako konwersję należy wdrożyć osobno, po sprawdzeniu aktualnego kodu formularza.</p></div>
  </div>
</div>
<?php render_admin_footer(); ?>

Youez - 2016 - github.com/yon3zu
LinuXploit