در این سوال قصد داریم تغییر کوچکی در سیستم ورود لاراول ایجاد کنیم.
Authentication
پیشفرض لاراول ورود را با ایمیل بررسی میکند، اما ما دوست داریم کاربران با نام کاربریای که در هنگام ثبتنام وارد میکنند وارد سایت شوند، به همین دلیل در این امر از شما کمک میخواهیم.
پروژه اولیه را از اینجا دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
پروژهی اولیه، پروژهی لاراول خامی است که روی آن دستور php artisan make:auth
اجرا شده و کمی view
های آن تغییر کردهاند.
شما تنها مجاز به تغییر فایل app/Http/Controllers/Auth/LoginController.php
هستید، باید کاری کنید که در کنترلر ورود به جای ایمیل از نام کاربری برای ورود استفاده شود.
app/Http/Controllers/Auth/LoginController.php
هستید، بقیهی تغییرات نادیده گرفته میشوند.vendor
را Zip کرده و ارسال کنید.در این سوال قصد داریم برای یک دبستان ، درس افزار هوشمند طراحی کنیم.
البته تنها بخش طراحی ارتباط مدل ها برای Eloquent
، به شما سپرده شده است.
پروژه اولیه را از اینجا دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
Assignment
: تکلیفClassroom
: کلاسCourse
: درسGrade
: پایه تحصیلیScore
: نمرهStudent
: دانش آموزTeacher
: معلمیک نمونه از اجرای این مدل ها شکل زیر است:
migration
ها استفاده کنید.App/Assignment.php
, App/Classroom.php
, App/Course.php
, App/Grade.php
, App/Score.php
, App/Student.php
, App/Teacher.php
هستید، بقیهی تغییرات نادیده گرفته میشوند.migration
ها برای فهمیدن آنچه باید بنویسید کمک بگیرید.vendor
را Zip کرده و ارسال کنید.در این سوال قصد داریم یک کوتاه کننده لینک به کمک لاراول ایجاد کنیم.
طراحی کنترلر های این سیستم به عهده شماست.
پروژه اولیه را از اینجا دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
App\Http\Controllers\HomeController
🔗visitLink()
🔗این تابع باید در صورت معتبر بودن آدرس کوتاه شده ورودی ، آدرس هدف را یافته و کاربر را به آن صفحه Redirect
کند و در صورت نامعتبر بودن آدرس کوتاه شده، کاربر را با Session(message)
با محتوای Invalid
به صفحه اصلی سایت Redirect
کند.
App\Http\Controllers\AdminController
🔗addLink()
🔗این تابع باید در صورت معتبر بودن لینک ورودی ، یک آدرس کوتاه شده و یک آدرس رمز بصورت تصادفی ایجاد کند، اطلاعات مربوط به لینک را در پایگاه داده ذخیره کرده و در انتها Session(shortened)
و Session(password)
را بطور صحیح تنظیم کند. این تابع در انتها باید کاربر را به صفحه اصلی سایت Redirect
کند.
adminLink()
🔗این تابع باید در صورت معتبر بودن آدرس رمز، View
مربوط به خود (admin
) را با محتوای صحیح نمایش دهد. در صورت نامعتبر بودن آدرس رمز، کاربر را با Session(message)
با محتوای Invalid
به صفحه اصلی سایت Redirect
کند.
editLink()
🔗این تابع باید در صورت معتبر بودن آدرس رمز و اطلاعات ورودی، اطلاعات لینک را به اطلاعات ورودی تغییر دهد (در صورت تکراری بودن آدرس رمز یا آدرس کوتاه شده، از تغییر پارامتر تکراری چشم پوشی کنید) و کاربر را به آدرس رمز Redirect
کند. . در صورت نامعتبر بودن آدرس رمز، کاربر را با Session(message)
با محتوای Invalid
به صفحه اصلی سایت Redirect
کند.
App\Http\Controllers\OwnerController
🔗index()
🔗این تابع باید اگر کاربر به عنوان صاحب سایت احراز هویت شده بود View
مربوط به خود (owner
) را با محتوای صحیح نمایش دهد. در غیر این صورت کاربر را به صفحه Login
، Redirect
می کند.
login()
🔗این تابع باید اگر کاربر به عنوان صاحب سایت احراز هویت نشده بود View
مربوط به خود (login
) را نمایش دهد. در غیر این صورت کاربر را به صفحه Owner
، Redirect
می کند.
authenticate()
🔗این تابع باید معتبر بودن رمز صاحب سایت را بررسی کند، در صورت صحیح بودن، تنظیمات مورد نیاز را انجام داده و سپس کاربر را به صفحه Owner
، Redirect
کند. در غیر این صورت کاربر را به صفحه Login
، Redirect
کند.
تمام احراز هویت ها باید با استفاده از Session(IsOwner)
با مقادیر true
یا false
انجام شود.
برای بررسی معتبر بودن مقادیر ورودی از Validation
استفاده کنید.
هر لینک باید تنها برای تعدادی محدودی مشاهده معتبر باشد، که تعداد دفعات باقیمانده مشاهده هر لینک از روی ستون expire_after_clicks
در جدول links
بدست می آید و در ابتدا باید برای هر لینک مقدار آن 50 باشد. بعد از 0 شدن این عدد لینک کوتاه شده نامعتبر می شود.
رمز صاحب سایت در فایل .env
با کلید SUPER_ADMIN_PASS
قرار داده شده است.
app/Http/Controllers/AdminController.php
و app/Http/Controllers/HomeController.php
و app/Http/Controllers/OwnerController.php
هستید، بقیهی تغییرات نادیده گرفته میشوند.view
, route
, migration
ها برای فهمیدن آنچه باید بنویسید کمک بگیرید. vendor
را Zip کرده و ارسال کنید.در این سوال قصد داریم سیستم برگزاری آزمون آنلاین، (چیزی شبیه به Quera) طراحی کنیم.
این سیستم تنها قابلیت برگزاری یک آزمون را دارد و سوالات آزمون کوتاهپاسخ اند.
پروژه اولیه را از اینجا دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
جدولهای پایگاه داده به شرح زیر است:
این جدول شامل اطلاعات کاربران است که در فیلدهای زیر ذخیره شده اند :
این جدول شامل اطلاعات پرسشها است که در فیلدهای زیر ذخیره شده اند :
این جدول شامل اطلاعات ارسالها است که در فیلدهای زیر ذخیره شده اند :
بخشهایی از این سیستم پیادهسازی شدهاست و شما کافی است بخشهای زیر را پیادهسازی کنید:
در صفحهی نخست سایت بخشی برای ورود به سایت و بخشی برای نمایش لیست پرسشهای مسابقه باشد.
کاربر با کلیک بر روی هر یک از پرسشها به صفحهی پرسش برود که صفحهی پرسش دو قسمت دارد.
در صورتی که کاربر وارد سایت شده بود پاسخ او به عنوان یک sumbission داوری نشده ثبت شود و به صفحهی ارسالها منتقل شود و در غیر اینصورت خطای ۴۰۳ بدهد.
در صورتی که کاربری وارد سایت شدهبود در این بخش تمام ارسالهای انجام شده توسط خودش را ببیند در غیر اینصورت خطای ۴۰۳ بدهد.
در این صفحه لیست رتبهبندی تمام کاربران شامل رتبهی آنها، پنالتی گرفته شده و تعداد پرسشهای حل شدهی هر کاربر نمایش داده می شود.
منظور از پنالتی یک کاربر مجموع پنالتی پرسشهایی که کاربر توانسته در انتها به آنها پاسخ بدهد است.
پنالتی یک پرسش حلشده مثل برای کاربری مثل برابر با زمان ثبت اولین ارسال درست برای آن پرسش توسط از زمان شروع مسابقه به دقیقه، بهاضافهی بیست برابر تعداد ارسالهای غلط ثبتشده توسط برای پرسش قبل از زمان ارسال اولین پاسخ صحیح توسط برای پرسش است.
نفر از نفر رتبه بهتری دارد اگر تعداد پرسشهای حلشده توسط از بیشتر باشد و در صورت برابری تعداد پرسشهای حلشده، پنالتی کمتری داشتهباشد.
دقت کنید که زمان شروع کانتست داخل فایل .env
تنظیم شدهاست و تمام کاربران (چه ارسالی داشتهاند یا نداشتهاند) در رتبهبندی میآیند.
با دستور php artisan judge
باید داوری اجرا شود.
اولین ارسال داوری نشده به ترتیب زمان ارسال را برای داوری انتخاب میکند. سپس در صورت وجود ارسال، اطلاعاتی به شکل زیر نمایش میدهد:
که {problem_id}
شناسهی سوالی است که ارسال برای آن انجام شده و {answer}
پاسخ ارسالی است.
سپس یک سوال با محتوا Is it OK?
میپرسد که در صورتی که yes
وارد شود ارسال به عنوان پاسخ صحیح علامتگذاری و در غیر اینصورت به عنوان پاسخ غلط علامتگذاری میشود.
app/
هستید.view
ها برای فهمیدن آنچه باید بنویسید کمک بگیرید. vendor
را Zip کرده و ارسال کنید.