Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 904
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 254 kez
Teşekkür edildi: 754 kez
İletişim:

Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Mesaj gönderen TRWE_2012 »

phpBB'nin veritabanı yapısında konular phpbb_topics tablosunda, mesajlar (konu içerikleri) ise phpbb_posts tablosunda tutulur.

Resimler genellikle BBCode

Kod: Tümünü seç

([img]URL[/img])
veya direkt

Kod: Tümünü seç

HTML <img>
etiketleri ile eklenir.
 
Betik şu işlemleri yapacak (aynı zaman da özellikleri) :
  1. Veritabanına bağlanacak.
  2. Konuların içeriklerini kontrol edecek.
  3. Kırık resimleri tespit edecek.
  4. Bu konuları en eski tarihten yeni tarihe doğru sıralayacak.
  5. İsteğe bağlı olarak kırık resimli konuları topluca silecek.
 KOD İÇERİĞİ ( Phpbb Broken Images.php) :

 

Kod: Tümünü seç

<?php
// Veritabanı bağlantı ayarları
$host = 'localhost'; // phpBB veritabanı sunucusu
$dbname = 'phpbb_database'; // phpBB veritabanı adı
$user = 'phpbb_user'; // phpBB veritabanı kullanıcı adı
$pass = 'phpbb_password'; // phpBB veritabanı şifresi
$prefix = 'phpbb_'; // phpBB tablo öneki

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Veritabanı bağlantı hatası: " . $e->getMessage());
}

// Forum konularını ve içeriklerini çek
$sql = "SELECT t.topic_id, t.topic_title, p.post_id, p.post_text, t.topic_time 
        FROM {$prefix}topics t 
        JOIN {$prefix}posts p ON t.topic_first_post_id = p.post_id 
        ORDER BY t.topic_time ASC";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$topics = $stmt->fetchAll(PDO::FETCH_ASSOC);

$broken_topics = [];

// Resim URL'lerini kontrol etmek için işlev
function is_broken_image($url) {
    $headers = @get_headers($url);
    if (!$headers || strpos($headers[0], '404') !== false) {
        return true;
    }
    return false;
}

// Konuları kontrol et
foreach ($topics as $topic) {
    preg_match_all('/\[img\](.*?)\[\/img\]/i', $topic['post_text'], $matches);
    $broken = false;
    
    foreach ($matches[1] as $img_url) {
        if (is_broken_image($img_url)) {
            $broken = true;
            break;
        }
    }
    
    if ($broken) {
        $broken_topics[] = $topic;
    }
}

// Kırık resimli konuları göster
if (empty($broken_topics)) {
    echo "Kırık resimli konu bulunamadı.";
} else {
    echo "<h2>Kırık Resimli Konular</h2><ul>";
    foreach ($broken_topics as $topic) {
        echo "<li>{$topic['topic_title']} (ID: {$topic['topic_id']})</li>";
    }
    echo "</ul>";
}

// Toplu silme işlemi (isteğe bağlı)
if (isset($_POST['delete_topics'])) {
    foreach ($broken_topics as $topic) {
        $delete_sql = "DELETE FROM {$prefix}topics WHERE topic_id = ?";
        $delete_stmt = $pdo->prepare($delete_sql);
        $delete_stmt->execute([$topic['topic_id']]);
    }
    echo "Kırık resimli konular silindi.";
}
?>

<form method="post">
    <button type="submit" name="delete_topics">Kırık Resimli Konuları Sil</button>
</form>
Bu betik phpBB veritabanına bağlanarak forum konularındaki resimleri kontrol eder ve kırık olanları hemen bulur.Bir liste oluşturarak  kırık resimli konuları tek tıklamayla (topluca) webmaster tarafından silinebilir özellikte inşa edilmiştir.

ÖNEMLİ ÇOK ÖNEMLİ NOTLAR...! :

 Kesinlikle, önce forumun yedeğini almak şart!

Neden?
  • SQL sorgularında yanlışlık olursa veri kaybı olabilir.
  • Toplu silme işlemi geri alınamaz. Yanlış konular silinirse geri getirmek imkânsız olabilir.
  • Forumda başka şeyler de yanlışlıkla etkilenebilir.
 Yedekleme İçin Adımlar (phpBB)

1. phpBB Yönetici Panelinden Yedekleme
  • phpBB Admin Paneline (ACP) giriş yapın.
  • Bakım (Maintenance) → Veritabanı → Yedekleme (Backup) kısmına girin.
  • Tam Yedek seçeneğini işaretleyin ve tüm tabloları seçin.
  • ZIP veya GZ sıkıştırmasıyla indirin.
 2. phpMyAdmin veya MySQL ile Manuel Yedekleme
  • phpMyAdmin kullanıyorsanız ki kullanıyorsunuzdur, phpBB veritabanını seçin ve Dışa Aktar (Export) yapın.
  • Terminal/Konsol (SSH) kullanıyorsanız(GNU/Linux) şu komutu çalıştırın:
 

Kod: Tümünü seç

