Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
srv
/
data
/
web
/
vhosts
/
www.taxi-78.com
/
htdocs
/
/srv/data/web/vhosts/www.taxi-78.com/htdocs/index.php
<?php // ========================================================================= // FullHouse Partners - Casino SEO Site // Routes: / -> homepage (top casinos list) // ?review=slug -> full standalone review page (indexable) // Sitemap: sitemap.xml auto-deleted and rebuilt when missing or >24h old // ========================================================================= $cta = 'https://thecc.media/aoxmvx0q2'; // ---- auto-detect scheme + domain --------------------------------------- $scheme = 'http'; if ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')) { $scheme = 'https'; } $host = $_SERVER['HTTP_HOST'] ?? 'localhost'; $baseUrl = $scheme . '://' . $host; $homeUrl = $baseUrl . '/'; // ---- load all reviews from /reviews ------------------------------------ $reviews = []; foreach (glob(__DIR__ . '/reviews/*.php') as $file) { $r = include $file; if (is_array($r) && isset($r['slug'], $r['name'])) { $reviews[$r['slug']] = $r; } } // order homepage cards by rating, best first uasort($reviews, function ($a, $b) { return $b['rating'] <=> $a['rating']; }); // ---- sitemap: delete old one (if it exists) and build a fresh one ------ $sitemapFile = __DIR__ . '/sitemap.xml'; $sitemapMaxAge = 86400; // 24 hours if (!file_exists($sitemapFile) || (time() - filemtime($sitemapFile)) > $sitemapMaxAge) { if (file_exists($sitemapFile)) { unlink($sitemapFile); // auto delete old sitemap } $xml = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; $xml .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n"; $xml .= ' <url><loc>' . htmlspecialchars($homeUrl) . '</loc><lastmod>' . date('Y-m-d') . '</lastmod><changefreq>daily</changefreq><priority>1.0</priority></url>' . "\n"; foreach ($reviews as $slug => $r) { $xml .= ' <url><loc>' . htmlspecialchars($homeUrl . '?review=' . $slug) . '</loc><lastmod>' . date('Y-m-d') . '</lastmod><changefreq>weekly</changefreq><priority>0.9</priority></url>' . "\n"; } $xml .= '</urlset>'; file_put_contents($sitemapFile, $xml); } // ---- resolve requested review ------------------------------------------ $review = null; if (isset($_GET['review'])) { $slug = preg_replace('/[^a-z0-9\-]/', '', strtolower(trim($_GET['review']))); if (isset($reviews[$slug])) { $review = $reviews[$slug]; $review['url'] = $homeUrl . '?review=' . $slug; } } $pageTitle = $review ? $review['title'] : count($reviews) . ' Honest Casino Reviews (' . date('Y') . ') - Tested With Real Money'; $pageMeta = $review ? $review['meta'] : 'We deposit, play and withdraw our own money at every casino we review. Honest reviews of Neospin, StayCasino, RocketPlay, PlayCroco, Uptown Pokies, Spin Samurai, Ripper Casino and Jackpot Jill.'; $canonical = $review ? $review['url'] : $homeUrl; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><?= htmlspecialchars($pageTitle) ?></title> <meta name="description" content="<?= htmlspecialchars($pageMeta) ?>"> <meta name="robots" content="index, follow"> <link rel="canonical" href="<?= htmlspecialchars($canonical) ?>"> <link rel="alternate" hreflang="en-CA" href="<?= htmlspecialchars($canonical) ?>"> <link rel="alternate" hreflang="en-AU" href="<?= htmlspecialchars($canonical) ?>"> <link rel="alternate" hreflang="x-default" href="<?= htmlspecialchars($canonical) ?>"> <meta property="og:title" content="<?= htmlspecialchars($pageTitle) ?>"> <meta property="og:description" content="<?= htmlspecialchars($pageMeta) ?>"> <meta property="og:type" content="<?= $review ? 'article' : 'website' ?>"> <meta property="og:url" content="<?= htmlspecialchars($canonical) ?>"> <?php if ($review): ?> <meta property="og:image" content="<?= htmlspecialchars($review['hero_img']) ?>"> <?php endif; ?> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "ItemList", "name": "Honest Casino Reviews <?= date('Y') ?>", "itemListElement": [ <?php $i = 0; $items = []; foreach ($reviews as $slug => $r) { $items[] = ' {"@type": "ListItem", "position": ' . (++$i) . ', "name": "' . $r['name'] . '", "url": "' . htmlspecialchars($homeUrl . '?review=' . $slug) . '"}'; } echo implode(",\n", $items) . "\n"; ?> ] } </script> <?php if ($review): ?> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Review", "itemReviewed": {"@type": "Organization", "name": "<?= htmlspecialchars($review['name']) ?>"}, "author": {"@type": "Organization", "name": "FullHouse Partners"}, "reviewRating": {"@type": "Rating", "ratingValue": "<?= $review['rating'] ?>", "bestRating": "10"}, "datePublished": "<?= date('Y-m-d') ?>" } </script> <?php endif; ?> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; background: #0b0e17; color: #e6e9f0; line-height: 1.7; } a { color: #ffd447; } .container { max-width: 1100px; margin: 0 auto; padding: 0 20px; } header { background: linear-gradient(135deg, #12172b 0%, #0b0e17 100%); border-bottom: 1px solid #1f2540; padding: 18px 0; position: sticky; top: 0; z-index: 100; } .header-inner { display: flex; justify-content: space-between; align-items: center; } .logo { font-size: 1.4rem; font-weight: 800; color: #ffd447; text-decoration: none; letter-spacing: .5px; } .geo-badges span { background: #1a2036; border: 1px solid #2c3558; padding: 4px 12px; border-radius: 20px; font-size: .8rem; margin-left: 8px; color: #9fb0d8; } .hero { text-align: center; padding: 80px 20px 60px; background: radial-gradient(ellipse at top, #1b2242 0%, #0b0e17 65%); } .hero h1 { font-size: clamp(2rem, 5vw, 3.2rem); font-weight: 900; line-height: 1.15; margin-bottom: 18px; } .hero h1 .accent { color: #ffd447; } .hero p { max-width: 720px; margin: 0 auto 32px; color: #aeb9d9; font-size: 1.1rem; } .cta-btn { display: inline-block; background: linear-gradient(135deg, #ffd447, #ff9d2e); color: #131313; font-weight: 800; font-size: 1.05rem; padding: 15px 42px; border-radius: 50px; text-decoration: none; box-shadow: 0 8px 30px rgba(255, 180, 40, .35); transition: transform .15s ease, box-shadow .15s ease; } .cta-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 38px rgba(255, 180, 40, .5); } .cta-btn.small { padding: 11px 28px; font-size: .95rem; } .cta-btn.ghost { background: transparent; border: 2px solid #ffd447; color: #ffd447; box-shadow: none; } .trust-row { margin-top: 26px; font-size: .85rem; color: #7f8bb0; } .trust-row span { margin: 0 10px; } section { padding: 60px 0; } h2 { font-size: clamp(1.5rem, 3.5vw, 2.1rem); font-weight: 800; margin-bottom: 12px; } h2 .accent { color: #ffd447; } .section-sub { color: #9fb0d8; margin-bottom: 36px; max-width: 700px; } .casino-card { background: #131830; border: 1px solid #232b4d; border-radius: 18px; padding: 26px; margin-bottom: 22px; display: flex; gap: 24px; align-items: center; flex-wrap: wrap; transition: border-color .2s ease, transform .2s ease; } .casino-card:hover { border-color: #ffd44755; transform: translateY(-2px); } .casino-rank { font-size: 2rem; font-weight: 900; color: #ffd447; min-width: 48px; } .casino-info { flex: 1; min-width: 260px; } .casino-info h3 { font-size: 1.35rem; margin-bottom: 6px; color: #fff; } .casino-info p { color: #9fb0d8; font-size: .92rem; margin-bottom: 10px; } .tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; } .tags span { background: #1c2340; color: #c3cdea; font-size: .76rem; padding: 4px 11px; border-radius: 14px; border: 1px solid #2c3558; } .read-review { font-size: .9rem; font-weight: 700; text-decoration: none; } .read-review:hover { text-decoration: underline; } .casino-side { text-align: center; min-width: 190px; } .rating { color: #ffd447; font-size: 1.05rem; font-weight: 700; margin-bottom: 10px; } .bonus { font-size: .9rem; color: #7ee2a8; font-weight: 700; margin-bottom: 12px; } /* ---- review article page ---- */ .article { max-width: 820px; margin: 0 auto; padding: 40px 20px 60px; } .breadcrumb { font-size: .82rem; color: #6d7aa0; margin-bottom: 22px; } .breadcrumb a { color: #9fb0d8; text-decoration: none; } .article h1 { font-size: clamp(1.8rem, 4.5vw, 2.6rem); font-weight: 900; line-height: 1.2; margin-bottom: 14px; color: #fff; } .article-meta { color: #6d7aa0; font-size: .85rem; margin-bottom: 26px; } .article figure { margin: 26px 0; } .article figure img { width: 100%; border-radius: 16px; border: 1px solid #232b4d; } .article figcaption { color: #6d7aa0; font-size: .8rem; text-align: center; margin-top: 8px; } .article h2 { font-size: 1.6rem; margin: 44px 0 14px; color: #fff; } .article h3 { font-size: 1.2rem; margin: 28px 0 10px; color: #ffd447; } .article p { margin-bottom: 16px; color: #c6cde4; } .article ul, .article ol { margin: 0 0 18px 24px; color: #c6cde4; } .article li { margin-bottom: 8px; } .verdict-box { background: #131830; border: 1px solid #2c3558; border-left: 4px solid #ffd447; border-radius: 14px; padding: 22px 24px; margin: 26px 0; } .verdict-box .score-line { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 14px; margin-bottom: 10px; } .big-score { font-size: 2rem; font-weight: 900; color: #ffd447; } .facts-table { width: 100%; border-collapse: collapse; margin: 22px 0; font-size: .92rem; } .facts-table th, .facts-table td { text-align: left; padding: 11px 14px; border-bottom: 1px solid #232b4d; } .facts-table th { color: #ffd447; width: 38%; font-weight: 700; } .facts-table td { color: #c6cde4; } .facts-table tr:nth-child(even) { background: #10152a; } .pros-cons { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 24px 0; } .pros, .cons { background: #131830; border-radius: 14px; padding: 20px 22px; border: 1px solid #232b4d; } .pros h4 { color: #7ee2a8; margin-bottom: 12px; font-size: 1rem; } .cons h4 { color: #ff8a8a; margin-bottom: 12px; font-size: 1rem; } .pros ul, .cons ul { margin-left: 18px; } .pros li, .cons li { font-size: .9rem; margin-bottom: 7px; } .toc { background: #10152a; border: 1px solid #232b4d; border-radius: 14px; padding: 20px 24px; margin: 26px 0; } .toc strong { color: #ffd447; display: block; margin-bottom: 10px; } .toc a { display: inline-block; margin: 0 16px 6px 0; font-size: .88rem; text-decoration: none; color: #9fb0d8; } .toc a:hover { color: #ffd447; } .mid-cta { text-align: center; background: linear-gradient(135deg, #1b2242, #131830); border: 1px solid #2c3558; border-radius: 16px; padding: 30px 22px; margin: 34px 0; } .mid-cta p { color: #9fb0d8; margin-bottom: 16px; } .faq-item { background: #131830; border: 1px solid #232b4d; border-radius: 14px; margin-bottom: 14px; overflow: hidden; } .faq-q { padding: 18px 22px; font-weight: 700; cursor: pointer; display: flex; justify-content: space-between; align-items: center; color: #fff; } .faq-q::after { content: "+"; color: #ffd447; font-size: 1.4rem; transition: transform .2s; } .faq-item.open .faq-q::after { transform: rotate(45deg); } .faq-a { max-height: 0; overflow: hidden; transition: max-height .25s ease; color: #9fb0d8; } .faq-a p { padding: 0 22px 18px; } .faq-item.open .faq-a { max-height: 400px; } .cta-banner { text-align: center; background: linear-gradient(135deg, #1b2242, #131830); border: 1px solid #2c3558; border-radius: 22px; padding: 54px 26px; margin: 20px 0 60px; } .cta-banner h2 { margin-bottom: 14px; } .cta-banner p { color: #9fb0d8; margin-bottom: 26px; max-width: 560px; margin-left: auto; margin-right: auto; } .more-reviews { background: #10152a; border: 1px solid #232b4d; border-radius: 16px; padding: 24px; margin: 40px 0; } .more-reviews h3 { color: #ffd447; margin-bottom: 14px; } .more-reviews a { display: inline-block; margin: 0 14px 8px 0; text-decoration: none; font-size: .9rem; } .more-reviews a:hover { text-decoration: underline; } footer { border-top: 1px solid #1f2540; padding: 34px 0; text-align: center; color: #6d7aa0; font-size: .82rem; } footer .age-badge { display: inline-block; border: 2px solid #ff5b5b; color: #ff5b5b; border-radius: 50%; width: 44px; height: 44px; line-height: 40px; font-weight: 800; margin-bottom: 12px; } @media (max-width: 640px) { .casino-card { flex-direction: column; text-align: center; } .casino-side { width: 100%; } .tags { justify-content: center; } .pros-cons { grid-template-columns: 1fr; } } </style> </head> <body> <header> <div class="container header-inner"> <a class="logo" href="/">♠ FullHouse Partners</a> <div class="geo-badges"><span>🇨🇦 Canada</span><span>🇦🇺 Australia</span></div> </div> </header> <?php if (!$review): ?> <!-- ================= HOMEPAGE ================= --> <div class="hero"> <h1>Honest Casino Reviews, <span class="accent">Tested With Real Money</span></h1> <p>We sign up, deposit our own cash and withdraw winnings at every casino before writing a word. Below are the <?= count($reviews) ?> sites that survived the test, each with a full hands-on review.</p> <a class="cta-btn" href="<?= htmlspecialchars($cta) ?>" rel="nofollow sponsored" target="_blank">Claim Exclusive Bonus →</a> <div class="trust-row"><span>✔ Tested with real money</span><span>✔ CAD & AUD supported</span></div> </div> <section id="top-casinos"> <div class="container"> <h2>The <span class="accent"><?= count($reviews) ?> casinos</span> that passed our tests</h2> <p class="section-sub">Every review comes from a real account. We check wagering terms, withdrawal times and how support responds when something goes wrong.</p> <?php $pos = 0; foreach ($reviews as $slug => $r): $pos++; ?> <div class="casino-card"> <div class="casino-rank">#<?= $pos ?></div> <div class="casino-info"> <h3><?= htmlspecialchars($r['name']) ?></h3> <p><?= htmlspecialchars($r['teaser']) ?></p> <div class="tags"><?php foreach ($r['tags'] as $t): ?><span><?= htmlspecialchars($t) ?></span><?php endforeach; ?></div> <a class="read-review" href="?review=<?= htmlspecialchars($slug) ?>">Read the full <?= htmlspecialchars($r['name']) ?> review →</a> </div> <div class="casino-side"> <div class="rating">★ <?= $r['rating'] ?>/10</div> <div class="bonus"><?= htmlspecialchars($r['bonus']) ?></div> <a class="cta-btn small" href="<?= htmlspecialchars($cta) ?>" rel="nofollow sponsored" target="_blank">Play Now</a> </div> </div> <?php endforeach; ?> </div> </section> <div class="container"> <div class="cta-banner"> <h2>Ready to grab your <span class="accent">exclusive bonus?</span></h2> <p>Sign up through our link and you'll unlock the best welcome offer currently available on these casinos.</p> <a class="cta-btn" href="<?= htmlspecialchars($cta) ?>" rel="nofollow sponsored" target="_blank">Get My Bonus Now →</a> </div> </div> <?php else: ?> <!-- ================= REVIEW PAGE ================= --> <div class="article"> <div class="breadcrumb"><a href="/">Home</a> / Casino Reviews / <?= htmlspecialchars($review['name']) ?></div> <h1><?= htmlspecialchars($review['h1']) ?></h1> <div class="article-meta">Updated <?= date('F j, Y') ?> · Written by the FullHouse Partners review team · <?= $review['read_mins'] ?> min read</div> <figure> <img src="<?= htmlspecialchars($review['hero_img']) ?>" alt="<?= htmlspecialchars($review['hero_alt']) ?>" loading="eager"> <figcaption><?= htmlspecialchars($review['hero_alt']) ?></figcaption> </figure> <div class="verdict-box"> <div class="score-line"> <div><strong><?= htmlspecialchars($review['name']) ?></strong><br><span style="color:#9fb0d8;font-size:.88rem;"><?= htmlspecialchars($review['bonus']) ?></span></div> <div class="big-score"><?= $review['rating'] ?>/10</div> </div> <a class="cta-btn small" href="<?= htmlspecialchars($cta) ?>" rel="nofollow sponsored" target="_blank">Visit <?= htmlspecialchars($review['name']) ?> →</a> </div> <div class="toc"> <strong>In this review</strong> <a href="#bonuses">Bonuses</a> <a href="#games">Games</a> <a href="#payments">Payments</a> <a href="#mobile">Mobile</a> <a href="#support">Support & safety</a> <a href="#pros-cons">Pros & cons</a> <a href="#verdict">Verdict</a> <a href="#faq">FAQ</a> </div> <?= $review['body'] ?> <div class="mid-cta"> <p><?= htmlspecialchars($review['cta_line']) ?></p> <a class="cta-btn" href="<?= htmlspecialchars($cta) ?>" rel="nofollow sponsored" target="_blank">Claim the <?= htmlspecialchars($review['name']) ?> Bonus →</a> </div> <h2 id="faq"><?= htmlspecialchars($review['name']) ?> FAQ</h2> <?php foreach ($review['faq'] as $qa): ?> <div class="faq-item"><div class="faq-q"><?= htmlspecialchars($qa[0]) ?></div><div class="faq-a"><p><?= htmlspecialchars($qa[1]) ?></p></div></div> <?php endforeach; ?> <div class="more-reviews"> <h3>More casino reviews</h3> <?php foreach ($reviews as $slug => $r): if ($slug === $review['slug']) continue; ?> <a href="?review=<?= htmlspecialchars($slug) ?>"><?= htmlspecialchars($r['name']) ?> review</a> <?php endforeach; ?> </div> </div> <?php endif; ?> <footer> <div class="container"> <div class="age-badge">18+</div> <p>© <?= date('Y') ?> <?= htmlspecialchars($host) ?>. Play responsibly. Gambling can be addictive, so set limits before you start.<br> Canada: ConnexOntario 1-866-531-2600 · Australia: Gambling Help Online 1800 858 858</p> </div> </footer> <script> document.querySelectorAll('.faq-q').forEach(q => { q.addEventListener('click', () => q.parentElement.classList.toggle('open')); }); </script> </body> </html>