ورود خودکار مدیریت وردپرس در PHP

ورود خودکار مدیریت وردپرس در PHP

پست امروز فقط یک پست کوتاه خواهد بود که در آن به شما نشان خواهم داد که چگونه یک ویژگی کوچک منظم را در سایت وردپرس خود نصب کنید. این، در صورت استفاده ایمن، می تواند بسیار راحت باشد. این برای استفاده در سایت های وردپرس طراحی شده است که یک حساب کاربری عمومی برای ورود کاربران ارائه می دهند. به عنوان مثال، در بسیاری از نسخه‌های نمایشی وردپرس باطن، نویسنده یک حساب «دمو» برای مشتریان احتمالی ایجاد می‌کند تا به‌عنوان ورود به سیستم وارد شوند و با محصول خود بازی کنند. در اغلب موارد، نویسنده به سادگی اعلامیه ای را نشان می دهد که می گوید:

USERNAME: نسخه ی نمایشی
گذرواژه: نسخه ی نمایشی

این کمی عابر پیاده است. مطمئناً می‌توانیم دمو را کمی ساده‌تر و حرفه‌ای‌تر کنیم؟ من یک قطعه سریع به شما می‌دهم تا با این اعتبارنامه‌ها به صورت خودکار وارد ادمین وردپرس شوید. این را می‌توان در فایل توابع طرح زمینه رها کرد یا در فایل افزونه خودش قرار داد و فعال کرد.

این می تواند مفید باشد اگر؛

  • سایت شما دارای یک حساب عمومی برای ورود کاربران ناشناس است.
  • شما یک پیوند ورود با یک کلیک می خواهید.
  • شما می خواهید با ارائه مسیری سریع و کارآمد به نسخه نمایشی، تبدیل نسخه آزمایشی محصول را به حداکثر برسانید و مراحل لازم را به حداقل برسانید.
  • می‌خواهید بازدیدکنندگان را مستقیماً به مکان مربوطه هدایت کنید (مثلاً صفحه تنظیمات).

مهم: هرگز از این برای ورود به حساب‌های با قدرت واقعی استفاده نکنید. به عنوان مثال. حساب‌های مدیر/ویرایشگر و غیره.
از این قطعه با دقت استفاده کنید.

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

/*
نام افزونه: ورود خودکار
URI افزونه: http://hbt.io/
نسخه: 1.0.0
نویسنده: هری بل توماس
URI نویسنده: http://hbt.io/
*/

تابع autologin() {
	// پارامتری که باید بررسی شود
	if ($_GET['autologin'] == 'demo') {
		
		// نام کاربری حساب برای ورود به
		$creds['user_login'] = 'دمو';
		
		// رمز عبور حساب برای استفاده
		$creds['user_password'] = 'دمو';
		
		$creds['remember'] = true;
		$autologin_user = wp_signon( $creds, false );
		
		اگر (!is_wp_error($autologin_user)) 
			header('مکان: wp-admin'); // مکان برای تغییر مسیر به
	}
}
// فقط قبل از ارسال سرصفحه ها و کوکی ها، کد را اضافه کنید
add_action('after_setup_theme', 'autologin' );

استفاده

استفاده از این بسیار ساده است. نام کاربری و رمز عبور حساب کاربری در فایل افزونه (کد بالا) مشخص شده است و برای ورود به سیستم کافیست مراجعه کنید. https://example.com/wp-login.php?autologin=demo

باید فوراً به wp-admin هدایت شوید و به حساب مشخص شده وارد شوید. اگر اعتبارنامه اشتباه است، فقط باید فرم ورود به سیستم را به طور معمول ببینید.

سفارشی کردن

سفارشی کردن این قطعه بسیار آسان است. اساساً فقط 3 مورد وجود دارد که باید ویرایش کنید، و همه این تغییرات باید در بلوک کد زیر انجام شوند (خطوط 11 تا 17 کد کامل)

