PDA

View Full Version : سوال: از دسترس خارج شدن کلاسهام در بعضی مواقع



css-man
جمعه 31 مرداد 1393, 16:30 عصر
دوستان به این آدرس یه نگاهی بندازید

اگر آدرس رو به شکل http://www.3dsazan.ir/fa وارد کنم ارور می ده و کلاس هام رو دیگه نمیشناسه
در حالی که قراره اگر آدرس به این شکل بود صفحه اصلی include بشه
این کارو که نمی کنه هیچ کلاس هام هم از دسترس خارج میشن
اصلا این موضوع چه ربطی به کلاس هام داره

Mohammadsgh
جمعه 31 مرداد 1393, 18:05 عصر
شما از چه روشی برای ایجاد url های بالا استفاده میکنید؟mvc یا .htaccess خالی؟

css-man
جمعه 31 مرداد 1393, 18:09 عصر
تو این پروژه از htaccess استفاده کردم
البته توی MVC هم تقریبا از یه چیزی شبیه بی این استفاده میشه
البته کنترل آدرس ها به عهده php هست

فرزند کوروش
جمعه 31 مرداد 1393, 18:12 عصر
نمونه کد اینکلودت رو بزار

css-man
جمعه 31 مرداد 1393, 18:16 عصر
این صفحه اصلی




<?php require_once('loader.php'); if(isset($_GET['url'])) { $url = $_GET['url']; $params = $Methods->GetUrl($url); $Methods->router($url); } else { $lang = defLang; require_once('templates/index.php'); }



?>



این متد GETURL



function GetUrl($url) { $url = trim($url,'/'); $url = explode('/',$url); $counturl = count($url); /*$maduls = $url[1]; $madulname = $url[2]; $category = $url[3]; $data = $url[4]; */ for($i=0;$i<$counturl;$i++) { $params [] = $url[$i]; } return $params; }


این هم متد router





function router($params) { $params = trim($params,'/'); $params = explode('/',$params); $Count_params = count($params); $mistacke_page = array(); if($Count_params > 5) { $lang = $params[0]; require_once('templates/404.php'); } else if($Count_params == 1) { if($this->Checklang($params[0])) { $lang = $params[0]; require_once('templates/index.php'); } else { $lang = $params[0]; require_once('templates/404.php'); } } else if($Count_params == 2) { $lang = $params[0]; require_once('templates/404.php'); } else if($Count_params == 3 || 4 || 5) { if($this->Checklang($params[0])) { $lang = $params[0]; $maduls = $params[1].'/'.$params[2]; if(is_dir($params[1])&& is_dir($maduls)) { require_once('templates/inner.php'); } else { require_once('templates/404.php'); } } else { $lang = $params[0]; require_once('templates/404.php'); } } }

css-man
یک شنبه 02 شهریور 1393, 11:24 صبح
دوستان کسی تا حالا به این مشکل نخورده بتونه کمک کنه

2undercover
یک شنبه 02 شهریور 1393, 14:13 عصر
کد های فایل .htaccess رو اینجا قرار بدهید.

اگر منظورتون از کلاس، استایل های CSS هست، علتش اینه که وقتی شما با استفاده از Rewrite آدرس رو تغییر می دهید تا فرضا:

http://test.com/index.php?lang=fa
تبدیل بشه به:

http://test.com/fa/
اگر فایل های CSS شما (یا هر فایل دیگه ای) در آدرس:

http://test.com/css/
باشند و شما از مسیردهی نسبی (Relative path) استفاده کنید توی صفحه اصلی آدرس فایل (مثلا CSS) به شکل:

http://test.com/fa/css
در میاد در حالی که اینطور نباید باشه. برای حل مشکل اول توی فایل .htaccess اول بررسی کنید اگر اون فایل یا پوشه موجود نبود از Rewrite استفاده بکنه و بعد هم دو تا راه حل وجود داره:
1. از مسیردهی مطلق (Absolute path) استفاده کنید یعنی مثلا توی تگ link برای فایل CSS به جای:

css/style.css
از:


http://test.com/css/style.css

استفاده کنید.
2. مسیردهی نسبی رو از:

css/style.css
به:

../css/style.css
تغییر بدهید (البته این در صورتی هست که همیشه توی آدرس زبان هم وجود داشته باشه).

css-man
یک شنبه 02 شهریور 1393, 18:12 عصر
نه دوست عزیز منظورم از کلاس ها object ها در کلاسهای php هست

روی اأرس سایت برید و امتحان کنید آدرس رو به شکل 3dsazan.ir/fa وارد کنید ارور رو میبینید

این هم فایل htaccess




RewriteEngine on


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l


RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]