صفحه اصلی دندانپزشکی ثبت نام را در php بنویسید. سیستم ثبت نام کاربر ساده

ثبت نام را در php بنویسید. سیستم ثبت نام کاربر ساده

سلام! اکنون سعی می کنیم ساده ترین ثبت نام در سایت را با با استفاده از PHP+ MySQL. برای این کار باید آپاچی روی کامپیوتر شما نصب باشد. اصل کار اسکریپت ما در زیر نشان داده شده است.

1. بیایید با ایجاد جدول کاربران در پایگاه داده شروع کنیم. این شامل اطلاعات کاربر (ورودی و رمز عبور) خواهد بود. بیایید به phpmyadmin برویم (اگر در حال ایجاد یک پایگاه داده در رایانه شخصی خود هستید http://localhost/phpmyadmin/). ما یک جدول کاربران ایجاد می کنیم که دارای 3 فیلد خواهد بود.

من آن را در پایگاه داده mysql ایجاد می کنم، شما می توانید آن را در پایگاه داده دیگری ایجاد کنید. سپس مقادیر را مانند شکل تنظیم کنید:

2. اتصال به این جدول الزامی است.

بیایید یک فایل bd.php ایجاد کنیم. محتوای آن:

در مورد من به نظر می رسد این است:
bd.php را ذخیره کنید.

عالیه ما یک جدول در پایگاه داده و یک اتصال به آن داریم. اکنون می توانید شروع به ایجاد صفحه ای کنید که کاربران داده های خود را در آن جا بگذارند.



3. یک فایل reg.php با محتوا ایجاد کنید (همه نظرات داخل):


3. یک فایل reg.php با محتوا ایجاد کنید (همه نظرات داخل):


ثبت نام




ورود شما:








رمز عبور شما:

4. فایلی ایجاد کنید که داده ها را وارد پایگاه داده و ذخیره کاربر کند. save_user.php (نظرات در داخل):




5. اکنون کاربران ما می توانند ثبت نام کنند!


5. اکنون کاربران ما می توانند ثبت نام کنند!


ثبت نام


ورود شما:






در مرحله بعد، باید یک "در" برای کاربرانی که قبلا ثبت نام کرده اند ایجاد کنید تا وارد سایت شوند. index.php (نظرات در داخل):



صفحه اصلی

ثبت نام کنید

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

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

در 6 اکتبر 2016، دمیس پالما موضوعی را در Stack Exchange ایجاد کرد که در آن پرسید: در واقع، چرا در جوملا نسخه 3.6 دو روش برای ثبت نام کاربران با همان نام register() وجود دارد؟ اولین مورد در کنترلر UsersControllerRegistration و دومین مورد در کنترلر UsersControllerUser قرار دارد. Damis می خواست بداند که آیا متد UsersControllerUser::register در جایی استفاده شده است یا اینکه فقط یک نابهنگاری تکاملی باقی مانده از منطق قدیمی است. نگرانی او این بود که حتی اگر این روش توسط هیچ دیدگاهی مورد استفاده قرار نگیرد، می توان آن را با یک پرس و جوی ساخته شده فراخوانی کرد. که من پاسخی از یک توسعه دهنده با نام مستعار itoctopus دریافت کردم، که تایید کرد: مشکل واقعا وجود دارد. و گزارشی را برای توسعه دهندگان جوملا ارسال کرد.

سپس رویدادها با بیشترین سرعت توسعه یافتند. در 18 اکتبر، توسعه دهندگان جوملا گزارش Damis را پذیرفتند، که در آن زمان یک PoC تهیه کرده بود که اجازه ثبت نام کاربر را می داد. او یادداشتی را در وب سایت خود منتشر کرد، جایی که در طرح کلیدر مورد مشکلی که پیدا کرد و افکارش در این مورد صحبت کرد. بیرون آمدن در همان روز نسخه جدیدجوملا 3.6.3 که همچنان حاوی کدهای آسیب پذیر است.

پس از این، Davide Tampellini باگ را می چرخاند تا زمانی که ثبت نشود کاربر ساده، و مدیر. و در 21 اکتبر، یک مورد جدید به تیم امنیتی جوملا می رسد. قبلاً در مورد افزایش امتیازات صحبت می کند. در همان روز، اطلاعیه ای در وب سایت جوملا ظاهر می شود که در روز سه شنبه، 25 اکتبر، نسخه بعدی با شماره سریال 3.6.3 منتشر می شود که یک آسیب پذیری بحرانی در هسته سیستم را اصلاح می کند.

25 اکتبر Joomla Security Strike Team آخرین مشکل ایجاد شده توسط قطعه کد کشف شده توسط Damis را پیدا می کند. سپس یک commit به تاریخ 21 اکتبر با نام نامشخص Prepare 3.6.4 Stable Release به شعبه اصلی مخزن رسمی جوملا فرستاده می شود که این اشکال تاسف بار را برطرف می کند.

پس از انتشار این خبر، افراد زیادی علاقه مند به جامعه توسعه دهندگان می پیوندند - آنها شروع به ترویج آسیب پذیری و آماده سازی اکسپلویت می کنند.

در 27 اکتبر، محقق هری رابرتز یک اکسپلویت آماده را در مخزن Xiphos Research آپلود می کند که می تواند یک فایل PHP را روی سروری با CMS آسیب پذیر آپلود کند.

جزئیات

خوب، پس زمینه به پایان رسیده است، بیایید به جالب ترین بخش - تجزیه و تحلیل آسیب پذیری ها برویم. من جوملا 3.6.3 را به عنوان نسخه آزمایشی نصب کردم، بنابراین تمام شماره خطوط مربوط به این نسخه خواهد بود. و تمام مسیرهای فایل هایی که در زیر مشاهده خواهید کرد، نسبت به ریشه CMS نصب شده نشان داده می شوند.

به لطف کشف دامیس پالما، می دانیم که دو روش وجود دارد که ثبت نام کاربر را در سیستم انجام می دهد. اولین مورد توسط CMS استفاده می شود و در فایل /components/com_users/controllers/registration.php:108 قرار دارد. دومی (کسی که باید تماس بگیریم) در /components/com_users/controllers/user.php:293 زندگی می کند. بیایید نگاهی دقیق تر به آن بیندازیم.

286: /** 287: * روش ثبت نام کاربر. 288: * 289: * @return boolean 290: * 291: * @since 1.6 292: */ 293: public function register() 294: ( 295: JSession::checkToken("post") یا jexit(JText::_ ("JINVALID_TOKEN") . 315: $return = $model->validate($form, $317: // برای خطاها بررسی کنید: if ($return === false) 319: (... 345): ثبت نام را تمام کنید: $return = $model->register($data);

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

بیایید بفهمیم که در هنگام ثبت نام کاربر عادی چه اتفاقی می افتد: چه داده هایی ارسال می شوند و چگونه پردازش می شوند. اگر ثبت نام کاربر در تنظیمات فعال باشد، فرم را می توانید در http://joomla.local/index.php/component/users/?view=registration پیدا کنید.


درخواست ثبت نام کاربر قانونی مانند تصویر زیر است.


کامپوننت com_users مسئول کار با کاربران است. به پارامتر وظیفه در درخواست توجه کنید. فرمت $controller.$method را دارد. بیایید به ساختار فایل نگاه کنیم.

نام اسکریپت های موجود در پوشه کنترلرها با نام کنترل کننده های فراخوانی شده مطابقت دارد. از آنجایی که درخواست ما اکنون $controller = "registration" دارد، فایل register.php و متد register() آن فراخوانی می شود.

توجه، سوال: چگونه پردازش ثبت نام را به یک مکان آسیب پذیر در کد منتقل کنیم؟ احتمالاً قبلاً آن را حدس زده اید. نام متدهای آسیب پذیر و واقعی یکسان است (رجیستر)، بنابراین فقط باید نام کنترلر فراخوانی شده را تغییر دهیم. کنترل کننده آسیب پذیر ما در کجا قرار دارد؟ درست است، در فایل user.php. معلوم می شود $controller = "user" . با کنار هم گذاشتن همه چیز، task = user.register دریافت می کنیم. اکنون درخواست ثبت نام با روشی که ما نیاز داریم پردازش می شود.


دومین کاری که باید انجام دهیم این است که داده ها را با فرمت صحیح ارسال کنیم. اینجا همه چیز ساده است. ثبت نام قانونی () از ما آرایه ای به نام jform انتظار دارد که در آن داده های ثبت نام - نام، ورود به سیستم، رمز عبور، ایمیل را ارسال می کنیم (به اسکرین شات با درخواست مراجعه کنید).

  • /components/com_users/controllers/registration.php: 124: // داده های کاربر را دریافت کنید.

125: $requestData = $this->input->post->get("jform", array(), "array");

  • مشتری ما این داده ها را از آرایه ای به نام کاربر دریافت می کند.

/components/com_users/controllers/user.php: 301: // داده های فرم را دریافت کنید.

302: $data = $this->input->post->get("user", array(), "array");

  • بنابراین، نام تمام پارامترهای موجود در درخواست را از jfrom به user تغییر می دهیم.

گام سوم ما یافتن یک توکن معتبر CSRF است، زیرا بدون آن هیچ ثبت نامی وجود نخواهد داشت.


/components/com_users/controllers/user.php: 296: JSession::checkToken("post") یا jexit(JText::_("JINVALID_TOKEN"));

به نظر می رسد یک هش MD5 است و می توانید آن را برای مثال از فرم مجوز در سایت /index.php/component/users/?view=login بگیرید.

  • اکنون می توانید با استفاده از روش دلخواه کاربر ایجاد کنید. اگر همه چیز کار کرد، به شما تبریک می‌گوییم - شما فقط از آسیب‌پذیری CVE-2016-8870 "بررسی مجوز از دست رفته برای ثبت کاربران جدید" سوء استفاده کردید.

این چیزی است که در متد register() "کاری" از کنترلر UsersControllerRegistration به نظر می رسد:

  • /components/com_users/controllers/registration.php: 113: // اگر ثبت نام غیرفعال است - به صفحه ورود هدایت شوید.

114: if (JComponentHelper::getParams("com_users")->get("allowUserRegistration") == 0) 115: ( 116: $this->setRedirect(JRoute::_("index.php?option=com_users&view= ورود، نادرست))؛ 117: 118: بازگشت نادرست؛ 119: )

برای درک دومین مشکل بسیار جدی تر، اجازه دهید درخواستی را که ایجاد کرده ایم ارسال کنیم و ببینیم که چگونه در قسمت های مختلف کد اجرا می شود. در اینجا قطعه ای است که مسئول اعتبارسنجی داده های ارسالی کاربر در متد worker است:

ادامه فقط برای اعضا در دسترس است گزینه 1. برای خواندن همه مطالب در سایت به انجمن "سایت" بپیوندید

عضویت در انجمن در مدت زمان مشخص شده به شما امکان دسترسی به تمام مطالب هکرها را می دهد، تخفیف تجمعی شخصی شما را افزایش می دهد و به شما امکان می دهد امتیاز حرفه ای Xakep را جمع آوری کنید!

لاراول به Composer نیاز دارد تا وابستگی های پروژه را مدیریت کند. بنابراین قبل از نصب لاراول، مطمئن شوید که Composer را روی سیستم خود نصب کرده اید. اگر برای اولین بار در مورد Composer می شنوید، یک ابزار مدیریت وابستگی برای php شبیه به node npm است.

برای نصب Composer بر روی دستگاه خود، این پست را بررسی کنید:

نصب لاراول در ویندوز:

مراحل زیر را برای نصب لاراول روی دستگاه ویندوز دنبال کنید. مهم نیست که پشته xampp/wamp داشته باشید، برای هر دو کار می کند. در WAMP، مطمئن شوید که laravel را در پوشه "www" و در XAMPP، مشخصا "htdocs" نصب کنید.

مرحله 1) پوشه "htdocs" را در XAMPP باز کنید، کلید SHIFT را نگه دارید و روی پوشه کلیک راست کنید و "open command window here" را انتخاب کنید. از طرف دیگر، می توانید پنجره فرمان را باز کنید و دایرکتوری را به "xampp/htdocs" تغییر دهید.

STEP-2) دستور زیر را وارد کنید.

آهنگساز ایجاد-پروژه laravel/laravel my_laravel_site --prefer-dist

در اینجا "my_laravel_site" نام پوشه ای است که فایل های لاراول در آن نصب می شوند. این را به میل خود تغییر دهید.

مرحله-3) اکنون وقت آن است که صبور باشید زیرا نصب لاراول کمی طول می کشد.

مرحله 4) پس از نصب، دایرکتوری را به "my_laravel_site" (cd "my_laravel_site") در خط فرمان تغییر دهید و دستور زیر را وارد کنید.

خدمت صنعتگران پی اچ پی

STEP-5) این پیام چیزی شبیه "سرور توسعه لاراول شروع شد:" را همراه با یک آدرس نشان می دهد.

مرحله-6) آدرس اینترنتی را در مرورگر کپی و پیست کنید. اگر همه چیز درست پیش برود، صفحه خوش آمد گویی لاراول را خواهید دید.

مرحله-7) انجام شد! شما با موفقیت لاراول را روی دستگاه ویندوز نصب کرده اید و آماده کار هستید.

تنظیم کلید برنامه:

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

در صورتی که تنظیم نشده باشد، باید این کار را به صورت دستی انجام دهید. ابتدا مطمئن شوید که نام فایل ".env.example" را به ".env" در ریشه برنامه خود تغییر داده اید. سپس command prompt را باز کرده و به پوشه پروژه لاراول تغییر دهید. اکنون دستور زیر را اجرا کنید تا کلید تولید شود.

Php artisan key:generate

این کلید ایجاد شده را در متغیر APP_KEY در فایل ".env" کپی کنید. ذخیره کنید و کارتان تمام شد.

نصب نسخه خاص لاراول:

روش ارائه شده در بالا باعث می شود آهنگساز آخرین نسخه لاراول را دانلود و نصب کند. اگر می‌خواهید نسخه‌های قبلی لاراول را روی دستگاه خود نصب کنید، حتماً شماره نسخه مربوطه را در دستور create-project وارد کنید.

آهنگساز create-project laravel/laravel=5.4 your-project-name --prefer-dist همچنین بخوانید:

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

فرآیند ایجاد یک سیستم ثبت نام کار بسیار زیادی است. باید کدی بنویسید که اعتبار آدرس‌های ایمیل را دوبار بررسی کند، ایمیل‌های تأیید ارسال کند، توانایی بازیابی رمز عبور را ارائه دهد، رمزهای عبور را در آن ذخیره کند. مکان امن، فرم های ورودی بررسی شده و موارد دیگر. حتی وقتی همه این کارها را انجام می دهید، کاربران تمایلی به ثبت نام ندارند، زیرا حتی حداقل ثبت نام مستلزم فعالیت آنهاست.

در آموزش امروز، ما یک سیستم ثبت نام ساده را توسعه خواهیم داد که به هیچ رمز عبوری نیاز ندارد! نتایج سیستمی خواهد بود که به راحتی قابل تغییر یا ادغام در یک وب سایت PHP موجود است. اگر علاقه دارید، به خواندن ادامه دهید.

PHP

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

User.class.php

// نمونه ORM خصوصی
خصوصی $orm;

/**
* کاربر را با یک رشته رمز پیدا کنید. فقط توکن های معتبر وارد می شوند
* ملاحظه یک توکن به مدت 10 دقیقه پس از تولید معتبر است.
* @param string $token نشانه ای که باید جستجو شود
* @return کاربر
*/

تابع استاتیک عمومی findByToken($token)(

// آن را در پایگاه داده پیدا کنید و از درست بودن مهر زمانی مطمئن شوید


->where ("token"، $token)
->where_raw("token_validity > NOW()")
->find_one();

اگر(!$result)(
بازگشت نادرست؛
}

بازگشت کاربر جدید ($result);
}

/**
* یا وارد شوید یا یک کاربر ثبت نام کنید.
* @return کاربر
*/

تابع استاتیک عمومی loginOrRegister($email)(

// اگر چنین کاربری از قبل وجود دارد، آن را برگردانید

If(User::exists($email))(
بازگشت کاربر جدید ($email);
}

// در غیر این صورت آن را ایجاد کرده و برگردانید

بازگشت کاربر::create($email);
}

/**
* یک کاربر جدید ایجاد کنید و آن را در پایگاه داده ذخیره کنید
* @param string $email آدرس ایمیل کاربر
* @return کاربر
*/

ایجاد تابع استاتیک خصوصی ($email)(

// یک کاربر جدید به پایگاه داده بنویسید و آن را برگردانید

$result = ORM::for_table("reg_users")->create();
$result->email = $email;
$result->save();

بازگشت کاربر جدید ($result);
}

/**
* بررسی کنید که آیا چنین کاربری در پایگاه داده وجود دارد یا خیر و یک Boolean برگردانید.
* @param string $email آدرس ایمیل کاربر
* @return boolean
*/

تابع استاتیک عمومی وجود دارد ($email)(

// آیا کاربر در پایگاه داده وجود دارد؟
$result = ORM::for_table("reg_users")
->where ("email"، $email)
->count();

برگردان $result == 1;
}

/**
* یک شی کاربر جدید ایجاد کنید
* @param $param نمونه ORM، شناسه، ایمیل یا null
* @return کاربر
*/

تابع عمومی __construct($param = null)(

اگر ($param نمونه ORM)(

// یک نمونه ORM ارسال شد
$this->orm = $param;
}
else if(is_string($param))(

// یک ایمیل ارسال شد
$this->
->where("email"، $param)
->find_one();
}
دیگر(

If(is_numeric($param))(
// شناسه کاربری به عنوان پارامتر ارسال شد
$id = $param;
}
else if(isset($_SESSION["loginid"]))(

// شناسه کاربری ارسال نشد، به جلسه نگاه کنید
$id = $_SESSION["loginid"];
}

$this->orm = ORM::for_table("reg_users")
->where("id"، $id)
->find_one();
}

/**
* یک رمز ورود SHA1 جدید ایجاد می کند، آن را در پایگاه داده می نویسد و آن را برمی گرداند.
* رشته بازگشت @
*/

تابع عمومی generateToken())(
// یک نشانه برای کاربر وارد شده ایجاد کنید. آن را در پایگاه داده ذخیره کنید.

$token = sha1($this->email.time().rand(0, 1000000));

// توکن را در پایگاه داده ذخیره کنید،
// و آن را به عنوان معتبر فقط برای 10 دقیقه بعدی علامت بزنید

$this->orm->set("token", $token);
$this->orm->set_expr("token_validity", "ADDTIME(NOW(),"0:10")");
$this->orm->save();

بازگشت $token;
}

/**
*این کاربر را وارد کنید
* @return void
*/

ورود به تابع عمومی ()

// کاربر را به عنوان وارد شده علامت گذاری کنید
$_SESSION["loginid"] = $this->orm->id;

// فیلد last_login db را به روز کنید
$this->orm->set_expr("last_login", "NOW()");
$this->orm->save();
}

/**
* جلسه را از بین ببرید و کاربر را از سیستم خارج کنید.
* @return void
*/

خروج از تابع عمومی ()
$_SESSION = آرایه();
unset($_SESSION);
}

/**
* بررسی کنید که آیا کاربر وارد شده است یا خیر.
* @return boolean
*/

تابع عمومی logedIn())(
بازگشت isset($this->orm->id) && $_SESSION["loginid"] == $this->orm->id;
}

/**
* بررسی کنید که آیا کاربر مدیر است یا خیر
* @return boolean
*/

تابع عمومی isAdmin())(
return $this->rank() == "administrator";
}

/**
* نوع کاربر را پیدا کنید. می تواند ادمین یا معمولی باشد.
* رشته بازگشت @
*/

رتبه تابع عمومی()
if($this->orm->rank == 1)(
بازگشت "مدیر"؛
}

بازگشت به "عادی"؛
}

/**
* روش جادویی برای دسترسی به عناصر خصوصی
* نمونه $orm به عنوان ویژگی های شی کاربر
* @param string $key نام ویژگی مورد دسترسی
* @return مختلط
*/

تابع عمومی __get($key)(
if(isset($this->orm->$key))(
بازگشت $this->orm->$key;
}

برگرداندن null;
}
}
توکن ها با استفاده از یک الگوریتم تولید و در یک پایگاه داده ذخیره می شوند. ما از MySQL برای تنظیم ستون token_validity روی 10 دقیقه استفاده می کنیم. هنگام اعتبارسنجی یک توکن، به موتور می گوییم که به یک توکن نیاز داریم، قسمت token_validity هنوز منقضی نشده است. به این ترتیب مدت زمانی که توکن معتبر خواهد بود را محدود می کنیم.

توجه داشته باشید که ما از متد جادویی __get() در انتهای سند برای دسترسی به خصوصیات شی کاربر استفاده می کنیم. این به ما امکان می‌دهد به داده‌هایی که در پایگاه داده به‌عنوان ویژگی‌ها ذخیره می‌شوند دسترسی داشته باشیم: $user->email، $user->token. به عنوان مثال، بیایید ببینیم چگونه می توانیم از این کلاس در قطعه کد زیر استفاده کنیم:


فایل دیگری که قابلیت های لازم را ذخیره می کند functions.php است. در آنجا ما چند توابع کمکی داریم که به ما امکان می دهد بقیه کدها را مرتب نگه داریم.

Functions.php

تابع send_email($from، $to، $subject، $message)(

// تابع کمکی برای ارسال ایمیل

$headers = "MIME-نسخه: 1.0" . "\r\n"؛
$headers .= "Content-type: text/plain; charset=utf-8" . "\r\n"؛
$headers .= "از: ".$from . "\r\n"؛

ایمیل برگشتی ($to، $subject، $message، $headers);
}

تابع get_page_url())(

// آدرس یک فایل PHP را پیدا کنید

$url = "http".(خالی($_SERVER["HTTPS"])?"":"s")."://".$_SERVER["SERVER_NAME"];

If(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")(
$url.= $_SERVER["REQUEST_URI"];
}
دیگر(
$url.= $_SERVER["PATH_INFO"];
}

بازگشت $url;
}

تابع rate_limit($ip، $limit_hour = 20، $limit_10_min = 10)(

// تعداد تلاش برای ورود به سیستم در یک ساعت گذشته توسط این آدرس IP

$count_hour = ORM::for_table ("reg_login_attempt")
->
->where_raw("ts > SUBTIME(NOW()،"1:00")")
->count();

// تعداد تلاش برای ورود به سیستم در 10 دقیقه گذشته توسط این آدرس IP

$count_10_min = ORM::for_table ("reg_login_attempt")
->where("ip"، sprintf("%u"، ip2long($ip)))
->where_raw("ts > SUBTIME(NOW()،"0:10")")
->count();

If($count_hour > $limit_hour || $count_10_min > $limit_10_min)(
پرتاب جدید استثنا ("تلاش های زیادی برای ورود به سیستم!")؛
}
}

تابع rate_limit_tick ($ip، $email)(

// یک رکورد جدید در جدول تلاش برای ورود ایجاد کنید

$login_attempt = ORM::for_table("reg_login_attempt")->create();

$login_attempt->email = $email;
$login_attempt->ip = sprintf("%u", ip2long($ip));

$login_attempt->save();
}