if ($_GET['login'] == 'dummy_account') {

        // نام کاربری حساب برای ورود به
        $creds['user_login'] = 'ساختگی';

        // گذرواژه حساب برای استفاده
        $creds['user_password'] = 'pa55word';

در خط اول، بررسی شرطی پارامتر URL را مشاهده خواهید کرد. بلوک کد بالا بررسی می شود. wp-login.php?login=dummy_account

این مقادیر می توانند هر چیزی که شما می خواهید باشد، اما مراقب باشید که از پارامترهای اصلی وردپرس مانند “loggedout”، “action” و “redirect_to” اجتناب کنید. خط 4 جایی است که شما نام کاربری برای ورود به سیستم را مشخص می کنید. قطعه کد سفارشی شده سعی می کند به حساب “ساختگی” وارد شود. همانطور که احتمالاً می توانید حدس بزنید، خط 7 جایی است که رمز عبور را مشخص می کنید. رمز عبور فوق “pa55word” است. این مقادیر را پر کنید و شما باید آماده باشید!

افزونه ها

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

/*
نام افزونه: ورود خودکار
URI افزونه: http://hbt.io/
توضیحات: برای ورود سریع به حساب های عمومی، پیوندهای مناسب برای ورود خودکار ایجاد کنید. کد منبع را برای ایجاد تغییرات پیکربندی کنید.
نسخه: 1.0.0
نویسنده: هری بل توماس
URI نویسنده: http://hbt.io/
*/

// وارهای جهانی را اعلام کنید
جهانی $login_parameter, $accounts;

// پارامتری که باید بررسی شود
// به عنوان مثال. http://exmaple.com/wp-login.php?param_name=account
$login_parameter = "autologin";

// بلوک کد حساب
$accounts[] = آرایه(
				"user" => "دمو"،
				"pass" => "دمو"،
				"location" => "wp-admin",
			  )
// END BLOCK کد حساب

// ویرایش و تکرار بلوک کد برای هر تعداد حساب که نیاز است

// تکرار مثال دیگری
$accounts[] = آرایه(
				"user" => "tcwp",
				"pass" => "دمو"،
				"location" => "wp-admin/?tcwp-sent-me",
			  )


// برای جزئیات بیشتر در مورد این تابع به مثال قبلی مراجعه کنید
تابع autologin() {
	جهانی $login_parameter, $accounts;
	foreach ($accounts به عنوان $account) {
		if ($_GET[$login_parameter] == $account['user']) {
			$creds['user_login'] = حساب $['user'];
			$creds['user_password'] = $account['pass'];
			$creds['remember'] = true;
			$autologin_user = wp_signon( $creds, false );
			اگر (!is_wp_error($autologin_user)) 
				header('مکان: ' . $account['location']); 
		}
	}
}
add_action('after_setup_theme', 'autologin' );

در هسته آن، این اساساً یکسان است، اما با یک حلقه پیش پا افتاده به علاوه آرایه حساب‌ها نیز در آن قرار دارد. آناتومی تابع autologin() یکسان است، به جز اینکه کد آن برای هر حساب تکرار می شود (با استفاده از حلقه foreach). همه جزئیات مرتبط اکنون در آرایه جهانی ذخیره می شوند. مثال بالا برای 2 حساب تنظیم شده است، اما قطعه ما می تواند هر تعداد که ما نیاز داریم را در خود جای دهد. برای افزودن حساب‌های دیگر، به سادگی بلوک‌های کد زیر را سفارشی کرده و به تعداد مورد نیاز اضافه کنید.

// ACCOUNT CODE BLOCK
$accounts[] = آرایه(
				"user" => "یک حساب دیگر",
				"pass" => "public_password",
				"location" => "http://YouCanPutURLsHereToo.com/"،
			  )
// END BLOCK کد حساب

همچنین متوجه خواهید شد که من نام پارامتر را به یک متغیر سراسری نیز منتقل کرده ام: این کار ضروری نیست، اما من این کار را به سادگی برای حذف تمام مقادیر کدگذاری شده سخت از تابع autologin() انجام دادم.

نتیجه گیری

این قطعه فقط یک عملکرد ساده است که برای استفاده سبک طراحی شده است، مانند یک سایت نمایشی محصول، اما این پتانسیل را دارد که برای سناریوهای ورود به سیستم بسیار پیچیده تر استفاده شود. بقیه کد باید کاملاً توضیحی باشد، اما اگر سؤالی در مورد کاری که من انجام داده‌ام یا چرا آن را انجام داده‌ام دارید، فقط یک نظر در زیر بگذارید یا برای من توییت کنید. اگر بازخورد/پیشنهاد/ایده ای دارید در بخش نظرات زیر نظر بدهید!

خروج از نسخه موبایل