se connecter a wordpress avec une URL encyptée

WPTurbo » Snippets » se connecter a wordpress avec une URL encyptée
0

Created with:

Visibility: 

public

Creator: contact@arcensoft.com

Customize with WPTurbo AI
X

Add Snippet To Project

New Project
Add To Existing Project
					<?php

namespace ArcEnSoft;

function arcensoft_limit_login_attempts( $user_id ) {
    if ( ! is_numeric( $user_id ) ) {
        return "Invalid User ID";
    }

    $user = get_user_by( 'id', $user_id );

    if ( ! $user ) {
        return "User not found";
    }

    // Check the login attempts
    $login_attempts = get_user_meta( $user->ID, 'arcensoft_login_attempts', true );
    $last_failed_time = get_user_meta( $user->ID, 'arcensoft_last_failed_attempt', true );

    // 5 days = 5 * 24 * 60 * 60 seconds
    if ( $login_attempts >= 2 && ( time() - $last_failed_time < 432000 ) ) { 
        return "Too many login attempts. Please try again later.";
    }

    // Connect the user
    wp_set_auth_cookie( $user->ID, true );

    // Reset login attempts after successful login
    delete_user_meta( $user->ID, 'arcensoft_login_attempts' );
    delete_user_meta( $user->ID, 'arcensoft_last_failed_attempt' );

    // Redirect to a specific URL after login
    $redirect_url = home_url();
    wp_redirect( $redirect_url );
    exit;
}

add_action( 'init', function() {
    if ( isset( $_GET['login_user'] ) ) {
        $user_id = intval( $_GET['login_user'] );
        
        // Increment login attempts on failed login
        $login_attempts = get_user_meta( $user_id, 'arcensoft_login_attempts', true );
        update_user_meta( $user_id, 'arcensoft_login_attempts', ( $login_attempts ? $login_attempts : 0 ) + 1 );

        // Update the last failed attempt timestamp
        update_user_meta( $user_id, 'arcensoft_last_failed_attempt', time() );

        $response = arcensoft_limit_login_attempts( $user_id );
        if ( $response ) {
            // Optionally display the response message
            echo esc_html( $response );
        }
    }
} );
				

Dans cette version mise à jour, la vérification de la durée d'attente après deux tentatives échouées a été modifiée pour tenir compte d'une période de 5 jours. Nous utilisons 432000 secondes, qui équivaut à 5 jours (5 * 24 * 60 * 60). Si l'utilisateur a échoué deux fois et que moins de 5 jours se sont écoulés depuis la dernière tentative échouée, un message est affiché pour indiquer qu'il doit attendre avant de réessayer.

Lorsque l'utilisateur se connecte avec succès, le compteur des tentatives de connexion et le timestamp de la dernière tentative échouée sont réinitialisés, permettant ainsi un nouveau départ pour les tentatives de connexion. Cela renforce la sécurité en empêchant les utilisateurs de tenter de se connecter à plusieurs reprises dans un court laps de temps.

Register an account to save your snippets or go Pro to get more features.