امیر حسین حبیبی 618 ارسال شده در مرداد 94 گزارش بازنشر ارسال شده در مرداد 94 (ویرایش شده) سلام دوستان من از کدی جهت بازیابی پسورد فراموش شده در قالب استفاده میکنم که یک مشکل داره اونم این که وقتی نام کاربری را جهت باز یابی وارد میکنه و ارسال میزنه اگه وجود داشته باشه پسورد رو رندوم عوض میکنه و برای ایمیل طرف ارسال میکنه خوب این کارش بده چون شاید اون طرف اصلا خودش نباشه و یکی بخواد اذیت کنهمن کد رو میزارم ایا بهتره همینو رو ویرایش کنم یا برای از نو بنویسم خودمfunction ajax_forgotPassword(){// First check the nonce, if it fails the function will breakcheck_ajax_referer('ajax-forgot-nonce', 'security');global $wpdb;$account = $_POST['user_login'];if (empty($account)) { $error = 'کاربر با این نام کاربر در سیستم وجود ندارد';} else { if (is_email($account)) { if (email_exists($account)) $get_by = 'email'; else $error = 'کاربر با این نام کاربر در سیستم وجود ندارد'; } else if (validate_username($account)) { if (username_exists($account)) $get_by = 'login'; else $error = 'کاربر با این نام کاربر در سیستم وجود ندارد'; } else $error = 'کاربر با این نام کاربر در سیستم وجود ندارد';}if (empty ($error)) { // lets generate our new password //$random_password = wp_generate_password( 12, false ); $random_password = wp_generate_password(); // Get user data by field and data, fields are id, slug, email and login $user = get_user_by($get_by, $account); $update_user = wp_update_user(array('ID' => $user->ID, 'user_pass' => $random_password)); // if update user return true then lets send user an email containing the new password if ($update_user) { $from = 'WRITE SENDER EMAIL ADDRESS HERE'; // Set whatever you want like mail@yourdomain.com if (!(isset($from) && is_email($from))) { $sitename = strtolower($_SERVER['SERVER_NAME']); if (substr($sitename, 0, 4) == 'www.') { $sitename = substr($sitename, 4); } $from = 'No_Replay@' . $sitename; } $to = $user->user_email; $subject = 'Your new password'; $sender = 'From: ' . get_option('name') . ' <' . $from . '>' . "\r\n"; $message = 'Your new password is: ' . $random_password . " "; $headers[] = 'MIME-Version: 1.0' . "\r\n"; $headers[] = 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers[] = "X-Mailer: PHP \r\n"; $headers[] = $sender; $mail = wp_mail($to, $subject, $message, $headers); if ($mail) $success = 'پسورد جدید برای شما ارسال شد'; else $error = 'System is unable to send you mail containg your new password.'; } else { $error = 'Oops! Something went wrong while updaing your account.'; }}if (!empty($error)) echo json_encode(array('loggedin' => false, 'message' => __($error)));if (!empty($success)) echo json_encode(array('loggedin' => false, 'message' => __($success)));die();}آیا چیزی جایگزین هست که لینک فعال سازی ارسال کنه نه این که سرخود پسورد عوض کنه ویرایش شده مرداد 94 توسط a2h نقل قول لینک به ارسال
Black_Sky 6349 ارسال شده در شهریور 94 گزارش بازنشر ارسال شده در شهریور 94 شما اومدید به صورت Rand دارید تولید میکنید $random_password = wp_generate_password();و در اینجا برابر قرار دادید :'user_pass' => $random_password));میتونید یک تابع تعریف کنید که فقط یک هشدار بفرستد و جایگزین کنید جای ریست کردن خب چرا از reset pass کمک نمیگیرید (wp-login.php)البته اگر کار خاصی مد نظر دارید بگید بهتره <?phplogin_footer('user_login');break;case 'resetpass' :case 'rp' :list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );$rp_cookie = 'wp-resetpass-' . COOKIEHASH;if ( isset( $_GET['key'] ) ) { $value = sprintf( '%s:%s', wp_unslash( $_GET['login'] ), wp_unslash( $_GET['key'] ) ); setcookie( $rp_cookie, $value, 0, $rp_path, COOKIE_DOMAIN, is_ssl(), true ); wp_safe_redirect( remove_query_arg( array( 'key', 'login' ) ) ); exit;}if ( isset( $_COOKIE[ $rp_cookie ] ) && 0 < strpos( $_COOKIE[ $rp_cookie ], ':' ) ) { list( $rp_login, $rp_key ) = explode( ':', wp_unslash( $_COOKIE[ $rp_cookie ] ), 2 ); $user = check_password_reset_key( $rp_key, $rp_login ); if ( isset( $_POST['pass1'] ) && ! hash_equals( $rp_key, $_POST['rp_key'] ) ) { $user = false; }} else { $user = false;}if ( ! $user || is_wp_error( $user ) ) { setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true ); if ( $user && $user->get_error_code() === 'expired_key' ) wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) ); else wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) ); exit;}$errors = new WP_Error();if ( isset($_POST['pass1']) && $_POST['pass1'] != $_POST['pass2'] ) $errors->add( 'password_reset_mismatch', __( 'The passwords do not match.' ) );/** * Fires before the password reset procedure is validated. * * @since 3.5.0 * * @param object $errors WP Error object. * @param WP_User|WP_Error $user WP_User object if the login and reset key match. WP_Error object otherwise. */do_action( 'validate_password_reset', $errors, $user );if ( ( ! $errors->get_error_code() ) && isset( $_POST['pass1'] ) && !empty( $_POST['pass1'] ) ) { reset_password($user, $_POST['pass1']); setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true ); login_header( __( 'Password Reset' ), '<p class="message reset-pass">' . __( 'Your password has been reset.' ) . ' <a href="' . esc_url( wp_login_url() ) . '">' . __( 'Log in' ) . '</a></p>' ); login_footer(); exit;}wp_enqueue_script('utils');wp_enqueue_script('user-profile');login_header(__('Reset Password'), '<p class="message reset-pass">' . __('Enter your new password below.') . '</p>', $errors );?> نقل قول لینک به ارسال
امیر حسین حبیبی 618 ارسال شده در شهریور 94 مالک گزارش بازنشر ارسال شده در شهریور 94 کلاسی یا تابعی در وردپرس وجود نداره که لینک ریست پسورد ایجاد کنه برای کاربر نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .