Lompat ke konten
[a Humble Request] Klik 1 unit iklan saja di halaman ini untuk menjaga blog tetap aktif dan memberikan wawasan yang berguna.

Cara Kerja WordPress Login Dan Registrasi

TokoDaring.Com – Cara Kerja WordPress Login Dan Registrasi. Saat mengembangkan sistem autentikasi pengguna pada website WordPress, penting untuk memiliki pemahaman mendalam tentang proses login dan registrasi.

Postingan ini akan menjelaskan seluk-beluk dan Cara kerja WordPress login di halaman yang ikonik, wp-login.php. Juga fungsi-fungsi mendasar yang memastikan pengalaman pengguna yang aman dan lancar di situs WordPress.

Artikel terkait :

Memaksimalkan Halaman Produk Toko Online

Dan di akhir dokumentasi ini, pengembang atau anda sebagai pemilik bisnis online yang menggunakan WordPress dan WooCommerce sebagai platform akan memiliki gagasan komprehensif tentang cara kerja WordPress Login dan Registrasi di platform WordPress, dan cara menghubungkan setiap langkah proses untuk mengimplementasikan fungsi khusus.

Cara kerja WordPress login

Untuk masuk ke situs website WordPress, pengguna perlu memasukkan kredensial mereka melalui formulir login yang terdapat di endpoint /wp-login.php. Endpoint ini dapat diubah dengan menggunakan pengkodean khusus, namun secara default, ini tetap menjadi endpoint login.

Formulir ini seperti pintu gerbang, dimana pengguna memberikan nama pengguna dan kata sandinya. Setelah pengguna mengirimkan informasi ini, jenis permintaan POST dikirim ke server. Permintaan ini kemudian ditangani oleh file wp-login.php, yang bertindak sebagai pintu masuk utama untuk keseluruhan prosedur login.

Di wp-login.php, kredensial pengguna divalidasi menggunakan fungsi wp_authenticate(). Jika nama pengguna dan kata sandi yang diberikan cocok dengan catatan database, pengguna diautentikasi. Jika tidak, Kesalahan WP akan terpicu.

Filter Otentikasi

Pengembang plugin dapat menggunakan filter autentikasi untuk mencegat proses ini dan memperkenalkan langkah validasi tambahan atau metode autentikasi alternatif. Hal ini memungkinkan integrasi penyedia otentikasi eksternal atau mekanisme keamanan tingkat lanjut. Di bawah ini, Anda akan menemukan contoh cara menambahkan logika validasi khusus untuk proses login.