mysqldump -u phpbb_user -p phpbb_database &gt; phpbb_backup.sql
Yedek alındıysa, şimdi betiği çalıştırıp forum da amaçlananı uygulamak daha güvenli olacaktır.

ÖNERİ :

Önce forum'u bir kopyasını yerel makine indirin ve bir sunucu yazılımı ile yerel makine'de (dizüstü pc veya masaüstü pc) betiği deneyin bakalım istenileni veriyor mu? diye test edin.(TRWE_2012)

SORU:
phpBB Forum'da Kırık Konuların Gerçekten Silindiğini Nasıl Anlarım?

 
CEVAP :

phpBB Yönetici Panelinden Kontrol Et
  • Admin Paneline (ACP) giriş yap.
  • Forum Yönetimi → Forumlar → Konu Listesi kısmına gir.
  • Silindiğini düşündüğün konuların gerçekten yok olup olmadığını kontrol et.
Veritabanında Doğrulama Yap

Forum veritabanında konuların ve mesajların gerçekten silindiğini SQL sorguları ile kontrol edebilirsin.

Silinmiş Konular Var mı?

Silinen konuların olup olmadığını görmek için: 

Kod: Tümünü seç

SELECT * FROM phpbb_topics WHERE topic_id NOT IN (SELECT DISTINCT topic_id FROM phpbb_posts);
Bu sorgu, mesajı olmayan yetim konuları listeler. Eğer liste boşsa, konular tamamen silinmiştir.

Yetim Mesajlar Kaldı mı?

Silinen konulara bağlı mesajlar veritabanında kaldı mı diye kontrol etmek için:
 

Kod: Tümünü seç

SELECT * FROM phpbb_posts WHERE topic_id NOT IN (SELECT topic_id FROM phpbb_topics);
Bu sorgu, eğer silinen konuların mesajları hala veritabanında duruyorsa onları listeler.

ARA NOT :

phpBB, phpbb_topics tablosunda konuları, phpbb_posts tablosunda ise o konuların mesajlarını saklar.Eğer bir konu phpbb_topics tablosundan silinirse, phpbb_posts tablosundaki ilgili mesajlar otomatik olarak kaldırılmaz.Ancak phpBB’nin veritabanı tetikleyicileri ve kaskad silme mekanizması olduğu için, yönetici panelinden veya phpBB API’si ile yapılan silme işlemleri genellikle mesajları da temizler.

Manuel Kontrol İçin

Eğer konuların silinmesiyle mesajların da temizlendiğinden emin olmak istiyorsan, şu SQL sorgusunu kullanarak yetim kalmış mesajları tespit edebilirsiniz: 

Kod: Tümünü seç

SELECT p.post_id, p.post_subject, p.topic_id
FROM phpbb_posts p
LEFT JOIN phpbb_topics t ON p.topic_id = t.topic_id
WHERE t.topic_id IS NULL;
Bu sorgu, silinmiş konulara bağlı ama veritabanında kalmış mesajları listeler. Eğer böyle yetim mesajlar kalırsa, şu komutla temizleyebilirsiniz:

Kod: Tümünü seç

DELETE FROM phpbb_posts WHERE topic_id NOT IN (SELECT topic_id FROM phpbb_topics);
Yukarıdaki komutu çalıştırmadan önce mutlaka bir yedek alın...

Kendi Kullanıcı Mesaj Sayıları :

Forum da herhangi bir kullanıcı yada kendinizin toplam mesaj sayısına bakın.(ha unutmadan açtığınız forum konusu sayısına da bakın) bunlar aşağıya düşmüşse ki düşecektir.O betik istenileni vermiştir.

Betiğin Faydaları Şunlardır :

Forumun Kalitesini Artırır

Ölü (uçmuş) resimli konular, forumun içeriğini değersiz hale getirir.
  • Kullanıcılar, resimleri göremediğinde konuların işe yaramaz olduğunu düşünebilir.
  • Google ve diğer arama motorları, bozuk sayfaları düşük kaliteli içerik olarak değerlendirebilir.
Bu betik, kırık resimli konuları temizleyerek forumun daha profesyonel ve düzenli görünmesini sağlar.

SEO (Arama Motoru Optimizasyonu) Performansını İyileştirir


Google ve diğer arama motorları, kırık resimli sayfaları negatif olarak değerlendirebilir.
  • Ölü resim linkleri ve bozuk içerikler, sitenin SEO puanını düşürebilir.
  • Silinen konuların 404 hatası vermesi, Google sıralamasına zarar verebilir.
Kullanıcı Deneyimini Geliştirir

Bozuk resimler ve geçersiz içerikler, ziyaretçileri hayal kırıklığına uğratır.
  • Eski konularda bozuk resimler olduğunda, kullanıcılar içerikten faydalanamaz ve forumu terk edebilir.
  • Daha temiz ve güncel içerikler, kullanıcıların forumda daha fazla vakit geçirmesini sağlar.
