Resimler genellikle BBCode
Kod: Tümünü seç
([img]URL[/img])
Kod: Tümünü seç
HTML <img>
Betik şu işlemleri yapacak (aynı zaman da özellikleri) :
- Veritabanına bağlanacak.
- Konuların içeriklerini kontrol edecek.
- Kırık resimleri tespit edecek.
- Bu konuları en eski tarihten yeni tarihe doğru sıralayacak.
- İsteğe bağlı olarak kırık resimli konuları topluca silecek.
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>
Ö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.
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.
- 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 > phpbb_backup.sql
Ö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.
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);
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);
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;
Kod: Tümünü seç
DELETE FROM phpbb_posts WHERE topic_id NOT IN (SELECT topic_id FROM phpbb_topics);
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.
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.
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.
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.
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.
Ş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!