💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ Reza Mounsef
بهینه سازی بخشی از کد استاد و کمی اعتبار سنجی بیشتر!
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۰ مهر ۱۴۰۳

اگر بخواهیم کد استاد را در قسمت Ajax کمی بهینه‌تر کنیم میتوانیم از دستورات زیر استفاده کنیم.

 

<?php
add_action('wp_ajax_nopriv_wp_lr_auth_login','wp_lr_auth_login');
function wp_lr_auth_login(){
    if (!isset($_POST['_nonce']) || !wp_verify_nonce($_POST['_nonce'], 'your_action')) {
        wp_die(
            'متاسفانه، شما اجازه انجام این کار را ندارید.',
            'دسترسی غیرمجاز',
            array('response' => 403, 'back_link' => true)     // کد وضعیت HTTP و لینک بازگشت
        );
    }
    $email = sanitize_text_field($_POST['email']);
    $password = sanitize_text_field($_POST['password']);
    $remember_me  = rest_sanitize_boolean($_POST['remember_me']);
    wp_lr_validate_input($email,$password);
    $user_login = get_user_by_email($email);
    $user_login = $user_login->user_login;
    $creds = [
        /*'user_login'=>sanitize_user($_POST['user_name']),*/
        'user_login'=>sanitize_user($user_login),
        'user_password'=>$password,
        'remember'=>$remember_me
    ];
    $user = wp_signon($creds,false);
   if(!is_wp_error($user)){
//       wp_clear_auth_cookie();
       wp_set_current_user($user-ID,$user->user_login);
      /*wp_set_auth_cookie($user-ID);*/
       wp_send_json([
           'success'=>true,
           'message'=>'ورود شما موفقیت آمیز بود در حال انتقال ...'
       ],200);
  /*    wp_redirect(site_url());*/
   }else{
       wp_send_json([
           'error'=>true,
           'message'=>'نام کاربری یا کلمه عبور اشتباه است!'
       ],403);
   }
}
function wp_lr_validate_input($email, $password) {
    // تابع برای ارسال پاسخ خطا
    function send_error_response($message) {
        wp_send_json([
            'error' => true,
            'message' => $message
        ], 403);
    }
    // تابع بررسی دامنه ایمیل (رکورد MX)
    function is_valid_email_domain($email) {
        $domain = substr(strrchr($email, "@"), 1); // استخراج دامنه از ایمیل
        return checkdnsrr($domain, "MX");
    }
    // بررسی خالی بودن هر دو فیلد
    if (empty($email) && empty($password)) {
        send_error_response('لطفا ایمیل و کلمه عبور خود را وارد نمایید.');
    }
    // بررسی خالی بودن ایمیل
    if (empty($email)) {
        send_error_response('لطفا ایمیل خود را وارد نمایید.');
    }
    // بررسی خالی بودن کلمه عبور
    if (empty($password)) {
        send_error_response('لطفا کلمه عبور خود را وارد نمایید.');
    }
    // بررسی معتبر بودن ایمیل (فرمت ایمیل)
    if (!is_email($email)) {
        send_error_response('لطفا ایمیل معتبر وارد نمایید.');
    }
    // بررسی معتبر بودن دامنه ایمیل (رکورد MX)
    if (!is_valid_email_domain($email)) {
        send_error_response('دامنه ایمیل معتبر نیست.');
    }
    // کد ادامه فرآیند شما اینجا قرار می‌گیرد
}
//Set expired Auth Cookie
add_filter('auth_cookie_expiration','wp_lr_set_cookie',1);
function wp_lr_set_cookie($expiration){
    return $expiration = 60*60*48;
}

در کد بالا تغییرات زیر صورت گرفته است.

استفاده از wp_die: به جای die از wp_die استفاده می‌کنیم. این تابع قابلیت‌های بیشتری برای مدیریت خطاها دارد و می‌تواند پیام‌های مناسب‌تری به کاربر نمایش دهد.
ضمنا به جای شرط منطقی && از شرط || استفاده شده است که کمی بهتر و بهینه‌تر است زیرا زمانی که بخش !isset($_POST['_nonce'])
معتبر نباشد نیازی به بررسی بخش دوم نیست 

 

 

  • اضافه کردن تابع is_valid_email_domain(): این تابع بعد از بررسی صحت فرمت ایمیل توسط is_email() فراخوانی می‌شود. این تابع بررسی می‌کند که آیا دامنه ایمیل دارای رکورد MX معتبر است یا خیر.
  • استفاده از send_error_response() برای ارسال پیام‌های خطا: هر زمان که خطایی رخ می‌دهد، به جای تکرار کد، از تابع send_error_response() استفاده شده است که خطا را به کاربر ارسال می‌کند.

    البته با تشکر از استاد به خاطر دوره عالی و حرفه ای و صد البته که قصد من فقط تمرین و تکرار بیشتر دوستان است وگرنه کدهای استاد صالحی عزیز به مراتب عالی و صرفا در جهت آموزش هستند.....