• 22-11-2024, 10:48:45
    #1
    Herkese merhaba,
    Benim 2 adet Wordpress sitem var. xxx.com ve deneme.xxx.com diye. Ben xxx.com a üye olan birinin bilgilerini api ile deneme.xxx.com a göndermek istiyorum. Bilgiler kullanıcı adı , şifre , mail ve İsim soyisim. Aşağıdaki kodu oluşturdum verileri gönderiyor ama şifre göndermede sorun yaşıyorum. Kullanıcı giriş yapmaya çalıştığında yanlış şifre uyarısı veriyor.

    Ana Siteye xxx.com 'a eklenen kod:
    add_action('user_register', 'send_user_data_to_subsite', 10, 1);
    
    function send_user_data_to_subsite($user_id) {
        // Yeni kullanıcı bilgilerini al
        $user = get_userdata($user_id);
        $username = $user->user_login;
        $first_name = $user->first_name;
        $last_name = $user->last_name;
        $email = $user->user_email;
        $password = $user->user_pass;  // Gerçek şifreyi buradan alıyoruz
    
        // API endpoint'ine veri gönder
        $response = wp_remote_post('http://www.deneme.xxx.com/wp-json/my_namespace/v1/sync_user/', [
            'method'    => 'POST',
            'body'      => json_encode([
                'username'  => $username,
                'first_name'=> $first_name,
                'last_name' => $last_name,
                'email'     => $email,
                'password'  => $password,  // Şifreyi düz metin olarak gönderiyoruz
            ]),
            'headers'   => [
                'Content-Type' => 'application/json',
            ],
        ]);
    
        $body = wp_remote_retrieve_body($response);
        // Yanıtı işleyin
    }
    Alt siteye deneme.xxx.com'a eklenen kod :
    add_action('rest_api_init', function () {
        register_rest_route('my_namespace/v1', '/sync_user/', [
            'methods' => 'POST',
            'callback' => 'sync_user_from_another_site',
            'permission_callback' => '__return_true',
        ]);
    });
    
    function sync_user_from_another_site(WP_REST_Request $request) {
        $data = $request->get_json_params();
    
        // Verileri al
        $username = sanitize_text_field($data['username']);
        $first_name = sanitize_text_field($data['first_name']);
        $last_name = sanitize_text_field($data['last_name']);
        $email = sanitize_email($data['email']);
        $password = sanitize_text_field($data['password']);  // Şifreyi düz metin olarak alıyoruz
    
        // Yeni kullanıcı oluştur (şifre düz metin olarak gönderildiği için burada direkt kullanıyoruz)
        $user_id = wp_create_user($username, $password, $email);
        if (is_wp_error($user_id)) {
            return new WP_REST_Response(['success' => false, 'message' => 'Kullanıcı oluşturulamadı.'], 500);
        }
    
        // Kullanıcı bilgilerini güncelle
        wp_update_user([
            'ID' => $user_id,
            'first_name' => $first_name,
            'last_name' => $last_name,
        ]);
    
        return new WP_REST_Response(['success' => true, 'message' => 'Kullanıcı başarıyla senkronize edildi.'], 200);
    }
  • 22-11-2024, 10:56:18
    #2
    Şifreyi düz metin olarak gönderdiğiniz için sorun yaşıyorsunuz. WordPress MD5 ile şifreleme yapıyor. Kullanıcının girdiği şifreyi MD5'e çevirerek gönderin.
  • 22-11-2024, 11:06:18
    #3
    MythDev adlı üyeden alıntı: mesajı görüntüle
    Şifreyi düz metin olarak gönderdiğiniz için sorun yaşıyorsunuz. WordPress MD5 ile şifreleme yapıyor. Kullanıcının girdiği şifreyi MD5'e çevirerek gönderin.
    Hocam denedim yine olmuyor. Amacım : xxx.com benim ana sitem buraya üye olan biri otomatik olarak deneme.xxx.com alt siteme de üye olmalı. Kullanıcı ana sitede kullandığı veriler ile alt siteye giriş yapmasını sağlamak istiyorum.
    Günce Kodum Yine olmadı hocam :
    add_action('user_register', 'send_user_data_to_subsite', 10, 1);
    
    function send_user_data_to_subsite($user_id) {
        // Yeni kullanıcı bilgilerini al
        $user = get_userdata($user_id);
        $username = $user->user_login;
        $first_name = $user->first_name;
        $last_name = $user->last_name;
        $email = $user->user_email;
        $password = $user->user_pass;  // Gerçek şifreyi alıyoruz
    
        // MD5 ile şifreyi hashle
        $hashed_password = md5($password);  // Şifreyi MD5 ile hashliyoruz
    
        // API endpoint'ine veri gönder
        $response = wp_remote_post('http://www.deneme.xxx.com/wp-json/my_namespace/v1/sync_user/', [
            'method'    => 'POST',
            'body'      => json_encode([
                'username'  => $username,
                'first_name'=> $first_name,
                'last_name' => $last_name,
                'email'     => $email,
                'password'  => $hashed_password,  // Hashlenmiş şifreyi gönderiyoruz
            ]),
            'headers'   => [
                'Content-Type' => 'application/json',
            ],
        ]);
    
        $body = wp_remote_retrieve_body($response);
        // Yanıtı işleyin
    }
    alt site :
    add_action('rest_api_init', function () {
        register_rest_route('my_namespace/v1', '/sync_user/', [
            'methods' => 'POST',
            'callback' => 'sync_user_from_another_site',
            'permission_callback' => '__return_true',
        ]);
    });
    
    function sync_user_from_another_site(WP_REST_Request $request) {
        $data = $request->get_json_params();
    
        // Verileri al
        $username = sanitize_text_field($data['username']);
        $first_name = sanitize_text_field($data['first_name']);
        $last_name = sanitize_text_field($data['last_name']);
        $email = sanitize_email($data['email']);
        $password = sanitize_text_field($data['password']);  // Hashlenmiş şifreyi alıyoruz
    
        // Yeni kullanıcı oluştur (MD5 şifreyi hash olarak kullanıyoruz)
        $user_id = wp_create_user($username, $password, $email); // MD5 şifre burada kullanılacak
        if (is_wp_error($user_id)) {
            return new WP_REST_Response(['success' => false, 'message' => 'Kullanıcı oluşturulamadı.'], 500);
        }
    
        // Kullanıcı bilgilerini güncelle
        wp_update_user([
            'ID' => $user_id,
            'first_name' => $first_name,
            'last_name' => $last_name,
        ]);
    
        return new WP_REST_Response(['success' => true, 'message' => 'Kullanıcı başarıyla senkronize edildi.'], 200);
    }
  • 22-11-2024, 11:12:13
    #4
    hata ne basıyor hocam onu bi debug edip yazarmısın mutlaka bir hata veriyordur
  • 22-11-2024, 11:23:08
    #5
    Pos3idon adlı üyeden alıntı: mesajı görüntüle
    hata ne basıyor hocam onu bi debug edip yazarmısın mutlaka bir hata veriyordur
    hocam her hangi birşey yazmıyor. Bilgileri doğru gönderiyor ama şifreyi düz metin veta m5 olarak gönderirken bence bir hata oluyor.. Gönderim oluyordur belki ama alt siteye gönderilen veri ile girilmiyor
  • 22-11-2024, 11:25:14
    #6
    hocam alt sitede gönderdiğin veriyi karşıla ekrana bas asekron olarak o zaman hata ne görebilirsin
  • 22-11-2024, 13:33:21
    #7
    add_action('user_register', 'send_user_data_to_subsite', 10, 1);
     
    function send_user_data_to_subsite($user_id) {
        // Yeni kullanıcı bilgilerini al
        $user = get_userdata($user_id);
        $username = $user->user_login;
        $first_name = $user->first_name;
        $last_name = $user->last_name;
        $email = $user->user_email;
        $password = $user->user_pass;  // Gerçek şifreyi buradan alıyoruz
     
                error_log('Kullanıcı Şifre :  ' . print_r($password));
    
        // API endpoint'ine veri gönder
        $response = wp_remote_post('http://www.deneme.xxx.com/wp-json/my_namespace/v1/sync_user/', [
            'method'    => 'POST',
            'body'      => json_encode([
                'username'  => $username,
                'first_name'=> $first_name,
                'last_name' => $last_name,
                'email'     => $email,
                'password'  => $password,  // Şifreyi düz metin olarak gönderiyoruz
            ]),
            'headers'   => [
                'Content-Type' => 'application/json',
            ],
        ]);
     
        $body = wp_remote_retrieve_body($response);
        // Yanıtı işleyin
    }
    fonksiyonu değişin logları kontrol edin şifre hangi formatta büyük ihtimalle şifre gönderiminde sorun var.