function wporg_custom_login_validation($user, $username, $password {
   // You can add your custom validation logic here
    if (some_custom_condition()) {
       return new WP_Error('custom_error', __('Custom validation failed.', 'your-text-domain'));
    }
    return $user;
}
add_filter('authenticate', 'wporg_custom_login_validation', 10, 3);

Anda juga dapat menambahkan kolom khusus untuk halaman login Anda. Misalnya, di bawah ini adalah demonstrasi cara menambahkan kotak centang wajib yang harus dicentang, sebelum pengguna dapat login.

function wporg_custom_login_field(){
?>
    <p>
        <label for="my_extra_field">I agree to the terms and conditons< />
        <input type="checkbox" value="1" class="input" id="custom_login_field" name="custom_login_field_name"/>
</label>
    </p> <?php
}
add_action('login_form','wporg_custom_login_field');

function wporg_check_checkbox($user, $password) {
    if( !isset($_POST['custom_login_field_name']) )
    {
        remove_action('authenticate', 'wp_authenticate_username_password', 20);
        $user = new WP_Error( 'denied', __('<strong>ERROR</strong>: Please agree to our terms and conditions to login.', 'your-text-domain') );
    }
    return $user;
}
add_filter( 'wp_authenticate_user', 'wporg_check_checkbox', 10, 3 );

Setelah proses otentikasi berhasil, WordPress menghasilkan cookie otentikasi. Cookies ini seperti penanda digital yang membantu menjaga sesi pengguna. Dua cookie terpenting untuk otentikasi di WordPress adalah:

  • wordpress_logged_in_{hash}
  • wordpress_sec_{hash}

Sekarang, cookie autentikasi yang baru dibuat ini perlu dipasang di browser pengguna. WordPress melakukannya menggunakan fungsi setcookie(). Dengan cara ini, setiap interaksi lebih lanjut antara browser pengguna dan server akan menyertakan cookie ini. Hal ini memungkinkan server untuk terus mengenali dan memvalidasi sesi pengguna, tanpa mengharuskan pengguna memasukkan nama pengguna dan kata sandi setiap kali.

Setelah cookie ini berhasil diatur di browser, pengguna akan sering diarahkan ke dashboard WordPress atau halaman persis yang mereka coba akses sebelum mereka masuk. Waktu kedaluwarsa default cookie ini adalah dua hari kecuali Ingat Saya adalah diperiksa pada formulir login; jika tidak, cookie akan disimpan selama 14 hari.

Cookie wordpress_logged_in_{hash}: Cookie ini berisi kode khusus (hash) yang dibuat dari nama pengguna pengguna, waktu kedaluwarsa, dan kunci rahasia. Ketika cookie ini disetel di browser, sistem mengidentifikasi pengguna sebagai pengguna yang diautentikasi, dan login.

Cookie wordpress_sec_{hash}: Cookie ini juga menyimpan hash, namun kali ini dibuat menggunakan ID sesi pengguna, stempel waktu kedaluwarsa, dan kunci rahasia yang sama seperti sebelumnya. Tujuan dari cookie ini adalah untuk memeriksa ulang sesi autentikasi pengguna, sehingga menambahkan lapisan keamanan ekstra pada proses tersebut.

Pembuatan dan penanganan cookie autentikasi dapat disesuaikan menggunakan tindakan dan filter. Tindakan set_auth_cookie memungkinkan pengembang untuk mengubah perilaku pembuatan dan penyisipan cookie, meningkatkan manajemen sesi, atau memperkenalkan data cookie khusus.

Di bawah ini, Anda akan menemukan contoh bagaimana Anda dapat meningkatkan masa berlaku cookie default menjadi tujuh hari, dan menjadi 30 hari jika Remember Me dicentang oleh pengguna.

function wporg_auth_cookie_expiration_filter($expiration, $user_id, $remember) {
    if ($remember) {
        return strtotime('+30 days', 0); //30 days in second.
    } else{        Return 604800; //7 days in second.
}
add_filter('auth_cookie_expiration', 'wporg_auth_cookie_expiration_filter', 10, 3);

Seperti disebutkan di atas, sepanjang sesi aktif pengguna di situs web, cookie otentikasi ini diperiksa setiap kali pengguna meminta halaman baru. WordPress mengandalkan fungsi yang dikenal sebagai wp_validate_auth_cookie() untuk melaksanakan tugas penting ini. Ini memastikan sesi pengguna tetap aktif dan valid. Jika cookie masih bagus (yaitu, belum kedaluwarsa) dan berfungsi sebagaimana mestinya, pengguna masih login dan dapat terus menggunakan situs.

Namun jika cookie hilang atau ketinggalan jaman, pengguna akan diminta untuk login kembali, dimulai dengan form Login. Contoh kode di bawah ini menunjukkan cara melakukan tugas tertentu berdasarkan valid atau tidaknya cookie.

$user_id = get_current_user_id(); // Get the current user's ID

if ($user_id) {
    // User is logged in, validate the authentication cookies    $auth_cookie = $_COOKIE[LOGGED_IN_COOKIE];
    $auth_cookie_valid = wp_validate_auth_cookie($auth_cookie, 'logged_in');    if ($auth_cookie_valid) {
        // Authentication cookies are valid, perform actions accordingly        echo __('Authentication cookies are valid.', 'your-text-domain');
    } else {
        // Authentication cookies are not valid, take appropriate actions        echo __('Authentication cookies are not valid. Please log in again.', 'your-text-domain');
    }
} else {
    // User is not logged in, handle the case accordingly
    echo __('User is not logged in.', 'your-text-domain');
}

Setelah pengguna berhasil login, pengembang dapat menggunakan fungsi is_user_logged_in() untuk memeriksa apakah pengguna tertentu login atau tidak, dan kemudian memicu tindakan tertentu yang sesuai. Misalnya:

if (is_user_logged_in()) {
    // User is logged in, perform specific actions
    echo __('Welcome, logged-in user!', 'your-text-domain');
} else {
    // User is not logged in, perform other actions
    echo __('Please login to access this content.', 'your-text-domain');
}

Bagaimana cara kerja proses registrasi di WordPress?

Untuk mendaftar di situs WordPress, pengguna akhir biasanya perlu menavigasi ke halaman atau formulir pendaftaran, yang sering kali dapat diakses melalui endpoint /wp-login.php?action=register. Proses pendaftaran biasanya melibatkan memasukkan detail dasar seperti nama pengguna, email, kata sandi, dan sebagainya.

Jika kolom tambahan diperlukan saat registrasi, kolom tersebut dapat ditambahkan menggunakan action hook register_form. Misalnya, administrator yang memiliki pengetahuan pengkodean dapat menyesuaikan formulir pendaftaran dengan menambahkan kolom seperti ‘Nomor telepon’ menggunakan cuplikan kode yang disediakan:

function wporg_custom_registration_form() {
   ?>
   <p>
        <label for="phone">Phone Number<br>
           <input type="text" name="phone" id="phone" class="input" value="">
        </label>
    </p>
    <?php
}
add_action('register_form', 'wporg_custom_registration_form');

Setelah mengirimkan formulir pendaftaran yang telah diisi, permintaan POST dikirim ke file wp-login.php. File tersebut mengelola registrasi dan memvalidasi input pengguna. Untuk melakukan validasi khusus pada data yang dikirimkan pengguna selama registrasi, seseorang dapat menggunakan filter Registration_errors. Dalam contoh di bawah, kode memverifikasi entri nomor telepon yang ditambahkan di atas.

function wporg_custom_registration_validation($errors, $sanitized_user_login, $user_email) {
    if (empty($_POST['phone'])) {
        $errors->add('phone_error', __('Phone number is required.', 'textdomain'));
    }
    return $errors;}
add_filter('registration_errors', 'wporg_custom_registration_validation', 10, 3);

Menggunakan hook action user_register, informasi tambahan yang dikumpulkan dari proses pendaftaran disimpan sebagai metadata pengguna. Di bawah ini adalah contoh kode untuk menyimpan nomor telepon.

function wporg_save_phone_number($user_id) {
   if (isset($_POST['phone'])) {
        $phone = sanitize_text_field($_POST['phone']);
        update_user_meta($user_id, 'phone_number', $phone);
     }
}
add_action('user_register', 'wporg_save_phone_number');

Data pengguna yang dikirimkan menjalani proses validasi dan sanitasi yang komprehensif. WordPress memanfaatkan fungsi seperti sanitize_user() dan sanitize_email() untuk menjamin bahwa nama pengguna dan email yang diberikan tidak mengandung konten yang berpotensi membahayakan, sehingga memastikan masukan yang bersih dan aman.

Dalam upaya memastikan keunikan alamat email, WordPress memeriksa apakah email yang diberikan sudah dikaitkan dengan akun yang ada. Fungsi email_exists() muncul di garis depan untuk memastikan apakah email sudah terdaftar.

Dengan fokus pada keamanan, kata sandi yang dipilih pengguna mengalami hashing melalui algoritma kriptografi yang kuat. Fungsi wp_hash_password() menjadi pusat perhatian dalam proses ini, mengubah kata sandi teks biasa menjadi hash yang diperkaya, memperkuat keamanan kredensial pengguna. Perhatikan bahwa saat ini, WordPress menggunakan teknik hashing MD5 untuk hashing kata sandi. Jika seseorang ingin menerapkan hashing kata sandi khusus, itu dapat dengan mudah dilakukan menggunakan filter wp_hash_password.

function wporg_custom_password_hash($password) {
    $hashed_password = my_custom_hash_function($password); 
//Here the my_custom_hash_function will be hashing function
    return $hashed_password;
}
add_filter('wp_hash_password', 'wporg_custom_password_hash');

Setelah validasi berhasil, pemeriksaan ketersediaan nama pengguna, dan penegasan keunikan email, akun pengguna baru muncul di database WordPress melalui fungsi wp_insert_user(). Fungsi ini mengintegrasikan informasi pengguna dengan mulus ke dalam tabel wp_users.

Tergantung pada konfigurasi situs, pengguna mungkin diminta untuk mengaktifkan akun mereka melalui tautan aktivasi yang dikirimkan ke alamat email terdaftar mereka. WordPress memanfaatkan fungsi wp_send_new_user_notifications() untuk mengirimkan pemberitahuan email kepada pengguna dan administrator situs, memberi tahu mereka tentang pendaftaran baru.

Mirip dengan proses login, WordPress membuat cookie otentikasi, membangun sesi untuk pengguna yang baru saja terdaftar. Cookie wordpress_logged_in_{hash} dan wordpress_sec_{hash} dipalsukan, menampung data sesi pengguna yang penting.

Cookie autentikasi ini kemudian tertanam di browser pengguna menggunakan fungsi setcookie(). Sama seperti yang dilakukan pengguna saat login. Dalam kasus ini juga, fungsi wp_validate_auth_cookie() dipanggil secara konsisten, melakukan validasi cookie ini dengan setiap permintaan halaman, sehingga melindungi keterlibatan pengguna yang lancar dalam situs website.

Untuk tindakan pasca-pendaftaran, seperti mengirim pemberitahuan atau melakukan operasi basis data tambahan, seseorang dapat menggunakan kait seperti user_register. Hal ini memungkinkan Anda memicu tindakan khusus setelah pendaftaran pengguna berhasil. Ini membantu seseorang untuk menyesuaikan konten email dan pemberitahuan sesuai kebutuhan spesifik. Misalnya, di bawah ini adalah demonstrasi cara menyesuaikan notifikasi email yang dikirim saat pendaftaran:

function wporg_custom_registration_email($user_id) {
    $user = get_userdata($user_id);
    $to = $user->user_email;
    $subject = __('Welcome to Our Website', 'your-text-domain');
    $message = __('Thank you for registering on our website. This is a custom email notification.', 'your-text-domain');

    // Customize the email content here

    wp_mail($to, $subject, $message);}add_action('wp_new_user_notification', 'wporg_custom_registration_email');

Catatan tambahan mengenai cara kerja wordpress login dan registrasi

Spasi awal atau akhir kata sandi secara otomatis dipangkas saat membuat pengguna, atau saat masuk

Jadi, spasi sebelum atau sesudah kata sandi tidak akan dipertimbangkan. Namun, penting untuk dicatat bahwa spasi hanya akan dianggap sebagai bagian dari masukan kata sandi jika ada dalam teks kata sandi sebenarnya.

Misalnya, jika kata sandinya adalah “Testes”, maka spasi tidak akan dihitung. Namun, jika kata sandinya adalah “Tes tes”, maka spasi akan dipertimbangkan, dan saat masuk, jumlah spasi yang tepat perlu digunakan untuk mengautentikasi.

Semua email diubah menjadi huruf kecil, jadi tidak masalah jika Anda memiliki email dengan huruf kapital atau huruf kecil, keduanya akan selalu diubah menjadi huruf kecil sambil menyimpan nilainya di database/membandingkan nilainya dengan database.

Apostrof diperbolehkan dalam email

Algoritme hashing kata sandi WordPress menghasilkan hash yang berbeda setiap kali kata sandi diubah. Jadi, meskipun Anda mengubah kata sandi dengan yang sudah ada, hash baru lainnya akan dihasilkan, dan akan disimpan sebagai entri di tabel wp_users.

Multisite: Tautan di email pengambilan kata sandi akan selalu mengarah ke situs utama

Misalnya, jika ada pengguna Sub-situs A yang mencoba masuk dengan nama pengguna dan kata sandi Sub-situs B, ia secara otomatis dialihkan ke Sub-situs A. Ketika pengaturan ulang kata sandi dimulai, permintaan diproses melalui situs utama. Selain itu, pengguna juga diminta untuk mereset kata sandi melalui link domain situs utama. Di email juga digunakan nama situs utama tersebut.

Artikel terkait dengan :

Related Ads: