نوشتن ثبت نام به پی اچ پی ایجاد یک سیستم ثبت نام کاربر ساده برای PHP و MySQL
به منظور تقسیم بازدیدکنندگان سایت به برخی گروه ها در سایت، مطمئن شوید که یک سیستم کوچک ایجاد کنید ثبت نام با پی اچ پی. بنابراین، شما به طور معمول بازدیدکنندگان را به دو گروه از بازدیدکنندگان تصادفی تقسیم می کنید و به یک گروه دیگر از کاربران که اطلاعات ارزشمند بیشتری را صادر می کنند، تقسیم می شوند.
در اغلب موارد، از یک سیستم ثبت نام ساده تر استفاده کنید که در یک فایل در پی اچ پی نوشته شده است. register.php.
بنابراین، ما کمی پریشان بودیم، و در حال حاضر فایل ثبت نام را در جزئیات بیشتر در نظر می گیریم.
ثبت نام فایل .php.
برای اینکه شما توده ای را از دست ندهید، یک سیستم ایجاد کنید که کاربران را جمع آوری می کند، حداقل اطلاعات تماس را از آنها دریافت می کند. در این مورد، هر کس به پایگاه داده MySQL ارسال می شود. برای بالاترین سرعت پایه، ما یک جدول کاربران را در فرمت MyISAM و در کدگذاری UTF-8 ایجاد خواهیم کرد.
توجه داشته باشید! شما باید تمام اسکریپت ها را در یک کدگذاری بنویسید. تمام فایل های سایت و پایگاه داده MySQL باید در یک رمزگذاری واحد باشند. رایج ترین کد های UTF-8 و Windows-1251.
برای آنچه شما نیاز دارید همه چیز را در یک کدگذاری بنویسید، بعدا به نحوی صحبت خواهیم کرد. در عین حال، این اطلاعات را به عنوان سخت ترین قانون ایجاد اسکریپت ها، در غیر این صورت مشکلی با کار اسکریپت ها وجود خواهد داشت. البته هیچ چیز وحشتناک نیست، اما به سادگی وزن زمان را برای پیدا کردن اشتباهات در اسکریپت از دست ندهید.
چگونه اسکریپت کار می کند؟
ما می خواهیم همه چیز را ساده کنیم و نتیجه ای سریع دریافت کنیم. بنابراین، ما از کاربران فقط ورود به سیستم، ایمیل و رمز عبور خود را دریافت خواهیم کرد. و برای محافظت در برابر روبات های اسپم، یک CAPTCHA کوچک را نصب کنید. در غیر این صورت، هر پسر از لندن یک ربات کوچک ربات را می نویسد که در عرض چند دقیقه تمام پایه را با کاربران آهک پر می کند و در نابغه و مجازات خود شادی خواهد کرد.
در اینجا خود اسکریپت است. همه چیز در یک فایل نوشته شده است. register.php:
!
`؛ // سوال قرمز علامت $ sha \u003d $ s. "scripts / pro /"؛ // مسیر به پوشه اصلی $ bg \u003d `bgcolor \u003d" # e1ffeb "`؛ // خطوط رنگ پس زمینه؟\u003e مثال از ثبت نام اسکریپت ثبت نام register.php style.css "/\u003e
در این مورد، اسکریپت به خودم تجدید نظر می کند. و یک فرم و دستیابی اطلاعات ثبت شده است. من توجه شما را جلب می کنم که فایل توسط بایگانی ZIP فشرده شده است و شامل فایل پیکربندی Config.php، فایل تخلیه پایگاه داده کاربر، فایل حاوی توابع کمکی functions.php، سبک فایل style.css و فایل register.php خودت. همچنین، چندین فایل که مسئول کار و تولید کاراکترهای محدود هستند.
reg.ru: دامنه ها و میزبانی
بزرگترین ضبط کننده و ارائه دهنده خدمات میزبانی در روسیه.
بیش از 2 میلیون نام دامنه برای تعمیر و نگهداری.
ارتقاء، ایمیل برای دامنه، راه حل های کسب و کار.
بیش از 700 هزار مشتری در سراسر جهان قبلا انتخاب خود را انجام داده اند.
* ماوس را به حالت تعلیق در نظر بگیرید.
برگشت به جلو
ایجاد یک سیستم ثبت نام کاربر ساده برای PHP و MySQL
ایجاد یک سیستم ثبت نام یک کار بزرگ است. شما باید یک کد را بنویسید که آدرس های ایمیل را اجرا می کند، پیام را به تایید ایمیل ارسال می کند و همچنین اعتبار سنجی زمینه های باقی مانده را انجام می دهد و خیلی بیشتر.
و حتی پس از اینکه همه اینها را بنویسید، کاربران با اکراه ثبت نام خواهند کرد، زیرا این نیاز به تلاش های خاصی در مورد آنها دارد.
در این درس، ما یک سیستم ثبت نام بسیار ساده ایجاد خواهیم کرد که نیازی به آن ندارد و کلمه عبور را به طور کلی ذخیره نمی کند! نتیجه تغییر آسان خواهد بود و به یک سایت PHP موجود اضافه کنید. آیا می خواهید بدانید چگونه کار می کند؟ زیر را بخوان.
در اینجا این است که چگونه سیستم فوق العاده ساده ما کار خواهد کرد:
ما فرم مجوز و ثبت نام را ترکیب می کنیم. در این فرم یک فیلد برای ورود به آدرس ایمیل و یک دکمه ثبت نام وجود دارد؛ - هنگام پر کردن فیلد آدرس ایمیل، یک کاربر جدید با کلیک بر روی دکمه ثبت نام ایجاد می شود، اما تنها اگر آدرس ایمیل وارد شده در پایگاه داده یافت نشد.
پس از آن، یک مجموعه منحصر به فرد منحصر به فرد از شخصیت ها (نشانه) ایجاد شده است، که به کاربر مشخص شده توسط کاربر به صورت مرجع ارسال می شود که در عرض 10 دقیقه مرتبط خواهد بود؛ - توسط لینک، کاربر به سایت ما می رود. این سیستم حضور یک نشانه را تعیین می کند و کاربر را مجاز می کند؛
مزایای این روش:
بدون نیاز به ذخیره کلمه عبور و انجام اعتبار میدان؛ - نیازی به بازگرداندن رمز عبور، سوالات مخفی و غیره وجود ندارد. - از لحظه ای که کاربر ثبت نام کرده / مجاز شما همیشه می توانید مطمئن باشید که این کاربر در منطقه دسترسی شما خواهد بود (که آدرس ایمیل درست است)؛ - روند ثبت نام فوق العاده ساده؛
معایب:
امنیت حساب کاربری اگر کسی به ایمیل دسترسی داشته باشد، می تواند وارد سیستم شود. - ایمیل محافظت نشده است و می تواند متوقف شود. به یاد داشته باشید که این سوال مربوطه و در مورد زمانی که رمز عبور فراموش شده است و باید بازسازی شود، یا در هر سیستم مجوز که از HTTPS برای انتقال داده استفاده نمی کند (ورود / رمز عبور)؛ - در حالی که شما پیکربندی کنید که چگونه به سرور ایمیل نیاز دارید، احتمال وجود دارد که پیام هایی با لینک ها به مجوز در هرزنامه باشد؛
با مقایسه مزایا و معایب سیستم ما، می توان گفت که سیستم دارای Yuzability بالا (مناسب ترین برای کاربر نهایی) است و در عین حال دارای یک شاخص امنیتی کم است.
بنابراین استفاده از آن برای ثبت نام در انجمن ها و خدمات ارائه شده است که با اطلاعات مهم کار نمی کنند.
نحوه استفاده از این سیستم
در مورد زمانی که شما فقط نیاز به استفاده از سیستم برای اجازه کاربران در سایت خود، و شما نمی خواهید به جدا کردن این درس در استخوان، این چیزی است که شما باید انجام دهید:
شما نیاز به دانلود منابع متصل به درس دارید - پیدا کردن فایل در بایگانی tables.sql آن را به پایگاه داده خود وارد کنید با استفاده از گزینه واردات در phpmyadmin. راه جایگزین: این فایل را از طریق یک ویرایشگر متن باز کنید، پرس و جو SQL را کپی کنید و آن را اجرا کنید؛ - باز کن شامل / main.php. و تنظیمات ارتباطی را با پایگاه داده خود پر کنید (یک کاربر و رمز عبور را برای برقراری ارتباط با پایه و همچنین میزبان و نام پایه مشخص کنید). در همان فایل، شما همچنین باید ایمیل را مشخص کنید، که به عنوان آدرس اصلی برای پیام های ارسال شده توسط سیستم استفاده می شود. برخی از میزبان ها ایمیل های خروجی را مسدود می کنند در حالی که فرم این آدرس ایمیل را مشخص نمی کند، که از پانل کنترل میزبان ایجاد شده است، بنابراین آدرس واقعی را مشخص کنید؛ - تمام فایل ها را بارگیری کنید index.php, protected.php و دارایی ها و شامل پوشه ها از طریق FTP در میزبان شما؛ - اضافه کردن کد زیر به هر صفحه پی اچ پی، که در آن شما نیاز به نمایش فرم مجوز؛
نیاز به "شامل / main.php"؛ $ کاربر \u003d کاربر جدید ()؛ اگر ($ user- & gtloggedin ()) (redirect ("index.php")؛) - آماده!
برای کسانی که علاقه مند هستند، چگونه همه کارها - به جلو به خواندن در زیر!
اولین گام این است که کد HTM از فرم مجوز را بنویسید. این کد در فایل واقع شده است. index.php. این فایل همچنین شامل یک کد پی اچ پی است که دستگاه های فرم داده و سایر توابع مفید سیستم مجوز را تشکیل می دهند. شما می توانید بیشتر در بخش زیر اختصاص داده شده به بررسی کد پی اچ پی یاد بگیرید.
index.php
آموزش: سیستم ثبت نام فوق العاده ساده با پی اچ پی و MySQL
در بخش سر (بین برچسب ها
و) من سبک های اصلی (در این درس آنها را درک نمی کنم، بنابراین شما می توانید آنها را ببینید. پوشه دارایی / CSS / style.css). به برچسب بسته شدن
من کتابخانه جی کوئری و فایل script.js را متصل کردم، که ما فقط در زیر نوشتیم و تعجب می کنیم.
جاوا اسکریپت
jQuery وضعیت دکمه "ثبت نام / auto." را با استفاده از تابع ردیابی می کند e.PreventDefault () و درخواست های AJAX را ارسال می کند. بسته به پاسخ سرور، این پیام یا آن پیام را نمایش می دهد و اقدامات بیشتری را تعیین می کند
به فرم اضافه شد تا وضعیت فعلی درخواست AJAX را نمایش دهد (این امر به دلیل روش ها امکان پذیر بود ajaxstart ()) من. ajaxComplete ()که شما می توانید نزدیک به پایان فایل را پیدا کنید).
این کلاس یک فایل GIF متحرک را نشان می دهد (به عنوان اگر اشاره ای که درخواست پردازش شده است)، و همچنین به عنوان یک پرچم عمل می کند که از فرم ارسال مجدد جلوگیری می کند (زمانی که دکمه ثبت نام قبلا یک بار فشار داده شده است). کلاس .وارد شده. - این یک پرچم دیگر است، زمانی که ایمیل فرستاده شده تنظیم شده است. این پرچم بلافاصله هر اقدام دیگری را با فرم متوقف می کند.
طرح پایگاه داده
سیستم ثبت نام فوق العاده ساده ما از 2 جداول MySQL استفاده می کند (کد SQL در فایل است tables.sql) اولین فروشگاه ها را در حساب های کاربری ذخیره می کند. دوم فروشگاه اطلاعات را در مورد تعداد تلاش های ورودی ذخیره می کند.
مدار جدول کاربر
سیستم از کلمه عبور استفاده نمی کند، که در نمودار قابل مشاهده است. شما می توانید ستون را ببینید نشانه با نشانه های مجاور ستون token_valucy. این نشانه به محض این که کاربر به سیستم متصل شود نصب می شود، ایمیل خود را برای ارسال یک پیام (کمی بیشتر در مورد این در بلوک بعدی) تنظیم می کند. ستون token_valucy زمان 10 دقیقه بعد تنظیم می شود، پس از آن نشانه متوقف می شود.
مدار جدول، که تعدادی از تلاش های مجوز را در نظر می گیرد.
در هر دو جداول، آدرس IP در فرم پردازش شده با استفاده از عملکرد IP2Long در قسمت عدد صحیح ذخیره می شود.
در حال حاضر ما می توانیم یک کد پی اچ پی کمی بنویسیم. عملکرد اصلی سیستم به کلاس سپرده شده است user.class.php.که شما می توانید زیر را ببینید.
این کلاس به طور فعال از iDorm (Docs) استفاده می کند، این کتابخانه ها ابزار حداقل لازم برای کار با پایگاه های داده هستند. این دسترسی به پایگاه داده، نسل نشانه ها و اعتبار آنها را پردازش می کند. این یک رابط کاربری ساده است که به شما اجازه می دهد تا به راحتی سیستم ثبت نام را به سایت خود وصل کنید اگر از PHP استفاده می کند.
user.class.php.
User Class Class (/ / Private Orm Case Private $ ORM؛ / ** * پیدا کردن یک کاربر در Tocken. فقط نشانه های معتبر مورد توجه قرار می گیرند. Tocken تنها برای 10 دقیقه از لحظه تولید می شود * param string $ token. این است Tocken * @ @ کاربر @ کاربر return. مقدار تابع تابع * / عملکرد عمومی عمومی FindByToken ($ token) را بازگردانید (/ / / / / / /// play را پیدا کنید و اطمینان حاصل کنید که زمان فعلی تمبر $ نتیجه \u003d ORM :: for_table (" REG_USERS ") -\u003e کجا (" Token "، $ Token) -\u003e Where_Raw (" token_valiture\u003e now () ") -\u003e find_one ()؛ اگر (! $ نتیجه) (بازگشت نادرست؛) بازگرداندن کاربر جدید ($ نتیجه) ؛) / ** * مجوز یا ثبت نام یک کاربر * param string $ ایمیل. آدرس ایمیل سفارشی * @ @ رده عمومی ($ ایمیل) (// / / / / / / / / / اگر چنین کاربر قبلا وجود داشته باشد، مقدار تابع کاربر را بازگردانید از آدرس ایمیل مشخص شده ذخیره شده در پایگاه داده اگر (کاربر :: وجود دارد ($ ایمیل)) (بازگرداندن کاربر جدید ($ ایمیل)؛) // در غیر این صورت یک کاربر جدید ایجاد کنید تلویزیون در پایگاه داده و ارزش عملکرد کاربر را بازگردانید :: ایجاد از ایمیل مشخص شده ایمیل کاربر :: ایجاد ($ ایمیل)؛ ) / ** * ایجاد یک کاربر جدید و ذخیره به پایگاه داده * param رشته $ ایمیل. آدرس ایمیل کاربر * return کاربر * / عملکرد خصوصی استاتیک ایجاد ($ ایمیل) (/ / دریافت یک کاربر جدید و بازگشت نتیجه عملکرد کاربر از این مقادیر $ نتیجه \u003d ORM :: for_table ("reg_users") - \u003e ایجاد ()؛ $ نتیجه-\u003e ایمیل \u003d $ ایمیل؛ $ نتیجه-\u003e ذخیره ()؛ بازگرداندن کاربر جدید ($ نتیجه)؛) / ** * بررسی کنید که آیا چنین کاربر در پایگاه داده وجود دارد و مقدار متغیر را نشان می دهد متغیر * param رشته $ ایمیل. آدرس ایمیل سفارشی * return boolean * / عملکرد عمومی استاتیک موجود ($ ایمیل) (/ / آیا کاربر در پایگاه داده وجود دارد؟ $ نتیجه \u003d ORM :: for_table ("reg_users") -\u003e کجا ("ایمیل"، $ ایمیل ) -\u003e COUNTS ()؛ بازگشت $ نتیجه \u003d\u003d 1؛) / ** * ایجاد یک شیء کاربر جدید * @ param instance $ param ORM، ID، ایمیل یا 0 * return user * / عملکرد عمومی __Construct ($ param \u003d null) (اگر ($ param instanceOf ORM) (/ / / / / / / / / / / / / orm check به $-\u003e orm \u003d $ param منتقل می شود؛) else (is_string (param param)) (// ایمیل چک کردن $ این-\u003e om \u003d om :: for_table ("reg_users") -\u003e کجا ("ایمیل"، $ param) -\u003e find_one ()؛) else ($ id \u003d 0؛ اگر (is_numeric (param param)) (// شناسه کاربری به مقدار انتقال داده می شود $ param $ id value \u003d $ param؛) else isset (isset (session $ _ ["loginid"]) (// در غیر این صورت جلسه $ id \u003d $ _session را ببینید ["loginid"]؛) $ این-\u003e ORM \u003d ORM :: for_table ("REG_USERS") -\u003e کجا ("ID"، $ ID) -\u003e Find_One ()؛) / ** * ایجاد مجوز جدید SHA1 جدید، می نویسد در پایگاه داده و مقدار آن را باز می گرداند * return string * / تابع عمومی generatetoken () (/ / ایجاد یک نشانه برای یک کاربر مجاز و ذخیره آن به $ token \u003d sha1 ($ this-\u003e email.time (). RAND (0 ، 1000000))؛ // ذخیره نشانه ها در پایگاه داده // و علامت گذاری آن را که فقط در 10 دقیقه بعد از دقیقه $ این orm-\u003e set ("token"، $ token) مربوط است. $ این-\u003e orm-\u003e set_expr ("token_valiture"، "اضافه کردن (در حال حاضر ()،" 0:10 ")")؛ $ این-\u003e om-\u003e ذخیره ()؛ بازگشت $ token؛ ) / ** * مجوز کاربر * return void * / عملکرد عمومی ورود به سیستم () (/ / علامت گذاری به عنوان کاربر به عنوان مجاز $ _session ["loginid"] \u003d $ این orm-\u003e id؛ // refresh ارزش پایه پایه last_login $ $-\u003e om-\u003e set_expr ("last_login"، "now ()")؛ $ این-\u003e orm-\u003e ذخیره ()؛) / ** * از بین بردن جلسه و رمزگذاری کاربر * return void * / performance logout () ($ _SESSION \u003d ARRAY ()؛ UNSET ($ _ جلسه)؛) / ** * بررسی، آیا کاربر آمد * return boolean * / عملکرد عمومی loggedin () (بازگشت isset ($ این-\u003e orm-\u003e id) && $ _Session ["loginid"] \u003d\u003d $ این-\u003e\u003e orm-\u003e id؛) / ** * بررسی کاربر کاربر * return boolean * / عملکرد عمومی Isadmin () (بازگشت $ این-\u003e رده () \u003d \u003d "administrator"؛) / ** * پیدا کردن یک نوع کاربر، ممکن است یا مدیر یا به طور منظم * return string * / عملکرد عمومی () (اگر ($ این\u003e\u003e orm-\u003e رتبه \u003d\u003d 1) (بازگشت "مدیر"؛) بازگشت "منظم"؛) / ** * روش اجازه می دهد تا شما را به دریافت اطلاعات خصوصی حساب کاربری در * خواص کیفیت کاربر * param string $ key ویژگی های کلیدی ویژگی دریافت دسترسی * return miject * / عملکرد عمومی __get ($ key) (اگر (isset ($ this-\u003e ор -\u003e $ key)) (بازگشت $ این-\u003e ORM -\u003e $ کلید؛ ) بازگشت null؛ )
Tokens با استفاده از الگوریتم SHA1 تولید می شود و در پایگاه داده ذخیره می شود. من از توابع زمان MySQL استفاده می کنم تا محدودیت های 10 دقیقه ای مربوط به ارتباط Tokeny را تنظیم کنم.
هنگامی که این نشانه روش اعتبارسنجی را گذراند، ما به طور مستقیم با دستگیره صحبت می کنیم که ما تنها نشانه هایی را که هیچ تاریخ انقضا ندارند، در ستون Tken_Validy ذخیره می کنیم.
توجه داشته باشید که از روش جادویی استفاده می کنم __گرفتن. کتابخانه های Docs در پایان فایل برای دسترسی به خواص شیء کاربر.
با توجه به این، به لطف خواص، امکان دسترسی به اطلاعات ذخیره شده در پایگاه داده وجود دارد $ کاربر-\u003e ایمیل، $ user-\u003e token و همکاران در بخش کد زیر، به عنوان مثال، نحوه استفاده از این کلاس ها را در نظر بگیرید.
صفحه محافظت شده
فایل دیگری که قابلیت های مفید و ضروری را ذخیره می کند یک فایل است. functions.php. چندین کارمند به اصطلاح وجود دارد - توابع دستیار که به شما اجازه می دهد کد پاک کننده و قابل خواندن را در سایر فایل ها ایجاد کنید.
functions.php
تابع send_email ($ از، $ به، $ موضوع، $ پیام) (// / helper، ارسال ایمیل $ headers \u003d "mime-version: 1.0". "\\ r \\ n"؛ $ headers \u003d "type content-type: text / دشت؛ charset \u003d utf-8 "." \\ r \\ n "؛ $ headers \u003d" از: "$ از". \\ r \\ n "؛ بازگشت ایمیل ($ به، $ موضوع، $ پیام، $ headers )؛) تابع get_page_url () (// uRL File PHP ایالات متحده \u003d "http" را تعیین کنید. (خالی ($ _ سرور ["https"])؟ "": "S") ": //" $ _ سرور ["server_name"]؛ اگر (isset ($ _ سرور ["request_uri"]) && $ _server ["request_uri"]! \u003d "") ($ URL \u003d $ _server ["request_uri"]؛) else else ($ url . \u003d $ _server ["path_info"]؛) بازگشت $ URL؛) تابع نرخ Rate_limit ($ IP، $ limit_hour \u003d 20، $ limit_10_min \u003d 10) (/ / تعداد تلاش های ورودی برای ساعت گذشته در این آدرس IP $ count_hour \u003d ORM:: for_table ("reg_login_attemptement") -\u003e کجا ("IP"، Sprintf ("٪ U"، IP2Long ($ IP))) -\u003e Where_raw ("TS\u003e SubTime (در حال حاضر ()،" 1:00 " ) ") -\u003e تعداد ()؛ // تعداد تلاش های ورودی در 10 دقیقه گذشته در این آدرس IP $ count_10_min \u003d ORM :: for_table (" reg_login_attemptent ") -\u003e کجا (" IP "، Sprint f ("٪ U"، IP2Long ($ IP))) -\u003e where_raw ("ts\u003e subtime (در حال حاضر ()،" 0:10 ")") -\u003e شمارش ()؛ اگر ($ count_hour\u003e $ limit_hour || $ count_10_min\u003e $ limit_10_min) (پرتاب استثناء جدید ("بیش از حد بسیاری از تلاش های ورود به سیستم!")؛))) تابع rate_limit_tick ($ IP، $ ایمیل) (/ / ایجاد یک ورودی جدید در جدول که تعداد تلاش های ورودی را در نظر می گیرد $ logg_attempt \u003d ORM :: for_table ("reg_login_attempte") -\u003e ایجاد ()؛ $ login_attemptem-\u003e Email \u003d $ email؛ $ login_attempt-\u003e ip \u003d sprintf ("٪ u"، IP2Long ($ IP )) $ login_attempt-\u003e ذخیره ()؛) تابع تغییر مسیر ($ URL) (header ("محل: $ url")؛ خروج؛)
کارکرد حد نرخ. و rate_limit_tick آنها به دنبال تعدادی از تلاش های مجوز برای مدت زمان منقضی شده از لحظه ای از اولین تلاش هستند. تلاش ورودی در پایگاه داده در ستون reg_login_attempt ثبت شده است. این توابع هنگام پردازش و ارسال اطلاعات فرم به عنوان شما می توانید از قطعه کد بعدی را ببینید.
کد از فایل زیر گرفته شده است. index.php و آن را فرآیند ارسال فرم. این پاسخ JSON را باز می کند، که به نوبه خود توسط جی کوئری در فایل پردازش می شود دارایی / js / script.jsکه ما قبلا قبلا جدا شده ایم.
index.php
سعی کنید (اگر (! خالی ($ _ post) && isset ($ _ سرور ["http_x_requested_with"])) (/ / خروجی هدر هدر JSON ("نوع محتوا: برنامه / json")؛ // این آدرس ایمیل است معتبر اگر (! isset ($ _ post ["email"]) ||! filter_var ($ _ post ["email"]، filter_validate_email)) (پرتاب استثناء جدید (لطفا یک ایمیل معتبر را وارد کنید)؛) // چک کنید این که آیا کاربر مجاز به ورود به سیستم است، از تعداد اتصالات مجاز تجاوز می کند؟ (functions.php فایل برای اطلاعات بیشتر) Rate_limit ($ _ سرور ["Remote_addr"])؛ // این تلاش برای تأیید rate_limit_tick ($ _ سرور ["Remote_addr"]، $ _POST ["ایمیل"])؛ // ارسال نامه به کاربر $ message \u003d ""؛ $ ایمیل \u003d $ _POST ["ایمیل"]؛ $ subject \u003d "لینک ورود شما" ؛ اگر (کاربر :: exists ($ email)) ($ subject \u003d "با تشکر از شما برای ثبت نام!"؛ $ message \u003d "متشکرم برای ثبت نام در سایت ما! \\ n \\ n"؛) // تلاش برای تأیید یا ثبت نام کاربر $ user \u003d User :: loginorregister ($ _ post ["email"])؛ $ پیام \u003d "شما می توانید از این URL وارد شوید: \\ n" ؛ $ پیام \u003d get_page_url () "؟ tkn \u003d". $ user-\u003e generatetoken (). "\\ n \\ n"؛ $ پیام \u003d "لینک پس از 10 دقیقه به طور خودکار منقضی می شود." $ نتیجه \u003d send_email ($ fromemail، $ _post ["ایمیل"]، $ subject، $ پیام)؛ اگر (! $ نتیجه) (استثناء جدید را پرتاب کرد ("یک خطا ارسال ایمیل شما بود. لطفا دوباره امتحان کنید")؛)؛)؛) Die (json_encode ("پیام" \u003d\u003e "متشکرم! ما یک لینک ارسال کردیم به صندوق ورودی خود را چک کنید پوشه اسپم خود را نیز بررسی کنید. ")))؛))؛)) گرفتن (json_encode (array" \u003d\u003e 1، "پیام" \u003d\u003e $ e-\u003e getMessage ()))؛)
پس از مجوز مجوز / ثبت نام موفق، کاربر یک پیوند را به مجوز کاربر ارسال می کند. Tocken مقرون به صرفه می شود، زیرا این به عنوان یک متغیر در روش پیوند تولید شده منتقل می شود $ _get. با نشانگر TKN
index.php
اگر (isset ($ _ get ["tkn"])) (// این نشانه معتبر برای مجوز؟ $ user \u003d کاربر :: findbyToken ($ _ get ["tkn"])؛ اگر ($ کاربر) (// بله این است که یک تغییر مسیر به صفحه محافظت شده از $ user-\u003e ورود ()؛ redirect ("protected.php")؛) // نه، Token معتبر نیست. پیاده سازی یک تغییر مسیر، در صفحه با فرم از مجوز / ثبت نام تغییر مسیر ("index.php")؛)
$ کاربر-\u003e ورود ()
متغیرهای لازم برای جلسه را ایجاد کنید، به طوری که کاربر، به دنبال صفحات سایت بعدی، همیشه مجاز خواهد بود.
به طور مشابه، پردازش عملکرد برای خروج از سیستم نیز مرتب شده است.
index.php
اگر (isset ($ _ get ["logout"]) ($ user \u003d کاربر جدید ()؛ اگر ($ user-\u003e loggedin ()) ($ user-\u003e logout ()؛) Redirect ("index.php" )؛)؛)
در پایان کد، من دوباره یک تغییر مسیر را در index.php قرار دادم، بنابراین پارامتر ؟ خروج \u003d 1 مورد نیاز URL مورد نیاز نیست
فایل ما index.php نیاز به اضافه کردن حفاظت - ما نمی خواهیم افرادی که تا به حال سیستم وارد سیستم شده اند، دوباره فرم ثبت نام را دیدند. برای این اهداف، ما از روش استفاده می کنیم $ user-\u003e loggedin ().
index.php
$ کاربر \u003d کاربر جدید ()؛ اگر ($ user-\u003e loggedin ()) (redirect ("protected.php")؛)
در نهایت، در اینجا یک قطعه کد است که به شما اجازه می دهد تا از صفحات سایت خود محافظت کنید و تنها پس از مجوز آن را در دسترس قرار دهید.
protected.php
// برای محافظت از هر صفحه در سایت خود، فایل // main.php را به آن وصل کنید و یک شی کاربر جدید ایجاد کنید. این چقدر آسان است! نیاز به "شامل / main.php"؛ $ کاربر \u003d کاربر جدید ()؛ اگر ($ user-\u003e loggedin ()) (redirect ("index.php")؛)
پس از این چک، می توانید مطمئن باشید که کاربر با موفقیت مجاز است. شما همچنین می توانید اطلاعات ذخیره شده را در پایگاه داده با استفاده از خواص شیء دسترسی داشته باشید. $ کاربر. برای نمایش ایمیل و کاربر و وضعیت آن، از این کد استفاده کنید:
روش رتبه () در اینجا استفاده می شود زیرا پایگاه داده معمولا ذخیره می شود (0 برای یک کاربر معمولی، 1 برای مدیر) و ما باید این داده ها را به وضعیت هایی که به ما مربوط می شود و این روش به آن کمک می کند، تبدیل کنیم.
برای ایجاد یک مدیر از یک کاربر معمولی، به سادگی ورود کاربر را از طریق phpMyAdmin (یا هر برنامه دیگری که به شما امکان می دهد پایگاه داده ها را مدیریت کنید) را ویرایش کنید. وضعیت مدیر هیچ امتیازاتی را ارائه نمی دهد، در این مثال در صفحه نمایش داده خواهد شد که شما یک مدیر هستید - و این است.
اما با آن چه کار میکنید - آن را با اختیار شما باقی می ماند، می توانید یک کد بنویسید و ایجاد کنید که امتیازات و فرصت های خاصی را برای مدیران تعریف می کند.
ما به پایان رسید!
با استفاده از این فرم فوق العاده فوق العاده شبه ساده، ما به پایان رسید! شما می توانید آن را در سایت های پی اچ پی خود استفاده کنید، به اندازه کافی آسان است. شما همچنین می توانید آن را تحت خود تغییر دهید و آن را مانند شما می خواهید.
مواد آماده دنیس کودک به ویژه برای سایت سایت
P.S. آیا می خواهید در تسلط بر روی پی اچ پی و OOP حرکت کنید؟ توجه به درس های حق بیمه در جنبه های مختلف ساختمان های سایت، از جمله برنامه نویسی پی اچ پی، و همچنین یک دوره رایگان در ایجاد سیستم CMS خود را بر روی پی اچ پی از صفر با استفاده از OOP:
آیا مواد را دوست دارید و می خواهید تشکر کنید؟ فقط با دوستان و همکارانش به اشتراک بگذارید!
1. بیایید با ایجاد کاربران ثبت نام در پایگاه داده شروع کنیم. این اطلاعات کاربر را شامل می شود (ورود و رمز عبور). بیایید به phpmyadmin برویم (اگر یک پایگاه داده را بر روی کامپیوتر خود ایجاد کنید http: // localhost / phpmyadmin /). یک جدول ایجاد کنید کاربراناین 3 زمینه دارد.
من آن را در پایگاه داده MySQL ایجاد می کنم، می توانید در پایگاه داده دیگری ایجاد کنید. بعد، مقادیر را به عنوان تصویر تنظیم کنید:
کلیک " صرفه جویی"بنابراین، ما یک میز داریم 2. لازم است به این جدول متصل شود. بیایید یک فایل ایجاد کنیم bd.php.. محتوای آن:
در مورد من به نظر می رسد این است:
ذخیره bd.php. عالی ما یک جدول در پایگاه داده داریم، اتصال به آن. حالا شما می توانید یک صفحه را ایجاد کنید که کاربران اطلاعات خود را ترک خواهند کرد. 3. یک فایل ایجاد کنید reg.php با محتوا (همه نظرات داخل):