Bu betik sayesinde, forum üyeleri ve ziyaretçiler daha kaliteli içerikle karşılaşır.

Veritabanını Temizleyerek Performansı Artırır
 
Gereksiz ve bozuk içerikler, veritabanını şişirir ve forumun yavaşlamasına neden olabilir.
  • Büyük forumlarda binlerce kırık resimli konu olabilir, bunları tek tek bulmak ve silmek zor olabilir.
  • Veritabanı gereksiz konulardan arındığında, forum daha hızlı çalışır.
Bu betik, gereksiz konuları temizleyerek veritabanı yükünü azaltır ve forumun hızlanmasını sağlar. 

Manuel İş Yükünü Azaltır

Tek tek bozuk konuları kontrol etmek ve silmek zaman alıcıdır.
  • Yönetici veya moderatörlerin binlerce konu içindeki bozuk resimleri manuel bulması imkânsızdır.
  • Otomatik bir betik, bu işlemi çok daha hızlı ve kolay hale getirir.
Bu betik sayesinde, yöneticiler tek tıklamayla bozuk konuları tespit edip temizleyebilir.

Şimdi yukarıda anlatılanları özetleyelim....


Bu betik, forumun kalitesini artırır, SEO'yu iyileştirir, kullanıcı deneyimini geliştirir, performansı yükseltir ve yönetici/moderatörlerin iş yükünü azaltır.Eğer phpBB forumunda/formunuz da bozuk resimli konular varsa, bu betik çok işine/işinize yarayacaktır!
 
 
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 904
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 254 kez
Teşekkür edildi: 754 kez
İletişim:

Re: Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Mesaj gönderen TRWE_2012 »

ÖNEMLİ NOT :

Kodlamada ciddi bir hata fark ettim ve düzelttim.
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Kullanıcı avatarı
burak35
Forum Üyesi
Forum Üyesi
Mesajlar: 185
Kayıt: 23 Mar 2023 01:07
Teşekkür etti: 225 kez
Teşekkür edildi: 179 kez

Re: Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Mesaj gönderen burak35 »

Baya güzel bi offline forum olayı. Büyük bir not defteri gibi.
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 904
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 254 kez
Teşekkür edildi: 754 kez
İletişim:

Re: Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Mesaj gönderen TRWE_2012 »

burak35 yazdı: 04 Mar 2025 16:36 Baya güzel bi offline forum olayı. Büyük bir not defteri gibi.
1.NOT DEFTERİM : phpBBForum sürüm 3.8.14 (güncel sürüm)(Sistem : GNU/Linux Mint 21.1 x64 LXDE)
Resim
2.NOT DEFTERİM : SMF Forum sürüm 2.1.4 (güncel sürüm)(Sistem : GNU/Linux Mint 21.1 x64 LXDE)
Resim
Yerel makine üzerinde aynı port numarasını aynı anda kullanan iki forum sitesi... (Windows'ta bu özellik yok(bir portu aynı anda iki uygulamanın kullanabilmesi olayı))

Ve sende kendi makinen'de XAMPP Sunucu yazılımını kullanarak (Türkçe Dil Seçeneği/Desteği %1500) kendi not defterin olabilir.
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Kullanıcı avatarı
admin
Sistem Geliştiricisi
Sistem Geliştiricisi
Mesajlar: 1178
Kayıt: 28 Ağu 2022 04:38
Konum: Database
Meslek: Teknisyen
Teşekkür etti: 868 kez
Teşekkür edildi: 674 kez
İletişim:

Re: Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Mesaj gönderen admin »

Eline sağlık abi de ben manuel takılıyorum:)

Denk gelirse düzenliyorum. Çok şükür Max %10 kırık resim linki vardır. Kırık link ise %1 bilemedin %2 dır.

Upload yaptığım yerlerden düzenli kontrol ediyorum. Linkler sağlam.
Daha zeki olmanın tek yolu, daha zeki bir rakiple oynamaktır.
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 904
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 254 kez
Teşekkür edildi: 754 kez
İletişim:

Re: Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Mesaj gönderen TRWE_2012 »

admin yazdı: 04 Mar 2025 19:38 Eline sağlık abi de ben manuel takılıyorum:)

Denk gelirse düzenliyorum. Çok şükür Max %10 kırık resim linki vardır. Kırık link ise %1 bilemedin %2 dır.

Upload yaptığım yerlerden düzenli kontrol ediyorum. Linkler sağlam.
Zaten sunucu'daki forum'un bir kopyasının yerel makine XAMPP ile denemelisin.Benim işime yaradı.
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim
Kullanıcı avatarı
burak35
Forum Üyesi
Forum Üyesi
Mesajlar: 185
Kayıt: 23 Mar 2023 01:07
Teşekkür etti: 225 kez
Teşekkür edildi: 179 kez

Re: Kırık Resimli Forum Konularını Temizleyen PHP Betiği (phpBB Forum İçin)

Mesaj gönderen burak35 »

Çok güzel görünüyor bu offline forum.
Cevapla

“Php” sayfasına dön