| 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 : |
<?php
declare(strict_types=1);
/** POLANA V18.0: restores missing Google + sitemap admin screen. */
require_once dirname(__DIR__).'/includes/functions.php';
require_admin_role();
require_once dirname(__DIR__).'/includes/polana_v166_seo.php';
header('Cache-Control: private, no-store');header('X-Robots-Tag: noindex, nofollow');
$ok='';$error='';
if(($_SERVER['REQUEST_METHOD']??'GET')==='POST'){
verify_csrf();
try {
$action=(string)($_POST['action']??'');
if($action!=='verify')throw new RuntimeException('Nieznana operacja.');
$token=trim((string)($_POST['google_verification']??''));
if($token!==''&&!preg_match('/^[A-Za-z0-9_-]{5,200}$/D',$token))throw new RuntimeException('Wpisz sam token weryfikacji Google (bez HTML).');
db()->prepare('INSERT INTO settings(setting_key,setting_value) VALUES (?,?) ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value)')->execute(['google_verification',$token]);
admin_log('polana_v18_gsc','Zapisano token weryfikacji Search Console');
$ok='Zapisano token Google.';
}catch(Throwable $e){$error=$e->getMessage();}
}
$report=['urls'=>[],'skipped'=>[],'base'=>'','splash'=>false];
try {$report=p164_sitemap_data();}catch(Throwable $e){$error='Generator sitemap: '.$e->getMessage();}
$counts=['pl'=>0,'en'=>0,'de'=>0,'es'=>0];
foreach($report['urls'] as $r)if(isset($counts[$r['lang']]))$counts[$r['lang']]++;
$ht=is_file(dirname(__DIR__).'/.htaccess')?(string)file_get_contents(dirname(__DIR__).'/.htaccess'):'';
$rewrite=(bool)preg_match('~^\s*RewriteRule\s+\^sitemap\\?\.xml\$\s+sitemap\.php\s+~im',$ht) || (bool)preg_match('~RewriteRule[^\r\n]*sitemap[^\r\n]*sitemap\.php~i',$ht);
$sitemap=is_file(dirname(__DIR__).'/sitemap.php');
$static=is_file(dirname(__DIR__).'/sitemap.xml');
$robots=is_file(dirname(__DIR__).'/robots.php');
render_admin_header('Google i sitemap — Polana V18');
?>
<style>.pv18seo{max-width:1220px;margin:0 auto 65px;padding:16px;color:#213a29}.pv18seo .grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.pv18seo .panel{border:1px solid #d6e3d5;border-radius:16px;background:#fff;padding:20px;margin:15px 0}.pv18seo .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.pv18seo .stat{border:1px solid #dbe8d9;border-radius:11px;padding:14px}.pv18seo .stat strong{display:block;font-size:27px}.pv18seo .muted{color:#63746a}.pv18seo .actions{display:flex;flex-wrap:wrap;gap:8px}.pv18seo .button{display:inline-block;border:0;border-radius:9px;background:#29573b;color:#fff;padding:10px 14px;text-decoration:none;cursor:pointer;font:inherit}.pv18seo .button.alt{background:#e9f2e7;color:#234d31}.pv18seo input{padding:10px;border:1px solid #bbcbbd;border-radius:8px;max-width:100%;width:100%}.pv18seo table{width:100%;border-collapse:collapse}.pv18seo td,.pv18seo th{border-bottom:1px solid #e4ece3;padding:8px;text-align:left}.pv18seo .scroll{overflow-x:auto}.pv18seo code{overflow-wrap:anywhere}@media(max-width:750px){.pv18seo .grid{grid-template-columns:1fr}.pv18seo .stats{grid-template-columns:repeat(2,1fr)}}</style>
<div class="pv18seo"><h1>Google i mapa witryny XML</h1><p class="muted">Weryfikacja Search Console, mapa PL/EN/DE/ES i stan generatora. Nie zmieniamy przekierowania Cloudflare ani domeny kanonicznej.</p>
<?php if($error):?><div class="panel" style="border-color:#d99"><?=e($error)?></div><?php endif;?><?php if($ok):?><div class="panel"><?=e($ok)?></div><?php endif;?>
<div class="stats"><?php foreach($counts as $lang=>$count):?><div class="stat"><strong><?=$count?></strong><?=strtoupper($lang)?> — URL-e</div><?php endforeach;?></div>
<div class="grid">
<section class="panel"><h2>Mapa witryny</h2><p>Łącznie: <b><?=count($report['urls'])?></b> · pominięte języki bez akceptacji: <b><?=(int)($report['skipped']['unapproved_language']??0)?></b></p><p>Generator PHP: <b><?=$sitemap?'obecny':'brak'?></b> · reguła .htaccess: <b><?=$rewrite?'obecna':'brak'?></b> · statyczny konflikt: <b><?=$static?'TAK':'nie'?></b> · robots.php: <b><?=$robots?'obecny':'brak'?></b></p><?php if($report['splash']):?><p>Uwaga: zaślepka jest aktywna, część URL-i nie będzie indeksowana.</p><?php endif;?><div class="actions"><a class="button" href="/sitemap.xml" target="_blank" rel="noopener">Otwórz sitemap.xml</a><a class="button alt" href="/robots.txt" target="_blank" rel="noopener">Robots.txt</a><a class="button alt" href="/admin/polana-v166-sitemap.php">Diagnostyka XML</a></div></section>
<section class="panel"><h2>Google Search Console</h2><p>Kanoniczna domena: <code><?=e((string)($report['base']?:'https://mojapolanasmakow.pl'))?></code></p><form method="post"><?=csrf_field()?><input type="hidden" name="action" value="verify"><label>Token HTML Google — sama zawartość <code>content</code><input type="text" name="google_verification" maxlength="200" autocomplete="off" value="<?=e(setting('google_verification',''))?>"></label><p><button class="button">Zapisz token</button></p></form><div class="actions"><a class="button alt" target="_blank" rel="noopener noreferrer" href="https://search.google.com/search-console/">Search Console</a><a class="button alt" href="/admin/polana-seo-centrum.php">SEO Health</a></div><p class="muted">W Search Console zgłoś <code>https://mojapolanasmakow.pl/sitemap.xml</code>.</p></section>
<section class="panel"><h2>IndexNow / Bing</h2><p>Zmiany bloga i menu zgłaszamy do wyszukiwarek obsługujących IndexNow. Google korzysta z sitemap i Search Console.</p><div class="actions"><a class="button" href="/admin/polana-indexnow.php">IndexNow / kolejka</a><a class="button alt" target="_blank" rel="noopener noreferrer" href="https://www.bing.com/webmasters/">Bing Webmaster</a></div></section>
<section class="panel"><h2>GTM i analityka</h2><p>Identyfikator kontenera: <b><?=e(setting('polana_gtm_id','brak'))?></b> · tryb: <b><?=e(setting('polana_tracking_mode','off'))?></b></p><p>Kontener w GTM musi mieć poprawny tag Google i zgody cookies; sam identyfikator nie wystarczy.</p><a class="button" href="/admin/polana-analityka.php">Ustawienia GTM</a></section>
</div>
<section class="panel"><h2>Adresy w sitemap (pierwsze 80)</h2><div class="scroll"><table><thead><tr><th>Język</th><th>Adres</th><th>Ostatnia zmiana</th></tr></thead><tbody><?php foreach(array_slice($report['urls'],0,80) as $r):?><tr><td><?=e(strtoupper((string)$r['lang']))?></td><td><a href="<?=e((string)$r['loc'])?>" target="_blank" rel="noopener"><?=e((string)$r['loc'])?></a></td><td><?=e((string)($r['lastmod']??'—'))?></td></tr><?php endforeach;?></tbody></table></div></section>
</div><?php render_admin_footer(); ?>