ভুল পাসওয়ার্ড দেওয়ার পরে কীভাবে আমি ব্যবহারকারীকে পুনর্নির্দেশ করতে পারি?


16

আমি wp_login_form()jQuery ডায়ালগ উইন্ডোতে লগইন ফর্ম প্রদর্শন করতে ব্যবহার করছি ।

যদি ব্যবহারকারী ভুল পাসওয়ার্ড প্রবেশ করে, ব্যবহারকারীকে ব্যাকএন্ডে নেওয়া হবে। আমি এটা চাই না। ব্যবহারকারীর অবহিত করার কোনও উপায় আছে যে সে ভুল পাসওয়ার্ডটি প্রবেশ করেছে এবং এখনও একই পৃষ্ঠায় রয়েছে?

আসার আগে wp_login_form()আমি একটি প্লাগইন ব্যবহার করছিলাম। আমি এক ধরনের আশা করছি এর জন্য আমি একটি প্লাগইন ব্যবহার এড়াতে পারি।

আমার কোড:

wp_login_form( array(
  'label_remember' => __( 'Remember me' ),
  'label_log_in' => __( 'Login' )
) );

উত্তর:


5

wp_login_form()এর ক্রিয়া বৈশিষ্ট্যের সাথে একটি ফর্ম তৈরি করে site_url/wp-login.phpযার অর্থ আপনি যখন জমা দিন বোতামটি ক্লিক করেন তখন ফর্মটি পোস্ট করা হয় site_url/wp-login.phpযা ত্রুটিগুলিতে redirect_to এ উপেক্ষা করে (ভুল পাসওয়ার্ডের মতো) সুতরাং আপনার ক্ষেত্রে হয় প্লাগইন ব্যবহার করে ফিরে যান বা পুরো লগইন প্রক্রিয়াটি পুনরায় তৈরি করুন এবং এইভাবে আপনার ত্রুটির উপর নিয়ন্ত্রণ থাকবে, কাস্টম লগইন ফর্মটিতে সঠিক ব্যবহারকারীর নাম পরীক্ষা করে দেখুন যা খুব অনুরূপ প্রশ্ন।


26

আমি গুগল থেকে এখানে এসেছি। কিন্তু উত্তরটি আমাকে সন্তুষ্ট করেনি। আমি কিছুক্ষণ সন্ধান করছিলাম এবং এর চেয়ে ভাল সমাধান খুঁজে পেয়েছি।

আপনার এই যোগ থিমের functions.php :

add_action( 'wp_login_failed', 'my_front_end_login_fail' );  // hook failed login

function my_front_end_login_fail( $username ) {
   $referrer = $_SERVER['HTTP_REFERER'];  // where did the post submission come from?
   // if there's a valid referrer, and it's not the default log-in screen
   if ( !empty($referrer) && !strstr($referrer,'wp-login') && !strstr($referrer,'wp-admin') ) {
      wp_redirect( $referrer . '?login=failed' );  // let's append some information (login=failed) to the URL for the theme to use
      exit;
   }
}

ধন্যবাদ আলেক্সি, আমি এটি পরীক্ষা করব (যেহেতু আমি এখনও একটি প্লাগইন ব্যবহার করছি)
স্টিভেন

7
ভুল শংসাপত্রগুলি প্রবেশ করার সময় অ্যালেক্সির সমাধান কাজ করে, তবে ব্যবহারকারী যখন ব্যবহারকারী নাম বা পাসওয়ার্ড লিখতে ভুলে যান তবে দুর্ভাগ্যক্রমে ব্যর্থ হন। স্পষ্টতই ওয়ার্ডপ্রেস এমনকি ব্যবহারকারীকে এই ক্ষেত্রে লগ করার চেষ্টা করে না, সুতরাং wp_login_failed ক্রিয়া সম্পাদন করা হয় না।
জাজেপ্পান হোয়েসজেউস্কি