تغییر مسیر تابع ($url)(
header("مکان: $url");
خروج؛
}
توابع rate_limit و rate_limit_tick به ما این امکان را می‌دهند که تعداد تلاش‌های مجوز را برای یک دوره زمانی مشخص محدود کنیم. تلاش‌های مجوز در پایگاه داده reg_login_attempt ثبت می‌شوند. همانطور که در قطعه کد زیر مشاهده می کنید، این توابع زمانی فعال می شوند که فرم ورود تایید شود.

کد زیر از index.php گرفته شده است و مسئول اعتبار سنجی فرم ورود است. پاسخ JSON را برمی‌گرداند که توسط کد jQuery که در assets/js/script.js دیدیم هدایت می‌شود.

index.php

If(! خالی ($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))(

// خروجی هدر JSON

Header ("نوع محتوا: application/json");

// آیا آدرس ایمیل معتبر است؟

If(!isset($_POST["ایمیل"]) || !filter_var($_POST["ایمیل"]، FILTER_VALIDATE_EMAIL))(
پرتاب جدید استثنا ("لطفا یک ایمیل معتبر وارد کنید.");
}

// اگر فرد بالا باشد، این یک استثنا ایجاد می کند
// محدودیت های مجاز تلاش برای ورود به سیستم (برای اطلاعات بیشتر به functions.php مراجعه کنید):
rate_limit($_SERVER["REMOTE_ADDR"]);

// این تلاش برای ورود را ضبط کنید
rate_limit_tick($_SERVER["REMOTE_ADDR"]، $_POST["ایمیل"]);

// پیام را برای کاربر ارسال کنید

$message = "";
$email = $_POST["ایمیل"];
$subject = "لینک ورود شما";

If(!User::exists($email))(
$subject = "با تشکر از شما برای ثبت نام!";
$message = "از اینکه در سایت ما ثبت نام کردید متشکریم!\n\n";
}

// تلاش برای ورود یا ثبت نام شخص
$user = کاربر::loginOrRegister($_POST["ایمیل"]);

$message.= "شما می توانید از این URL وارد شوید:\n";
$message.= get_page_url()."?tkn=".$user->generateToken()."\n\n";

$message.= "پیوند به طور خودکار پس از 10 دقیقه منقضی می شود.";

$result = send_email($fromEmail، $_POST["email"]، $subject، $message);

اگر(!$result)(
throw new Exception("خطایی در ارسال ایمیل شما وجود داشت. لطفا دوباره امتحان کنید.");
}

Die(json_encode(array(
"message" => "متشکرم! ما یک پیوند به صندوق ورودی شما ارسال کردیم. پوشه اسپم خود را نیز بررسی کنید."
)));
}
}
catch(Exception $e)(

Die(json_encode(array(
"error"=>1،
"message" => $e->getMessage()
)));
}
پس از تایید یا ثبت نام موفقیت آمیز، کد فوق یک ایمیل با یک لینک برای مجوز برای شخص ارسال می کند. این توکن به دلیل URL تولید شده به عنوان متغیر $_GET "tkn" در دسترس است.

index.php

If(isset($_GET["tkn"]))(

// آیا این یک رمز ورود معتبر است؟
$user = کاربر::findByToken($_GET["tkn"]);

// بله! کاربر را وارد کنید و به صفحه محافظت شده هدایت شوید.

$user->login();
redirect("protected.php");
}

// نشانه نامعتبر است. به فرم ورود به سیستم هدایت شوید.
تغییر مسیر ("index.php");
}
اجرای $user->login() متغیرهای جلسه لازم را ایجاد می کند و به کاربر اجازه می دهد در لاگین های بعدی وارد سیستم شود.

خروج از سیستم تقریباً به همین روش اجرا می شود:

Index.php

If(isset($_GET["logout"]))(

$user = کاربر جدید();

If($user->loggedIn())(
$user->logout();
}

تغییر مسیر ("index.php");
}
در پایان کد، کاربر را دوباره به index.php هدایت می کنیم، بنابراین پارامتر ?logout=1 در URL حذف می شود.

فایل index.php ما نیز به محافظت نیاز دارد - ما نمی‌خواهیم کاربرانی که قبلاً وارد شده‌اند فرم را ببینند. برای انجام این کار از متد $user->loggedIn() استفاده می کنیم:

Index.php

$user = کاربر جدید();

if($user->loggedIn())(
redirect("protected.php");
}
در نهایت، بیایید ببینیم چگونه می‌توانید از صفحه وب‌سایت خود محافظت کنید و آن را تنها پس از مجوز در دسترس قرار دهید:

محافظت شده.php

// برای محافظت از هر صفحه php در سایت خود، main.php را وارد کنید
// و یک شی User جدید ایجاد کنید. به همین سادگی است!

require_once "includes/main.php";

$user = کاربر جدید();

if(!$user->loggedIn())(
تغییر مسیر ("index.php");
}
پس از این بررسی، می توانید مطمئن شوید که کاربر با موفقیت وارد شده است. همچنین به داده هایی دسترسی خواهید داشت که در پایگاه داده به عنوان ویژگی های شی $user ذخیره می شوند. برای نمایش ایمیل کاربر و رتبه آنها از کد زیر استفاده کنید:

Echo "ایمیل شما: ".$user->email;
echo "رتبه شما: ".$user->rank();
در اینجا rank() متد است زیرا ستون رتبه در پایگاه داده معمولاً شامل اعداد (0 برای کاربران عادی و 1 برای مدیران) است و ما باید همه اینها را به نام رتبه تبدیل کنیم که با استفاده از پیاده سازی انجام می شود. این روش. برای تبدیل یک کاربر استاندارد به مدیر، به سادگی ورودی کاربر را در phpmyadmin (یا هر برنامه پایگاه داده دیگری) ویرایش کنید. به عنوان یک مدیر، کاربر هیچ حقی نخواهد داشت ویژگی های خاص. شما خودتان این حق را دارید که انتخاب کنید چه حقوقی به مدیران اعطا کنید.

آماده!

