هدایت URL های بیهوده به ادرس جدید در پروژه نوت استاد؟؟؟؟؟
سلام خسته نباشید
اکثرا می دونید routing پروژه ی استاد اینطوریه که وقتی همچنین url رو تایپ کردیم به طور مثال
site.com/user/login
بره در فایل مشخصی کلاس user رو instance بگیره بعد متد login رو اجرا کنه!
خب اگه به طور مثال کسی همچنین ادرسی رو بزنه :
site.com/asdasd
به طور کلی یه ادرس بیهوده و الکی
به جای اینکه به صفحه 404 خودمون منتقل بشه این خطا ها رو بهش میده
Notice: Undefined offset: 2 in C:\xampp\htdocs\workspace\notes-v2\index.php on line 7
Warning: require_once(C:\xampp\htdocs\workspace\notes-v2/controller/asadsdasd.php): failed to open stream: No such file or directory in C:\xampp\htdocs\workspace\notes-v2\index.php on line 14
Fatal error: require_once(): Failed opening required 'C:\xampp\htdocs\workspace\notes-v2/controller/asadsdasd.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\workspace\notes-v2\index.php on line 14
و این اصلا جالب نیست ! چیکار کنم کسی ادرس اشتباه و الکی زد به جای اجرا شدن کد ها و اینکه بگه کلاس فلان وجود ندارد متد وجود ندارد
به صفحه 404 منتقل بشه مثل باقی url های بیهوده !
اگه همچین روتینک نداشت به راحتی با یک خط کد htaccess میشد صفحات بیهوده رو منتقل کرد ولی خب الان هر چی بزنیم کلاس حسابش می کنه و وقتی پیداش نکنه خطا میده
لطفا کمک کنین
در index.php را مطابق زیر تغییر دهید.
$controllerClassName = ucfirst($controller) . 'Controller';
$controllerInstance = new $controllerClassName();
if (method_exists($controllerInstance, $method)
&& is_callable(array($controllerInstance, $method))) {
call_user_func_array(array($controllerInstance, $method), $params);
}else{
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
echo "404";
}
در core.php هم مطابق زیر عمل کنید:
function __autoload($className){
if(strHas($className,"Model")){
$filename=str_replace("Model", '',$className);
$filename=strtolower($filename);
require_once (getcwd()."/mvc/model/$filename.php");
return;
}
if(strHas($className,"Controller")){
$filename=str_replace("Controller", '',$className);
$filename=strtolower($filename);
if (!file_exists(getcwd()."/mvc/controller/$filename.php")) {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
echo "404";exit;
} else{
require_once (getcwd()."/mvc/controller/$filename.php");
}
return;
}
}
با دوتا سرچ به این کد میرسیدید....
هم باید چک کنین که فایل وجود داره یا نه و متد وجود داره یا نه.
به جای نشون دادن 404 هم میتونید از یه view استفاده کنید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .