فصل پیاده سازی فریمورک MVC - ویدئو نهم: تمرین دریافت کلید و چاپ مقدار کوئری سلکتور
حل شده توسط
محسن موحد
درفایل Request.php متد زیر را وارد کنید:
class Request
{
public function __get(string $name)
{
return $_GET[$name];
}
}
در فایل index.php کد خروجی مقدار name رو وارد میکنیم.
echo (new Request())->name;
سلام،
یه نکته اضافه کنم، حواست باشه که این روش به همون اندازه که ساده و کاربردیه، میتونه حساس هم باشه. چون مستقیماً از ورودیهای کاربر استفاده میکنی، باید نگاه ویژهای به امنیت و بررسی دادههای ورودی هم باشه تا جلوی مشکلاتی مثل حملات XSS یا SQL Injection رو بگیری.
برای مثال، اگر $_GET['name'] توی URL نباشه، ممکنه خطا بده یا چیزی برنگرده. میتونی اینو با یه شرط بررسی کنی:
class Request
{
public function __get(string $name)
{
return $_GET[$name] ?? null;
}
}
اینطوری، اگه کلید مورد نظر توی $_GET نباشه، مقدار null برمیگردونه و از خطا جلوگیری میکنه. در نهایت، وقتی توی فایل index.php خروجی رو چاپ میکنی:
echo (new Request())->name ?? 'نامی وارد نشده!';
این کد مطمئن میشه که همیشه یه خروجی مناسب داشته باشی، حتی اگه کاربر چیزی توی URL وارد نکرده باشه.
بهترین پاسخ
محسن موحد۲۱ مرداد ۱۴۰۳، ۰۷:۴۸
آقای موحد واقعا دوست دارم خیلی لطف کردی، دلیل استفاده استاد رو که همیشه از Null coalescing استفاده میکنن رو الآن فهمیدم که چرا این رو نال برمیگردونن پس به خاطر امنیت بوده که من همش سوال بود برام جدای دریافت نکردن ارور که چرا همش نال قرار میگیره که با توضیح شما متوجه شدم که مورد امنیتی sql injection نداشته باشه.