با این کار، سیستم ثبت نام ساده ما آماده است! می توانید از آن در یک سایت PHP موجود استفاده کنید، یا آن را مطابق با نیازهای خود مدرن سازی کنید.

Reg.ru: دامنه و هاست

بزرگترین ثبت کننده و ارائه دهنده میزبانی در روسیه.

بیش از 2 میلیون نام دامنه در حال خدمت است.

تبلیغات، ایمیل دامنه، راه حل های تجاری.

بیش از 700 هزار مشتری در سراسر جهان قبلاً انتخاب خود را انجام داده اند.

* ماوس را روی پیمایش مکث کنید.

عقب به جلو

ایجاد یک سیستم ساده ثبت نام کاربر در PHP و MySQL

ایجاد یک سیستم ثبت نام کار بسیار زیادی است. شما باید کدی را بنویسید که آدرس های ایمیل را تأیید می کند، یک ایمیل تأیید کننده ثبت نام ارسال می کند، و همچنین سایر فیلدهای فرم را تأیید می کند و موارد دیگر.

و حتی پس از نوشتن همه اینها، کاربران تمایلی به ثبت نام ندارند، زیرا ... این مستلزم تلاشی از جانب آنها است.

در این آموزش، ما یک سیستم ثبت نام بسیار ساده ایجاد می کنیم که به هیچ وجه نیازی به رمز عبور یا ذخیره آن ندارد! نتیجه تغییر و افزودن به یک سایت PHP موجود آسان خواهد بود. می خواهید بدانید چگونه کار می کند؟ زیر را بخوانید.



در اینجا نحوه عملکرد سیستم فوق العاده ساده ما آمده است:

ما فرم مجوز و ثبت نام را ترکیب خواهیم کرد. این فرم دارای یک فیلد برای وارد کردن آدرس ایمیل شما و یک دکمه ثبت نام است.
- هنگام پر کردن فیلد با آدرس ایمیل، با کلیک بر روی دکمه ثبت نام، یک رکورد در مورد یک کاربر جدید ایجاد می شود، اما به شرطی که آدرس ایمیل وارد شده در پایگاه داده پیدا نشود.

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

مزایای این روش:

نیازی به ذخیره رمزهای عبور یا تأیید فیلدها نیست.
- نیازی به بازیابی رمز عبور، سوالات امنیتی و غیره نیست.
- از لحظه ای که کاربر ثبت نام / وارد می شود، همیشه می توانید مطمئن باشید که این کاربر در منطقه دسترسی شما خواهد بود (آدرس ایمیل درست است).
- فرآیند ثبت نام بسیار ساده

ایرادات:

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

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

بنابراین پیشنهاد می شود از آن برای ثبت نام در انجمن ها و خدماتی که با اطلاعات مهم کار نمی کنند استفاده کنید.

نحوه استفاده از این سیستم

در صورتی که فقط نیاز به استفاده از یک سیستم برای مجوز دادن به کاربران در سایت خود دارید، و نمی خواهید این درس را جدا کنید، در اینجا باید کاری انجام دهید:

شما باید منابع ضمیمه درس را دانلود کنید
- فایل tables.sql را در بایگانی پیدا کنید. راه جایگزین: این فایل را از طریق باز کنید ویرایشگر متنپرس و جوی SQL را کپی کرده و اجرا کنید.
- include/main.php را باز کرده و تنظیمات ارتباط با دیتابیس خود را پر کنید ( یوزر و پسورد اتصال با دیتابیس و همچنین هاست و نام دیتابیس را مشخص کنید). در همین فایل باید ایمیل را نیز مشخص کنید که به عنوان آدرس اصلی پیام های ارسالی سیستم استفاده می شود. برخی از میزبان‌ها ایمیل‌های خروجی را مسدود می‌کنند مگر اینکه فرم حاوی یک آدرس ایمیل واقعی باشد که از کنترل پنل میزبان ایجاد شده است، بنابراین یک آدرس واقعی ارائه دهید.
- تمام فایل‌ها و دارایی‌های index.php، protected.php و شامل پوشه‌ها از طریق FTP در هاست خود آپلود کنید.
- کد زیر را به هر صفحه PHP که می خواهید فرم ورود به سیستم را نمایش دهید اضافه کنید.

Require_once "includes/main.php"; $user = کاربر جدید(); if(!$user->loggedIn())( redirect("index.php"); )
- آماده!

برای کسانی که علاقه مند به نحوه عملکرد آن هستند، در زیر بخوانید!

اولین قدم نوشتن کد HTM برای فرم مجوز است. این کد در فایل index.php قرار دارد. این فایل همچنین حاوی کد PHP است که داده‌های فرم و سایر عملکردهای مفید سیستم ورود را مدیریت می‌کند. می‌توانید در بخش زیر که به بررسی کد PHP اختصاص دارد، بیشتر در این مورد بیاموزید.

index.php

آموزش: سیستم ثبت نام فوق العاده ساده با PHP و MySQL ورود یا ثبت نام

آدرس ایمیل خود را در بالا وارد کنید و ما ارسال خواهیم کرد
شما یک لینک ورود

ورود/ثبت نام

در قسمت head (بین تگ‌ها و) استایل‌های اصلی را قرار دادم (در این آموزش به آن‌ها پرداخته نمی‌شود، بنابراین می‌توانید خودتان به آنها نگاه کنید. Folder assets/css/style.css). قبل از تگ بسته شدن، کتابخانه jQuery و فایل script.js را قرار دادم که در زیر می نویسیم و آنالیز می کنیم.


جاوا اسکریپت

jQuery وضعیت دکمه "ثبت نام/ورود" را با استفاده از تابع ردیابی می کند e.preventDefault()و درخواست های AJAX را ارسال می کند. بسته به پاسخ سرور، این یا آن پیام را نمایش می دهد و تعیین می کند اقدامات بعدی/

assets/js/script.js

$(function())( var form = $("#login-register"); form.on("submit"، function(e)( if(form.is(".loading, .loggedIn"))( بازگشت False ; خطا ) $(document).ajaxStart(function())(form.addClass("loading"); )); ;

برای نمایش به فرم اضافه شده است وضعیت فعلیدرخواست AJAX (این به لطف روش ها امکان پذیر شد ajaxStart()) و ajaxComplete()، که در انتهای فایل می توانید پیدا کنید).

این کلاس یک فایل گیف متحرک در حال چرخش را نمایش می دهد (انگار به ما اشاره می کند که درخواست در حال پردازش است)، و همچنین به عنوان یک پرچم برای جلوگیری از ارسال مجدد فرم (زمانی که دکمه ثبت نام قبلا یک بار کلیک شده باشد) عمل می کند. کلاس LoggedIn. پرچم دیگری است - زمانی که ایمیل ارسال شد تنظیم می شود. این پرچم بلافاصله هر گونه اقدام بعدی را با فرم مسدود می کند.

طرحواره پایگاه داده

سیستم ثبت فوق العاده ساده ما از 2 جدول MySQL استفاده می کند (کد SQL در فایل tables.sql است). اولی اطلاعات مربوط به حساب های کاربری را ذخیره می کند. دومی اطلاعات مربوط به تعداد تلاش برای ورود را ذخیره می کند.


طرح جدول کاربر.

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


طرح جدولی که تعداد تلاش‌های مجوز را شمارش می‌کند.

در هر دو جدول، آدرس IP به شکل پردازش شده با استفاده از تابع ip2long در یک فیلد از نوع عدد صحیح ذخیره می شود.

حالا می توانیم مقداری کد PHP بنویسیم. عملکرد اصلی سیستم به کلاس User.class.php اختصاص داده شده است که در زیر مشاهده می کنید.

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

User.class.php

Class User(// Private ORM case private $orm; /** * یافتن کاربر بر اساس نشانه. فقط نشانه های معتبر برای بررسی پذیرفته می شوند. نشانه فقط به مدت 10 دقیقه از لحظه ایجاد آن ایجاد می شود * @param string $token این علامتی است که ما به دنبال آن هستیم * @return User مقدار تابع استاتیک را برگردانید */ عمومی استاتیک findByToken($token)( // رمز را در پایگاه داده پیدا کنید و مطمئن شوید که مهر زمانی صحیح تنظیم شده است. result = ORM::for_table("reg_users") ->where ("token", $token) ->where_raw("token_validity > NOW()") ->find_one(!$result)( return false; ) برگرداندن کاربر جدید ($result) /** * مجوز یا ثبت نام یک کاربر * @param آدرس ایمیل کاربر * @return User */ Public Static loginOrRegister($email)( // اگر چنین کاربری وجود دارد. از قبل موجود است، مقدار تابع User را از آدرس ایمیل مشخص شده ذخیره شده در پایگاه داده برگردانید if(User::exists($email))( return new User($email); ) // در غیر این صورت، یک کاربر جدید در پایگاه داده و مقدار تابع User::create را از ایمیل مشخص شده بازگردانید User::create($email );

توکن ها با استفاده از الگوریتم SHA1 تولید و در پایگاه داده ذخیره می شوند. من از توابع زمان بندی MySQL برای تعیین یک محدودیت زمانی 10 دقیقه ای برای اعتبار یک توکن استفاده می کنم.

هنگامی که یک توکن اعتبارسنجی می شود، مستقیماً به کنترل کننده می گوییم که فقط نشانه هایی را در نظر می گیریم که هنوز منقضی نشده اند و در ستون token_validity ذخیره شده اند.

لطفا توجه داشته باشید که من از روش جادویی استفاده می کنم __دریافتکتابخانه docs در انتهای فایل برای جلوگیری از دسترسی به خصوصیات شی User.

به لطف این، دسترسی به اطلاعات ذخیره شده در پایگاه داده به لطف ویژگی های $user->email، $user->token و غیره امکان پذیر می شود. در قسمت کد بعدی، نحوه استفاده از این کلاس ها را به عنوان مثال بررسی خواهیم کرد. .


صفحه محافظت شده

فایل دیگری که قابلیت های مفید و ضروری را ذخیره می کند فایل functions.php است. چندین توابع به اصطلاح کمک کننده - دستیار وجود دارد که به شما امکان می دهد کدهای تمیزتر و خواناتر را در فایل های دیگر ایجاد کنید.

functions.php

تابع send_email($from، $to، $subject، $message)( // راهنمای ارسال ایمیل $headers = "MIME-Version: 1.0". "\r\n"; $headers .= "نوع محتوا: متن /plain; charset=utf-8." ) تابع get_page_url())( // URL فایل PHP را تعیین کنید $url = "http".(empty($_SERVER["HTTPS"])?"":"s")."://".$ _SERVER ["SERVER_NAME"]; if(isset($_SERVER["REQUEST_URI"] && $_SERVER["REQUEST_URI"] != "")($url.= $_SERVER["REQUEST_URI"]; ) else($url = $_SERVER["PATH_INFO"] ) $url تابع rate_limit ($ip, $limit_hour = 20, $limit_10_min = 10) ( // تعداد تلاش برای ورود به سیستم در آخرین ساعت برای این آدرس IP . : :for_table("reg_login_attempt") ->where("ip"، sprintf("%u"، ip2long($ip))) ->where_raw("ts > SUBTIME(NOW()،"1:00")" ) -> count( // تعداد تلاش برای ورود به سیستم در 10 دقیقه گذشته برای این آدرس IP $count_10_min = ORM::for_table("reg_login_attempt") ->where("ip", sprintf("%u", ip2long ($ ip))) ->where_raw("ts > SUBTIME(NOW(),"0:10")") ->count();

if($count_hour > $limit_hour || $count_10_min > $limit_10_min)( throw new Exception("تعداد زیادی برای ورود به سیستم!"); ) ) function rate_limit_tick($ip, $email)( // ایجاد یک رکورد جدید در جدول که تعداد تلاش‌های ورود به سیستم را می‌شمرد $login_attempt = ORM::for_table("reg_login_attempt")->create($login_attempt->email = $login_attempt->ip = sprintf("%u", ip2long($ip; )؛ تابع $login_attempt->save( ) redirect($url)( header("Location: $url"); exit;) توابعنرخ_حد و rate_limit_tick

نظارت بر تعداد تلاش های مجوز در طول مدت زمان سپری شده از اولین تلاش. تلاش برای ورود در پایگاه داده در ستون reg_login_attempt ثبت می شود. این توابع زمانی فراخوانی می شوند که داده های فرم پردازش و ارسال شوند همانطور که در قطعه کد زیر مشاهده می کنید.

index.php

Try( if(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))(// خروجی سرصفحه JSON ("Content-type: application/json"); // آیا این آدرس ایمیل معتبر است اگر (!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))(exception new ("لطفا یک ایمیل معتبر وارد کنید.")) // بررسی کنید کاربر اجازه ورود به سیستم را دارد، آیا از تعداد اتصالات مجاز فراتر رفته است (فایل functions.php برای اطلاعات بیشتر) rate_limit($_SERVER["REMOTE_ADDR"] // ضبط این مجوز rate_limit_tick($_SERVER["REMOTE_ADDR"] , $ _POST["email"] // ارسال یک ایمیل به کاربر $message = ""; با تشکر از شما برای ثبت نام!"؛ $message = "از اینکه در سایت ما ثبت نام کردید متشکریم!\n\n"؛ ) // تلاش برای مجوز دادن یا ثبت نام کاربر $user = کاربر::loginOrRegister($_POST[ "email"] $message.= "شما می توانید از این آدرس وارد شوید:\n";

$message.= get_page_url()."?tkn=".$user->generateToken()."\n\n"; $message.= "پیوند به طور خودکار پس از 10 دقیقه منقضی می شود.";$result = send_email($fromEmail، $_POST["email"]، $subject، $message);

index.php

if(!$result)( throw new Exception("خطایی در ارسال ایمیل شما وجود داشت. لطفا دوباره امتحان کنید."); ) die(json_encode(array("message" => "متشکرم! ما یک پیوند ارسال کردیم. پوشه هرزنامه خود را نیز بررسی کنید.")))) ) catch(Exception $e)( die(json_encode(array("error"=>1, "message" => $e->getMessage() ))))

پس از ورود/ثبت نام موفقیت آمیز، کد بالا یک لینک ورود برای کاربر ارسال می کند. رمز در دسترس می شود زیرا به عنوان یک متغیر در لینک تولید شده توسط متد ارسال می شود

$_GET

با نشانگر tkn

index.php

If(isset($_GET["tkn"]))( // آیا این نشانه برای مجوز معتبر است؟ $user = کاربر::findByToken($_GET["tkn"]); if($user)( // بله، است. تغییر مسیر به صفحه محافظت شده $user->login("protected.php"); )")

در پایان کد، من دوباره یک تغییر مسیر به index.php تنظیم کردم، بنابراین پارامتر ?logout=1ارسال از طریق URL لازم نیست.

فایل index.php ما به موارد اضافی نیاز دارد. حفاظت - ما نمی خواهیم افرادی که وارد سیستم شده اند دوباره فرم ثبت نام را ببینند. برای این منظور از روش استفاده می کنیم $user->loggedIn().

index.php

$user = کاربر جدید(); if($user->loggedIn())( redirect("protected.php"); )

در نهایت، در اینجا یک قطعه کد وجود دارد که به شما امکان می دهد از صفحات سایت خود محافظت کنید و فقط پس از مجوز در دسترس قرار دهید.

محافظت شده.php

// برای محافظت از هر صفحه در سایت خود، یک فایل main.php // قرار دهید و یک شی User جدید ایجاد کنید. به همین راحتی! require_once "includes/main.php"; $user = کاربر جدید(); if(!$user->loggedIn())( redirect("index.php"); )

پس از این بررسی، می توانید مطمئن شوید که کاربر با موفقیت مجاز شده است. همچنین می توانید با استفاده از ویژگی های شیء به اطلاعات ذخیره شده در پایگاه داده دسترسی داشته باشید $user. برای نمایش ایمیل و وضعیت کاربر از این کد استفاده کنید:

Echo "ایمیل شما: ".$user->email; echo "رتبه شما: ".$user->rank();

روش رتبه ()در اینجا استفاده می شود زیرا پایگاه داده معمولاً اعداد را ذخیره می کند (0 برای یک کاربر معمولی، 1 برای یک مدیر) و ما باید این داده ها را به وضعیت های مربوط به آنها تبدیل کنیم، که این روش به ما کمک می کند.

برای اینکه یک کاربر معمولی را به عنوان مدیر تبدیل کنید، کافی است ورودی کاربر را از طریق phpMyAdmin (یا هر برنامه دیگری که به شما امکان مدیریت پایگاه داده ها را می دهد) ویرایش کنید. در این مثال، وضعیت مدیر هیچ امتیازی نمی دهد، صفحه نشان می دهد که شما یک مدیر هستید - و بس.

اما اینکه چه کاری باید با این کار انجام دهید به اختیار شما واگذار شده است.

ما تمام شدیم!

کار ما با این شکل فوق العاده شبه ساده تمام شد! شما می توانید از آن در سایت های PHP خود استفاده کنید، بسیار ساده است. شما همچنین می توانید آن را برای خود تغییر دهید و آن را آنطور که می خواهید بسازید.

مطالب توسط Denis Malyshok به طور خاص برای وب سایت تهیه شده است

P.S.

آیا می خواهید در تسلط بر PHP و OOP بیشتر حرکت کنید؟ به درس های برتر در جنبه های مختلف ساخت وب سایت، از جمله برنامه نویسی در PHP، و همچنین یک دوره رایگان برای ایجاد سیستم CMS خود در PHP از ابتدا با استفاده از OOP توجه کنید:
آیا مطالب را دوست داشتید و می خواهید از من تشکر کنید؟




جدید در سایت

>

محبوب ترین