আমি কিছু সময় বাঁচাতে এখানে wp_get_referer () ব্যবহার করতাম: কোডেক্স.ওয়ার্ডপ্রেস.আর
জ্যাক

1
এছাড়াও, আপনি অবশ্যই এখানে add_query_arg ব্যবহার করেন, তাই ডাব্লুপি_আরডাইরেক্ট হওয়া উচিত: "wp_redirect (add_query_arg ('লগইন', 'ব্যর্থ', $ রেফারার))";
জ্যাক

18

আমি এখানে উল্লিখিত সমস্ত সমস্যার মোকাবিলার জন্য যে বর্তমান পদ্ধতিটি ব্যবহার করছি তা খালি ব্যবহারকারীর নাম / পাসওয়ার্ড দিয়েও দুর্দান্ত কাজ করে এবং জাভাস্ক্রিপ্টের উপর নির্ভর করে না (যদিও জেএস এর সাথে ভাল হতে পারে)।

add_action( 'wp_login_failed', 'custom_login_failed' );
function custom_login_failed( $username )
{
    $referrer = wp_get_referer();

    if ( $referrer && ! strstr($referrer, 'wp-login') && ! strstr($referrer,'wp-admin') )
    {
        wp_redirect( add_query_arg('login', 'failed', $referrer) );
        exit;
    }
}

একটি ফাঁকা ব্যবহারকারীর নাম / পাসওয়ার্ড কীভাবে চিকিত্সা করা হয় তা পরিবর্তনের জন্য কীটি হ'ল:

add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3);
function custom_authenticate_username_password( $user, $username, $password )
{
    if ( is_a($user, 'WP_User') ) { return $user; }

    if ( empty($username) || empty($password) )
    {
        $error = new WP_Error();
        $user  = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));

        return $error;
    }
}

আপনি এটি আরও একধাপ এগিয়ে নিয়ে যেতে পারেন এবং আপনার পছন্দসই লগইন পৃষ্ঠায় ব্যবহারকারীদের পুনর্নির্দেশের মাধ্যমে wp-login.php সম্পূর্ণরূপে প্রতিস্থাপন করতে পারেন এবং সেই পৃষ্ঠাটি লগইন_ফয়েল পুনর্নির্দেশের জন্যও ব্যবহার করতে পারেন। সম্পূর্ণ কোড:

/**
 * Custom Login Page Actions
 */
// Change the login url sitewide to the custom login page
add_filter( 'login_url', 'custom_login_url', 10, 2 );
// Redirects wp-login to custom login with some custom error query vars when needed
add_action( 'login_head', 'custom_redirect_login', 10, 2 );
// Updates login failed to send user back to the custom form with a query var
add_action( 'wp_login_failed', 'custom_login_failed', 10, 2 );
// Updates authentication to return an error when one field or both are blank
add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3);
// Automatically adds the login form to "login" page
add_filter( 'the_content', 'custom_login_form_to_login_page' );

/**
 * Custom Login Page Functions
 */
function custom_login_url( $login_url='', $redirect='' )
{
    $page = get_page_by_path('login');
    if ( $page )
    {
        $login_url = get_permalink($page->ID);

        if (! empty($redirect) )
            $login_url = add_query_arg('redirect_to', urlencode($redirect), $login_url);
    }
    return $login_url;
}
function custom_redirect_login( $redirect_to='', $request='' )
{
    if ( 'wp-login.php' == $GLOBALS['pagenow'] )
    {
        $redirect_url = custom_login_url();

        if (! empty($_GET['action']) )
        {
            if ( 'lostpassword' == $_GET['action'] )
            {
                return;
            }
            elseif ( 'register' == $_GET['action'] )
            {
                $register_page = get_page_by_path('register');
                $redirect_url = get_permalink($register_page->ID);
            }
        }
        elseif (! empty($_GET['loggedout'])  )
        {
            $redirect_url = add_query_arg('action', 'loggedout', custom_login_url());
        }

        wp_redirect( $redirect_url );
        exit;
    }
}
function custom_login_failed( $username )
{
    $referrer = wp_get_referer();

    if ( $referrer && ! strstr($referrer, 'wp-login') && ! strstr($referrer, 'wp-admin') )
    {
        if ( empty($_GET['loggedout']) )
        wp_redirect( add_query_arg('action', 'failed', custom_login_url()) );
        else
        wp_redirect( add_query_arg('action', 'loggedout', custom_login_url()) );
        exit;
    }
}
function custom_authenticate_username_password( $user, $username, $password )
{
    if ( is_a($user, 'WP_User') ) { return $user; }

    if ( empty($username) || empty($password) )
    {
        $error = new WP_Error();
        $user  = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));

        return $error;
    }
}
function custom_login_form_to_login_page( $content )
{
    if ( is_page('login') && in_the_loop() )
    {
        $output = $message = "";
        if (! empty($_GET['action']) )
        {
            if ( 'failed' == $_GET['action'] )
                $message = "There was a problem with your username or password.";
            elseif ( 'loggedout' == $_GET['action'] )
                $message = "You are now logged out.";
            elseif ( 'recovered' == $_GET['action'] )
                $message = "Check your e-mail for the confirmation link.";
        }

        if ( $message ) $output .= '<div class="message"><p>'. $message .'</p></div>';
        $output .= wp_login_form('echo=0&redirect='. site_url());
        $output .= '<a href="'. wp_lostpassword_url( add_query_arg('action', 'recovered', get_permalink()) ) .'" title="Recover Lost Password">Lost Password?</a>';

        $content .= $output;
    }
    return $content;
}

পাসওয়ার্ড পুনরুদ্ধারের জন্য wp-login পৃষ্ঠায় আপনার লোগো যুক্ত করতে কাস্টমাইজ করুন এবং এগুলি যুক্ত করুন:

// calling it only on the login page
add_action( 'login_enqueue_scripts', 'custom_login_css', 10 );
function custom_login_css() { wp_enqueue_style( 'custom_login_css', get_template_directory_uri() .'/library/css/login.css', false ); }
// changing the logo link from wordpress.org to your site
add_filter( 'login_headerurl', 'custom_login_logo_url' );
function custom_login_logo_url() { return home_url(); }
// changing the alt text on the logo to show your site name
add_filter( 'login_headertitle', 'custom_login_title' );
function custom_login_title() { return get_option('blogname'); }

লোগো লোগো সিএসএস:

.login h1 a {
    background: url(../images/login-logo.png) no-repeat top center;
    width: 274px;
    height: 63px;
    text-indent: -9999px;
    overflow: hidden;
    padding-bottom: 15px;
    display: block;
}

সম্পাদনা: আমি এটি কেবলমাত্র অন্য একটি সাইট ফর্ম স্ক্র্যাচে প্রয়োগ করেছি এবং উপরের "আরও ধাপে" আরও সম্পূর্ণ হতে পেরেছি এবং "অ্যাড_অ্যাকশনস" এ ছোট সিনট্যাক্স ত্রুটিগুলি স্থির করেছি। একটি পৃথক টেম্পলেট ফাইল ছাড়াই লগইন পৃষ্ঠায় লগইন ফর্মটি স্বয়ংক্রিয়ভাবে যুক্ত করার জন্য কিছু মন্তব্য এবং একটি পদ্ধতি যুক্ত করেছে। লগইন ফর্ম পদ্ধতিটি বেশিরভাগ ক্ষেত্রে কাজ করা উচিত, যেহেতু এটি "the_Contant" এর সাথে সংযুক্ত রয়েছে তাই লগইন পৃষ্ঠায় আপনার যদি একাধিক লুপ থাকে তবে কেবল সেই ক্ষেত্রে একটি পৃষ্ঠা-লগইন.এফপি টেম্পলেট ব্যবহার করুন issue


