آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در routing

joker  9 سال پیش  9 سال پیش
+3 0

سلام.

من در مسیریابی فریم ورک خواستم به گونه ای تغییری رو اعمال کنم که url هایی که بی هدف هستند به یک صفحه ی خاص منتقل بشن.

و قسمت زیر رو اضافه کردم

$controllerClassname = ucfirst($controller) . "Controller";
if (!class_exists ( $controllerClassname )) {
if(isset($_SESSION['nationalCardNumber'])){
header("Location: ".fullBaseUrl()."/page/account");
exit;
}else{
header("Location: ".fullBaseUrl()."/user/login");
exit;
}
}
$controllerInstance = new $controllerClassname();

 

و تغیرات زیر رو در فایل core.php دادم:

function __autoload($classname) {
if(strhas($classname,"Model")){
$fileName=str_replace("Model",'',$classname);
$fileName=str_replace("model",'',$fileName);
$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")){
require_once(getcwd()."/mvc/controller/$fileName.php");
return;
}else{
return false;
}
}
}
 

الان دقیقا به همان جایی که می خوام منتقل میشه ولی مشکلی که پیش می یاد وقتی که از هر صفحه ای csrf token ارسال می شه .اون csrf token که در session ذخیره شده نیست.جالب اینه که من تو سورس هم چک کردم token همان توکن ذخیره شده در session هستش ولی موقع چک مطابقت نمی کنه.

و اگه قسمت bold شده ی اول رو بردارم به درستی کار می کنه.

دوستان اگه کسی نظری داره لطفا بگه که سخت در موندم.

تشکر

+1 0
به این پاسخ نگاه کنید ببینید مشکل رو حل میکنه: لینک (9 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
joker  9 سال پیش
0 0

اگر کسی روشی برای انتقال url های سرگردان به یک صفحه ی خاص رو هم داره می تونه بذاره

تشکر

پاسخ به سوال 
joker  9 سال پیش
+4 0

با تشکر از آقای سجاد عباسی از پاسخ خوبشون.

در 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;
    }
}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .