Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Detaylar
Kim cevapladı?
Çözüm
Merger sistem yazdım bir tane hocam ama şifre hash olarak farklı yöntemler kullandığı için şifreleri manuel olarak şifremi unuttum yapmaları gerekti.Bu işi yapan yazılımlara Importer deniliyor ama yapan bulamadım. Yapay zekaya özel kod yazdırman gerek gibi.
PHP:
<?php
// Hata raporlamayı aç (sadece geliştirme ve test aşamasında kullanın)
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Script'in zaman aşımına uğramasını engelle
set_time_limit(0);
// --- VERİTABANI AYARLARI ---
// Flarum veritabanı bilgilerinizi buraya girin
$flarum_db = [
'host' => 'localhost',
'name' => 'flarum_veritabani_adi',
'user' => 'flarum_kullanici_adi',
'pass' => 'flarum_sifresi'
];
// MyBB veritabanı bilgilerinizi buraya girin
// Genellikle MyBB'nin inc/config.php dosyasında bulunur
$mybb_db = [
'host' => 'localhost',
'name' => 'mybb_veritabani_adi',
'user' => 'mybb_kullanici_adi',
'pass' => 'mybb_sifresi'
];
// --- GEÇİCİ ŞİFRE AYARI ---
// Tüm kullanıcılara atanacak olan geçici şifre.
// Taşıma sonrası kullanıcılar bu şifreyle giriş yapamaz, "Şifremi Unuttum" kullanmaları gerekir.
// Güvenlik için bu değeri karmaşık bir şey yapabilirsiniz, ancak kullanıcılar bunu bilmeyecek.
define('GECICI_SIFRE', 'CokGuvEnliGeciciSifre!2025');
// --- VERİTABANI BAĞLANTILARI (PDO) ---
try {
$flarum_conn = new PDO("mysql:host={$flarum_db['host']};dbname={$flarum_db['name']};charset=utf8mb4", $flarum_db['user'], $flarum_db['pass']);
$flarum_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$mybb_conn = new PDO("mysql:host={$mybb_db['host']};dbname={$mybb_db['name']};charset=utf8mb4", $mybb_db['user'], $mybb_db['pass']);
$mybb_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Veritabanı bağlantı hatası: " . $e->getMessage());
}
echo "<h1>Flarum'dan MyBB'ye Kullanıcı Taşıma Script'i</h1>";
echo "<p>Bağlantılar başarılı. Taşıma işlemi başlıyor...</p>";
$tasinan_kullanici_sayisi = 0;
$atlanan_kullanici_sayisi = 0;
try {
// Flarum'dan tüm kullanıcıları çek
$stmt = $flarum_conn->query("SELECT id, username, email, joined_at, last_seen_at FROM users ORDER BY id ASC");
$flarum_users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($flarum_users as $user) {
// Flarum'daki Yönetici (ID=1) genellikle MyBB'de zaten kuruludur.
// Çakışmaları önlemek için ilk kullanıcıyı atlayabilir veya e-posta ile kontrol edebilirsiniz.
if ($user['id'] == 1) {
echo "Yönetici kullanıcı (ID: 1 - {$user['username']}) atlandı.<br>";
$atlanan_kullanici_sayisi++;
continue;
}
// MyBB'de bu email veya kullanıcı adı zaten var mı diye kontrol et
$check_stmt = $mybb_conn->prepare("SELECT COUNT(*) FROM mybb_users WHERE username = ? OR email = ?");
$check_stmt->execute([$user['username'], $user['email']]);
if ($check_stmt->fetchColumn() > 0) {
echo "Kullanıcı adı '{$user['username']}' veya e-posta '{$user['email']}' MyBB'de zaten mevcut. Atlanıyor.<br>";
$atlanan_kullanici_sayisi++;
continue;
}
// MyBB için yeni şifre oluşturma
// 1. Salt oluştur (rastgele bir dize)
$salt = bin2hex(random_bytes(4)); // 8 karakterlik salt
// 2. Şifreyi MyBB formatında hash'le: md5(md5(salt) + md5(sifre))
$hashed_password = md5(md5($salt) . md5(GECICI_SIFRE));
// Kullanıcıyı MyBB veritabanına ekle
$insert_user = $mybb_conn->prepare("
INSERT INTO mybb_users
(username, password, salt, email, regdate, lastactive, lastvisit, usergroup, displaygroup, loginkey)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
");
$insert_user->execute([
$user['username'],
$hashed_password,
$salt,
$user['email'],
strtotime($user['joined_at']), // Flarum tarihini Unix timestamp'e çevir
strtotime($user['last_seen_at'] ?? 'now'), // Flarum'da null ise şimdiki zamanı kullan
strtotime($user['joined_at']), // İlk ziyareti kayıt tarihi olarak ayarlayalım
2, // Varsayılan "Registered" kullanıcı grubu ID'si
0, // Görünen grup (0 ise usergroup kullanılır)
bin2hex(random_bytes(25)) // Rastgele bir login key oluştur
]);
echo "Kullanıcı '{$user['username']}' başarıyla taşındı.<br>";
$tasinan_kullanici_sayisi++;
}
} catch (PDOException $e) {
die("<p style='color:red;'>Bir hata oluştu: " . $e->getMessage() . "</p>");
}
echo "<h2>Taşıma Tamamlandı!</h2>";
echo "<p style='color:green;'>Başarıyla taşınan kullanıcı sayısı: {$tasinan_kullanici_sayisi}</p>";
echo "<p style='color:orange;'>Atlanan (zaten mevcut veya yönetici) kullanıcı sayısı: {$atlanan_kullanici_sayisi}</p>";
?>
Böyle bir script yaptık sadece user tablosunu taşıyor açıklamaları da yazdım içine forum kök klasörüne "merge.php" olarak kaydedin ve dosyadaki flarum ve MyBB MySQL şifrenizi girin.
Taşıma başlasın.
Bu işi yapan yazılımlara Importer deniliyor ama yapan bulamadım. Yapay zekaya özel kod yazdırman gerek gibi.
Sxinar
Üstün
Merger sistem yazdım bir tane hocam ama şifre hash olarak farklı yöntemler kullandığı için şifreleri manuel olarak şifremi unuttum yapmaları gerekti.Bu işi yapan yazılımlara Importer deniliyor ama yapan bulamadım. Yapay zekaya özel kod yazdırman gerek gibi.
PHP:
<?php
// Hata raporlamayı aç (sadece geliştirme ve test aşamasında kullanın)
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Script'in zaman aşımına uğramasını engelle
set_time_limit(0);
// --- VERİTABANI AYARLARI ---
// Flarum veritabanı bilgilerinizi buraya girin
$flarum_db = [
'host' => 'localhost',
'name' => 'flarum_veritabani_adi',
'user' => 'flarum_kullanici_adi',
'pass' => 'flarum_sifresi'
];
// MyBB veritabanı bilgilerinizi buraya girin
// Genellikle MyBB'nin inc/config.php dosyasında bulunur
$mybb_db = [
'host' => 'localhost',
'name' => 'mybb_veritabani_adi',
'user' => 'mybb_kullanici_adi',
'pass' => 'mybb_sifresi'
];
// --- GEÇİCİ ŞİFRE AYARI ---
// Tüm kullanıcılara atanacak olan geçici şifre.
// Taşıma sonrası kullanıcılar bu şifreyle giriş yapamaz, "Şifremi Unuttum" kullanmaları gerekir.
// Güvenlik için bu değeri karmaşık bir şey yapabilirsiniz, ancak kullanıcılar bunu bilmeyecek.
define('GECICI_SIFRE', 'CokGuvEnliGeciciSifre!2025');
// --- VERİTABANI BAĞLANTILARI (PDO) ---
try {
$flarum_conn = new PDO("mysql:host={$flarum_db['host']};dbname={$flarum_db['name']};charset=utf8mb4", $flarum_db['user'], $flarum_db['pass']);
$flarum_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$mybb_conn = new PDO("mysql:host={$mybb_db['host']};dbname={$mybb_db['name']};charset=utf8mb4", $mybb_db['user'], $mybb_db['pass']);
$mybb_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Veritabanı bağlantı hatası: " . $e->getMessage());
}
echo "<h1>Flarum'dan MyBB'ye Kullanıcı Taşıma Script'i</h1>";
echo "<p>Bağlantılar başarılı. Taşıma işlemi başlıyor...</p>";
$tasinan_kullanici_sayisi = 0;
$atlanan_kullanici_sayisi = 0;
try {
// Flarum'dan tüm kullanıcıları çek
$stmt = $flarum_conn->query("SELECT id, username, email, joined_at, last_seen_at FROM users ORDER BY id ASC");
$flarum_users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($flarum_users as $user) {
// Flarum'daki Yönetici (ID=1) genellikle MyBB'de zaten kuruludur.
// Çakışmaları önlemek için ilk kullanıcıyı atlayabilir veya e-posta ile kontrol edebilirsiniz.
if ($user['id'] == 1) {
echo "Yönetici kullanıcı (ID: 1 - {$user['username']}) atlandı.<br>";
$atlanan_kullanici_sayisi++;
continue;
}
// MyBB'de bu email veya kullanıcı adı zaten var mı diye kontrol et
$check_stmt = $mybb_conn->prepare("SELECT COUNT(*) FROM mybb_users WHERE username = ? OR email = ?");
$check_stmt->execute([$user['username'], $user['email']]);
if ($check_stmt->fetchColumn() > 0) {
echo "Kullanıcı adı '{$user['username']}' veya e-posta '{$user['email']}' MyBB'de zaten mevcut. Atlanıyor.<br>";
$atlanan_kullanici_sayisi++;
continue;
}
// MyBB için yeni şifre oluşturma
// 1. Salt oluştur (rastgele bir dize)
$salt = bin2hex(random_bytes(4)); // 8 karakterlik salt
// 2. Şifreyi MyBB formatında hash'le: md5(md5(salt) + md5(sifre))
$hashed_password = md5(md5($salt) . md5(GECICI_SIFRE));
// Kullanıcıyı MyBB veritabanına ekle
$insert_user = $mybb_conn->prepare("
INSERT INTO mybb_users
(username, password, salt, email, regdate, lastactive, lastvisit, usergroup, displaygroup, loginkey)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
");
$insert_user->execute([
$user['username'],
$hashed_password,
$salt,
$user['email'],
strtotime($user['joined_at']), // Flarum tarihini Unix timestamp'e çevir
strtotime($user['last_seen_at'] ?? 'now'), // Flarum'da null ise şimdiki zamanı kullan
strtotime($user['joined_at']), // İlk ziyareti kayıt tarihi olarak ayarlayalım
2, // Varsayılan "Registered" kullanıcı grubu ID'si
0, // Görünen grup (0 ise usergroup kullanılır)
bin2hex(random_bytes(25)) // Rastgele bir login key oluştur
]);
echo "Kullanıcı '{$user['username']}' başarıyla taşındı.<br>";
$tasinan_kullanici_sayisi++;
}
} catch (PDOException $e) {
die("<p style='color:red;'>Bir hata oluştu: " . $e->getMessage() . "</p>");
}
echo "<h2>Taşıma Tamamlandı!</h2>";
echo "<p style='color:green;'>Başarıyla taşınan kullanıcı sayısı: {$tasinan_kullanici_sayisi}</p>";
echo "<p style='color:orange;'>Atlanan (zaten mevcut veya yönetici) kullanıcı sayısı: {$atlanan_kullanici_sayisi}</p>";
?>
Böyle bir script yaptık sadece user tablosunu taşıyor açıklamaları da yazdım içine forum kök klasörüne "merge.php" olarak kaydedin ve dosyadaki flarum ve MyBB MySQL şifrenizi girin.
Taşıma başlasın.
Son düzenleyen: Moderatör:
- Katılım
- 30 Ocak 2025
- Mesajlar
- 4.984
- Makaleler
- 14
- Çözümler
- 100
- Beğeniler
- 8.074
Geçici şifre ataması. Hmm mantıklı. En merak ettiğim şey, BCRYPT ile şifreleyen scriptten MD5 gibi ilkel sisteme nasıl geçiş yapılacağı idi.Merger sistem yazdım bir tane hocam ama şifre hash olarak farklı yöntemler kullandığı için şifreleri manuel olarak şifremi unuttum yapmaları gerekti.
PHP:<?php // Hata raporlamayı aç (sadece geliştirme ve test aşamasında kullanın) ini_set('display_errors', 1); error_reporting(E_ALL); // Script'in zaman aşımına uğramasını engelle set_time_limit(0); // --- VERİTABANI AYARLARI --- // Flarum veritabanı bilgilerinizi buraya girin $flarum_db = [ 'host' => 'localhost', 'name' => 'flarum_veritabani_adi', 'user' => 'flarum_kullanici_adi', 'pass' => 'flarum_sifresi' ]; // MyBB veritabanı bilgilerinizi buraya girin // Genellikle MyBB'nin inc/config.php dosyasında bulunur $mybb_db = [ 'host' => 'localhost', 'name' => 'mybb_veritabani_adi', 'user' => 'mybb_kullanici_adi', 'pass' => 'mybb_sifresi' ]; // --- GEÇİCİ ŞİFRE AYARI --- // Tüm kullanıcılara atanacak olan geçici şifre. // Taşıma sonrası kullanıcılar bu şifreyle giriş yapamaz, "Şifremi Unuttum" kullanmaları gerekir. // Güvenlik için bu değeri karmaşık bir şey yapabilirsiniz, ancak kullanıcılar bunu bilmeyecek. define('GECICI_SIFRE', 'CokGuvEnliGeciciSifre!2025'); // --- VERİTABANI BAĞLANTILARI (PDO) --- try { $flarum_conn = new PDO("mysql:host={$flarum_db['host']};dbname={$flarum_db['name']};charset=utf8mb4", $flarum_db['user'], $flarum_db['pass']); $flarum_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $mybb_conn = new PDO("mysql:host={$mybb_db['host']};dbname={$mybb_db['name']};charset=utf8mb4", $mybb_db['user'], $mybb_db['pass']); $mybb_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Veritabanı bağlantı hatası: " . $e->getMessage()); } echo "<h1>Flarum'dan MyBB'ye Kullanıcı Taşıma Script'i</h1>"; echo "<p>Bağlantılar başarılı. Taşıma işlemi başlıyor...</p>"; $tasinan_kullanici_sayisi = 0; $atlanan_kullanici_sayisi = 0; try { // Flarum'dan tüm kullanıcıları çek $stmt = $flarum_conn->query("SELECT id, username, email, joined_at, last_seen_at FROM users ORDER BY id ASC"); $flarum_users = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($flarum_users as $user) { // Flarum'daki Yönetici (ID=1) genellikle MyBB'de zaten kuruludur. // Çakışmaları önlemek için ilk kullanıcıyı atlayabilir veya e-posta ile kontrol edebilirsiniz. if ($user['id'] == 1) { echo "Yönetici kullanıcı (ID: 1 - {$user['username']}) atlandı.<br>"; $atlanan_kullanici_sayisi++; continue; } // MyBB'de bu email veya kullanıcı adı zaten var mı diye kontrol et $check_stmt = $mybb_conn->prepare("SELECT COUNT(*) FROM mybb_users WHERE username = ? OR email = ?"); $check_stmt->execute([$user['username'], $user['email']]); if ($check_stmt->fetchColumn() > 0) { echo "Kullanıcı adı '{$user['username']}' veya e-posta '{$user['email']}' MyBB'de zaten mevcut. Atlanıyor.<br>"; $atlanan_kullanici_sayisi++; continue; } // MyBB için yeni şifre oluşturma // 1. Salt oluştur (rastgele bir dize) $salt = bin2hex(random_bytes(4)); // 8 karakterlik salt // 2. Şifreyi MyBB formatında hash'le: md5(md5(salt) + md5(sifre)) $hashed_password = md5(md5($salt) . md5(GECICI_SIFRE)); // Kullanıcıyı MyBB veritabanına ekle $insert_user = $mybb_conn->prepare(" INSERT INTO mybb_users (username, password, salt, email, regdate, lastactive, lastvisit, usergroup, displaygroup, loginkey) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "); $insert_user->execute([ $user['username'], $hashed_password, $salt, $user['email'], strtotime($user['joined_at']), // Flarum tarihini Unix timestamp'e çevir strtotime($user['last_seen_at'] ?? 'now'), // Flarum'da null ise şimdiki zamanı kullan strtotime($user['joined_at']), // İlk ziyareti kayıt tarihi olarak ayarlayalım 2, // Varsayılan "Registered" kullanıcı grubu ID'si 0, // Görünen grup (0 ise usergroup kullanılır) bin2hex(random_bytes(25)) // Rastgele bir login key oluştur ]); echo "Kullanıcı '{$user['username']}' başarıyla taşındı.<br>"; $tasinan_kullanici_sayisi++; } } catch (PDOException $e) { die("<p style='color:red;'>Bir hata oluştu: " . $e->getMessage() . "</p>"); } echo "<h2>Taşıma Tamamlandı!</h2>"; echo "<p style='color:green;'>Başarıyla taşınan kullanıcı sayısı: {$tasinan_kullanici_sayisi}</p>"; echo "<p style='color:orange;'>Atlanan (zaten mevcut veya yönetici) kullanıcı sayısı: {$atlanan_kullanici_sayisi}</p>"; ?>
Böyle bir script yaptık sadece user tablosunu taşıyor açıklamaları da yazdım içine forum kök klasörüne "merge.php" olarak kaydedin ve dosyadaki flarum ve MyBB MySQL şifrenizi girin.
Taşıma başlasın.
Sxinar
Üstün
Aynı şeyi düşündük o konuda gemini güzel bir fikir verdi.Geçici şifre ataması. Hmm mantıklı. En merak ettiğim şey, BCRYPT ile şifreleyen scriptten MD5 gibi ilkel sisteme nasıl geçiş yapılacağı idi.
Bu gayet mantıklı geldi tüm kullanıcılara geçici şifre atiyor ve şifre sıfırlamak isteyince otomatik bir şifre üretip gönderiyor mail ile.