SMF Forumlar İçin Kırık Resimli Konu Temizleme Betiği

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:

SMF Forumlar İçin Kırık Resimli Konu Temizleme Betiği

Mesaj gönderen TRWE_2012 »

Merhabalar

***************************************************************************************************
BU UYARIYI OKUYUNUZ.....!!! :

İşlem öncesi, forum'un hem dizin hem de veritabanı yedeğini mutlaka alın....
Betiği, yerel makinenizde Windows için XAMPP, GNU/Linux için LAMPP sunucu yazılımı ile  forum'un bir kopyası üzerinde deneyin.
***************************************************************************************************

⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐

KOD İÇERİĞİ ( Smf Broken Images.php) :

Kod: Tümünü seç

<?php
// Veritabanı bağlantı ayarları
$host = 'localhost'; // SMF veritabanı sunucusu
$dbname = 'smf_database'; // SMF veritabanı adı
$user = 'smf_user'; // SMF veritabanı kullanıcı adı
$pass = 'smf_password'; // SMF veritabanı şifresi
$prefix = 'smf_'; // SMF 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 m.id_msg, m.body, t.id_topic, t.id_board, t.poster_time, t.subject
FROM {$prefix}topics t
JOIN {$prefix}messages m ON t.id_first_msg = m.id_msg
ORDER BY t.poster_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['body'], $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['subject']} (ID: {$topic['id_topic']})</li>";
}
echo "</ul>";
}

// Toplu silme işlemi (isteğe bağlı)
if (isset($_POST['delete_topics'])) {
foreach ($broken_topics as $topic) {
// Konuyu sil
$delete_sql = "DELETE FROM {$prefix}topics WHERE id_topic = ?";
$delete_stmt = $pdo->prepare($delete_sql);
$delete_stmt->execute([$topic['id_topic']]);

// Yetim mesajları sil
$delete_msgs_sql = "DELETE FROM {$prefix}messages WHERE id_topic = ?";
$delete_msgs_stmt = $pdo->prepare($delete_msgs_sql);
$delete_msgs_stmt->execute([$topic['id_topic']]);
}
echo "Kırık resimli konular ve yetim mesajlar silindi.";
}
?>

<form method="post">
<button type="submit" name="delete_topics">Kırık Resimli Konuları ve Yetim Mesajları Sil</button>
</form>
AÇIKLAMA :

SMF Forum İçin Kırık Resim Kontrol ve Toplu Silme Betiği Hazır!

Bu betik, SMF forumundaki konuları tarayarak kırık resim içerip içermediğini kontrol eder ve isteğe bağlı olarak kırık resimli konuları siler.

SMF Forum İçin Faydaları

SMF forumunda kırık konuların temizlenmesi, SEO’yu iyileştirir, kullanıcı deneyimini artırır, veritabanını hızlandırır ve moderatörlerin iş yükünü azaltır.Ayrıca, manuel olarak konuları tek tek incelemek yerine otomatik bir betik kullanarak çok daha hızlı işlem yapabilir.

Silme İşleminden Sonra "Temizlik İşleminin" DOĞRULANMASI (MySQL Sorgusu)


Eğer veritabanından silindiğini manuel kontrol etmek istiyorsanız, aşağıdaki SQL sorgularını çalıştırabilirsiniz.

Silinen Konular Var mı?
 

Kod: Tümünü seç

SELECT * FROM smf_topics WHERE id_topic NOT IN (SELECT DISTINCT id_topic FROM smf_messages);
Bu sorgu, mesajı olmayan (yetim) konuları listeler. Eğer sonuç boşsa, konular tamamen silinmiştir.

Yetim Mesajlar Kaldı mı?
 

Kod: Tümünü seç

SELECT * FROM smf_messages WHERE id_topic NOT IN (SELECT id_topic FROM smf_topics);
Bu sorgu, eğer konular silindiği halde mesajlar veritabanında duruyorsa onları listeler.

Özetle;

Eğer bu sorgular boş sonuç döndürüyorsa, konular ve mesajlar gerçekten silinmiştir.

NOT :

Yukarıdaki kodlama da
"Yetim Mesajları Silme Özelliği" de var.Böylece betik, kırık resimli konularla birlikte yetim mesajları da temizleyebilme özelliği de kazanmıştır. Silme işlemi sonrası, konuya bağlı mesajlar kalmayacak, ve forum veritabanından da kalıcı bir şekilde temizlenecektir.

⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐⭐ ⭐ ⭐ ⭐ ⭐
 
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Cevapla

“Php” sayfasına dön