Merhabalar,
Bu makalede 2 farklı cms uygulamasının üyelik sistemlerini birleştirmeye çalışacağız. Yani 2 farklı dizinde bulunan ve 2 farklı veritabanı kullanan scriptlerden birine üye olan kişi otomatik olarak diğerine de üye olmuş olacak. Başlamadan önce olayı daha anlaşılır kılmak adına bir senaryo belirleyelim.
Bir adet wordpress siteniz var ve bu site alan adınızın ana dizininde kurulu. Bunun yanında birde forum.siteniz.com şeklinde alt bir siteniz var ve siz wordpress sitenize üye olan kişilerin üyelikleriyle forum sitenize de giriş yapabilmelerini istiyorsunuz. Bunun için aşağıdaki adımları uygulayabilirsiniz.
Şunu da belirmek istiyorum, bu işlem ne kadar sağlıklıdır orası kesinlikle tartışılır. Çünkü ikisi de kendine özgü farklı tablo yapılarına sahipler. Ayrıca zamanında bu konuyla ilgili olarak wordpress eklentilerine rastlamıştım. İsterseniz araştırıp kullanabilirsiniz.
Başlayalım;
- Senaryoma uygun olarak localhost’uma bir adet wordpress ve mybb kuruyorum. 2 uygulamayı da farklı veritabanlarına kuruyorum. Siz isterseniz 2 uygulamayı da aynı veritabanında barındırabilirsiniz. Bana sorarsanız tek bir veritabanı kullanmak performans açısından daha faydalı olacaktır.
- 2 sisteminde tablo yapısı birbirinden farklı ve oldukça uzun. Bu yüzden sadece temel bilgileri alarak üyelikleri taşıyacağız. Özelleştirilmiş bilgileri kullanıcı daha sonradan forum paneline girdiğinde düzenleyecek.
- WordPress tarafından üye olunmasını sağlayalım. Bunun için wp-login.php dosyasını açalım ve 699-710 satırları arasındaki register_new_user fonksiyonunun olduğu yeri bulalım. Burası wordpress’te kullanıcıların oluşturulduğu yer.
Şimdi bu kodlara ek olarak birkaç satır ekleyelim;if ( $http_post ) { $user_login = isset( $_POST['user_login'] ) ? $_POST['user_login'] : ''; $user_email = isset( $_POST['user_email'] ) ? wp_unslash( $_POST['user_email'] ) : ''; $errors = register_new_user($user_login, $user_email); if ( !is_wp_error($errors) ) { $redirect_to = !empty( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : 'wp-login.php?checkemail=registered'; wp_safe_redirect( $redirect_to ); exit(); } }
Kodlarını aşağıdaki kodlar ile değiştirelim.
if ( $http_post ) { $user_login = isset( $_POST['user_login'] ) ? $_POST['user_login'] : ''; $user_email = isset( $_POST['user_email'] ) ? wp_unslash( $_POST['user_email'] ) : ''; $errors = register_new_user($user_login, $user_email); if ( !is_wp_error($errors) ) { // Verileri Mybb tablolarına ekleyelim. $kullanici = $wpdb->get_row( "SELECT * FROM wp_users WHERE user_login = '$user_login'" ); $sifre = $kullanici->user_pass; $email = $kullanici->user_email; $tarih1 = $kullanici->user_registered; $tarih = time($tarih1); try { $db = new PDO("mysql:host=localhost;dbname=mybb;charset=utf8", "root", ""); // Mybb Veritabanı Bilgileri } catch ( PDOException $e ){ print $e->getMessage(); } $query = $db->prepare("INSERT INTO mybb_users SET username = ?, password = ?, email = ?, usergroup = ?, regdate = ?"); $insert = $query->execute(array( $user_login, $sifre, $email, '2' ,$tarih )); $redirect_to = !empty( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : 'wp-login.php?checkemail=registered'; wp_safe_redirect( $redirect_to ); exit(); } }
- Burada wordpress’te eklenen kullanıcı otomatik olarak mybb veritabanına da ekleniyor. Fakat başta da dediğim gibi, bu çok ilkel bir yöntem. Yani ilerde size sorun oluşturmayacağının garantisini veremem.
Makaleyi okuduğunuz için teşekkür ederim, şuanda sadece iki sistemin kullanıcılarını birbirine ekledik, daha sonra şifre güncelleme ve ters üyelik işlemlerini yapacağız. Makaleyi takip etmeyi unutmayın, Sağlıcakla Kalın.
1 yorum
Yararlı bir içerik olmuş, teşekkür ederim.