1
ধন্যবাদ, আমি এটি একবার দেখে নেব (এবং আমি এটি টুইটার এবং এফবি-র মতো তৃতীয় পক্ষের লগিনের সাথে মিলিয়ে কাজ করতে পারি কিনা তা দেখুন)
স্টিভেন

1
জ্যাক - এটি একটি দুর্দান্ত সম্পূর্ণ সমাধান। ভাগ করে নেওয়ার জন্য ধন্যবাদ. +1
হেনরিউইট

এটি মূলত সেলোইন ইন টেম্পলেট লগইন নামে একটি প্লাগিনে আবৃত, একটি সম্পূর্ণ সম্পূর্ণ, ছোট প্লাগইন। wordpress.org/plugins/sewn-in-template-log-in
জেক

খুব ভাল, একমাত্র সমস্যাটি হ'ল এটি সামনের প্রান্তে আসলে ত্রুটিগুলি ছুঁড়ে না ফেলে ....
সিয়াহ

4

গৃহীত সমাধানে খালি ক্ষেত্র সম্পর্কে স্জকিপান হোয়েসজেউসকি'র পয়েন্টের জন্য একটি সমাধান, নিম্নলিখিত jQuery স্ট্যান্ডার্ড ডাব্লুপি-লগইন পৃষ্ঠাতে যাওয়া রোধ করবে: (লগইন পৃষ্ঠার টেমপ্লেট বা পাদটীকা। Php যোগ করুন)

jQuery("#loginform-custom").submit(function(){
     var isFormValid = true;
       jQuery("input").each(function()
       {
       if (jQuery.trim($(this).val()).length == 0){
       jQuery(this).addClass("submit_error");
       isFormValid = false;
       }     
     else {
     jQuery(this).removeClass("submit_error");
     }
     });
     return isFormValid;
});

0

আলেক্সির উত্তরে একটি সংযোজন। ক্ষেত্রগুলির মধ্যে একটিও ফাঁকা নয় তা পরীক্ষা করতে আপনি jquery ফাংশন যুক্ত করতে পারেন। ওয়ার্ডপ্রেসকে / wp-login.php- এ পুনঃনির্দেশ করা থেকে বিরত রেখে পরীক্ষা করার মতো কিছু না থাকলে ফর্মটি জমা দেওয়া হবে না।

  <script>
        $("#wp-submit").click(function() {
          var user = $("input#user_login").val();
            if (user == "") {
            $("input#user_login").focus();
            return false;
          }
         });
  </script>   

কীভাবে ভুলে যাওয়া পাসওয়ার্ডের দিকটি ঠিক করবেন তা এখনও নিশ্চিত নন


3
দয়া করে সচেতন থাকুন যে ওয়ার্ডপ্রেস "নো সংঘাত" মোডে jQuery লোড করে। $ওরফে কাজ করে না।
s_ha_dum

আপনাকে এটি বিবেচনা করতে হবে যে ব্যবহারকারী হিট [প্রবেশ] করে এবং সে লগইন বোতাম টি ক্লিক করে না। এছাড়াও, আপনাকে খালি পাসওয়ার্ডও পরীক্ষা করতে হবে।
স্টিভেন

-1
jQuery("#loginform-custom").submit(function(){
     var isFormValid = true;
       jQuery("input").each(function()
       {
       if (jQuery.trim($(this).val()).length == 0){
       jQuery(this).addClass("submit_error");
       isFormValid = false;
       }     
     else {
     jQuery(this).removeClass("submit_error");
     }
     });
     return isFormValid;
});

দয়া করে আপনার উত্তর সম্পাদনা করুন , এবং একটি ব্যাখ্যা যুক্ত করুন: কেন এটি সমস্যার সমাধান করতে পারে?
ফুক্সিয়া
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.