✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Logga in med telefonnummer på WordPress

27

Du kanske har placerat ett inloggningsformulär på din WordPress-webbplats. Och du vill tillåta användare att logga in med sitt telefonnummer eller med användarnamn / e-post. I grund och botten tillåter du användare att ange någon av posterna från användarnamn / e-post / telefon och ett lösenord.

Observera, denna handledning har inte för avsikt att visa inloggning med OTP. Istället ska jag lägga till ytterligare ett alternativ för telefonnummer tillsammans med användarnamn och e-post. Så dina användare kan välja vilket alternativ som helst som passar dem. Du såg antagligen detta alternativ på Amazon. Amazon tillåter oss att logga in med antingen e-post eller mobilnummer.

Jag ska skapa ett enkelt inloggningsformulär. På formuläret skicka kommer vi att skriva en kod som kontrollerar referenser i bakgrunden för alla 3 alternativen (Användarnamn / E-post / telefon) och ett lösenord.

För att lägga till ett telefonnummer i ett inloggningsformulär, ska du infoga ett användares telefonnummer i tabellen ‘wp_usermeta’. Du kan göra det vid tidpunkten för användarregistreringen. Koden nedan kan användas för att lägga till ett telefonnummer till en användare.

<?php
$user_id = 1;
$phone_number = 9999999999;
add_user_meta( $user_id, 'user_phone', $phone_number);

När du väl har meta_key ‘user_phone’ tillsammans med dess värde i databasen kan du lägga till inloggning med alternativet telefonnummer i ett inloggningsformulär. Låt oss lägga till följande inloggningsformulär på din inloggningssida.

<?php
$return = log_the_user_in();
if( is_wp_error( $return)) {
    echo $return->get_error_message();
}
?>
<form method="post">
    <p><input type="text" name="user_login" placeholder="Username, email or mobile" required /></p>
    <p><input type="password" name="user_password" placeholder="Password" required /></p>
    <input type="hidden" name="login_nonce" value="<?php echo wp_create_nonce('login_nonce'); ?>" />
    <input type="submit" name="login_the_user" value="Submit" />
</form>

I ovanstående kod söker vi efter fel och skriver ut dem. Vi kommer att skriva kod för hantering av fel i nästa steg. Dessutom lade vi till en nonce i formuläret som är det rekommenderade sättet att bearbeta formulär i WordPress.

Logga in med telefonnummer på WordPress

När en användare fyller in referenser och trycker på en skicka-knapp tar vi referenserna och verifierar dem mot databasen. Om uppgifterna är korrekta loggar vi in ​​användaren och omdirigerar den till hemsidan. Vid fel autentiseringsuppgifter loggas fel med WP_Errorklass.

Så skriv koden nedan i functions.phpfilen som behandlar inloggningsformuläret.

<?php
add_action( 'init', 'log_the_user_in' );
function log_the_user_in() {
    if (isset( $_POST['login_the_user']) && wp_verify_nonce( $_REQUEST['login_nonce'], 'login_nonce')) {
 
        if (! empty( $_POST['user_login']) &&! empty( $_POST['user_password'])) {
 
            if (is_email( $_POST['user_login'])) {
                // check user by email
                $user = get_user_by( 'email', $_POST['user_login'] );
            } elseif (is_numeric( $_POST['user_login'])) {
                // check user by phone number
                global $wpdb;
                $tbl_usermeta = $wpdb->prefix.'usermeta';
                $user_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM $tbl_usermeta WHERE meta_key=%s AND meta_value=%s", 'user_phone', $_POST['user_login']) );
 
                $user = get_user_by( 'ID', $user_id );
            } else {
                // check user by username
                $user = get_user_by( 'login', $_POST['user_login'] );
            }
 
            if (! $user) {
                return new WP_Error('wrong_credentials', 'Invalid credentials.');
            }
 
            // check the user's login with their password.
            if (! wp_check_password( $_POST['user_password'], $user->user_pass, $user->ID)) {
                return new WP_Error('wrong_credentials', 'Invalid credentials.');
            }
 
            wp_clear_auth_cookie();
            wp_set_current_user($user->ID);
            wp_set_auth_cookie($user->ID);
 
            wp_redirect(get_bloginfo('url'));
            exit;
        } else {
            return new WP_Error('empty', 'Both fields are required.');
        }
    }
}

Här verifierade vi först nonce för att skydda vår form från vissa typer av missbruk, skadlig kod och CSRF-attacker. Därefter söker det efter giltig e-post och telefonnummer baserat på is_email()eller is_numeric()metod. Om det angivna värdet inte är ett e-postmeddelande eller en telefon, går vi efter användarnamn. Om uppgifterna är uppfyllda loggar användarna in i systemet och omdirigerar till hemsidan. I ditt fall kan du omdirigera användare till en annan sida enligt ditt flöde.

Jag hoppas att du förstår hur man integrerar inloggning med ett telefonnummer i WordPress. Dela dina tankar och förslag i kommentarsektionen nedan.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer