در این سوال از شما میخواهیم که بخشی از کوئرا فریمورک را طراحی کنید.
JWT(Json Web Token)
استفاده می شود.sqlite3
استفاده میشود.signUp
و signIn
) .\n
استفاده کنید.TODO: implement
دارند را پیادهسازی کنید.برای شروع پایگاه دادهای با نام qdb.sqlite
در جایی که bootstrap.php
در آن قرار دارد، ایجاد کنید.
در این پایگاه داده باید یک جدول به نام users
وجود داشتهباشد که ستونهای آن به شرح زیر است:
id
: INTEGER PRIMARY KEY NOT NULL
name
: TEXT NOT NULL
passWD
: TEXT NOT NULL
firstName
: TEXT NOT NULL
lastName
: TEXT NOT NULL
email
: TEXT NOT NULL
این تابع به عنوان تابع ورودی به spl_autoload_register
داده خواهد شد.
این تابع باید در صورت ایجاد شدن شیء از هر یک کلاسهای موجود در پوشهی برنامه، که ساختار نامگذاری فایل آنها بصورت class.نام کلاس.php
می باشد، فایل مربوط را require_once
کند.
این تابع باید exception
ٰهای دریافتی خود را در پوشه برنامه و در فایل exception.log
ذخیره کند.
به ازای هر exception
باید توضیحات آن را با فرمت زیر در خط جدیدی به فایل اضافه نمایید.
این تابع به عنوان ورودی به set_exception_handler
داده خواهد شد.
برای مثال یکی از خطوط ذخیره شده در فایل می تواند به این صورت باشد :
این تابع باید error
های دریافتی خود را در پوشه برنامه و در فایل error.log
ذخیره کند.
به ازای هر error
باید توضیحات آن را با فرمت زیر در خط جدیدی به فایل اضافه نمایید.
این تابع به عنوان ورودی به set_error_handler
داده خواهد شد.
برای مثال یکی از خطوط ذخیره شده در فایل میتواند به این صورت باشد:
exception
و error
الزامی برای استفاده از کلاس Log
نیست.QUERA_FRAMEWORK_ROOT
استفاده کنید.تنها ورودی آن ، آدرس فایل مورد نظر جهت ذخیره لاگ میباشد. در صورت عدم وجود آن فایل ، آن را ایجاد میکند.
دو ورودی message
و alertDetail
میگیرد و در انتهای فایل مورد نظر در خط جدید بصورت زیر مینویسد. در صورتی که فایل خالی بود از ابتدا فایل شروع میکند.
در این کلاس پنج تابع post
, get
, put
, delete
, resolve
را به نحوی پیادهسازی کنید که عملیاتهای زیر را انجام دهند.
هر یک از توابع post
, get
, put
, delete
سه ورودی میگیرند که به ترتیب زیر میباشند :
[s]
یا [i]
استفاده کرد که به ترتیب نشاندهندهی یک string
و integer
هستند./api/[i]/
باشد میتواند هرکدام از مسیر های /api/21312/
یا /api/3123/
یا /api/1/?test=sample
را مسیریابی کند.تابع resolve
نیز دو ورودی میگیرد که به ترتیب زیر میباشند:
GET
)resolve
در صورت یافتن مسیر مناسب تابع مورد نظر آن مسیریابی را با آرگومان های مشخص شده اجرا می کند و true
بر میگرداند و در صورت عدم یافتن مسیریابی مناسب false
بر میگرداند.[s]
می تواند هر کاراکتری بجز /
را شامل شود.Router
میتواند به صورت زیر باشد: اطلاعات ورودی ثبت نام یک کاربر را گرفته و در پایگاه داده ذخیره میکند. ورودیهای تابع به صورت زیر میباشند.
native password hashing API
موجود در PHP
و با استفاده از الگوریتم PASSWORD_BCRYPT
رمزگذاری کرده و سپس در پایگاه داده ذخیره کنید.یک نام کاربری و یک رمزعبور (بصورت رمزگذاری نشده) را به عنوان ورودی میگیرد و از پایگاه داده بررسی میکند که آیا اطلاعات ورودی صحیح است یا خیر.
این تابع SECRET
, HEADER
, PAYLOAD
را دریافت کرده و به عنوان خروجی JWT
را برمیگرداند.
HS256
میباشد.secret base64 encoded
نیست.TOKEN
را با فرمت صحیح برگردانید و برگرداندن SIGNATURE
به تنهایی کافی نیست.این تابع SECRET
, TOKEN
دریافت می کند و تایید میکند که آیا این TOKEN
با استفاده از این SECRET
مورد تایید است یا خیر.
فایلهای class.controller.php
، class.log.php
، class.router.php
، qdb.sqlite
و bootstrap.php
را داخل یک فایل زیپ قرار داده و بارگذاری کنید.