majid1605
شنبه 17 خرداد 1393, 14:10 عصر
من اومدم تمام ادرسهای سایت رو به صورت pretty urls درآوردم ولی الان چندتا مشکل دارم
مشکلی که دارم اینه وقتی دارم از require_once استفاده می کنم چطور متغیر رو تووی صفحات استفاده کنم
$safePages = array("profile", "post", "ask","comment");
$safeAction = array("edit", "send","delete","banned");
if(isset($_SERVER["REQUEST_URI"]))
{
$path = (substr($_SERVER['REQUEST_URI'], -1) == '/') ?
substr($_SERVER['REQUEST_URI'], 0, -1) :
$_SERVER['REQUEST_URI'];
$path = (substr($path, 0 , 1) == '/') ?
substr($path, 1) :
$path;
$urlParts = explode("/",$path);
}
else
{
echo "error";
}
if(isset($urlParts))
{
if(isset($urlParts[0]) && $urlParts[1] )
{
in_array($urlParts[0] ,$safePages) ? $page = $urlParts[0] : $page = "404";
in_array($urlParts[1] ,$safePages) ? $action = $urlParts[1] : $action = "none";
}
if(isset($urlParts[2]))
$id = $urlParts[2] ;
}
switch($page)
{
case "post":
require_once("post.php");
break;
case "profile":
require_once("profile.php");
break;
default:
require_once("home.php");
}
توی آدرس های قبلیم ادرسها به صورت زیر بودن
post.php?id=26&action=show
اونجا از متغیر get استفاده می کردم حالا اینجا چیکار کنم .راهی که به ذهنم میرسه اینه که همون متغیر get رو اینجا مقدار دهی کنم با مقداری که از ادرس میگیرم
if(isset($urlParts[2]))
$_GET['id'] = $urlParts[2] ;
}
switch($page)
دومین مشکلم با همین اینکلود کردن فایل های مختلف هست
تووی ادیتور فایل ها رو به صورت ajax آپلود و نمایش میداد ولی الان دوتا مشکل تووی فال php پیش اومده
یه شرط دارم که چک می کنه آیا تووی پوشه آپلود فایل موجود یا نه الان شرط همیشه مقدار true بر می گردونه .در صورتی که فایل توی پوشه وجود داره
(!file_exists("/uploads/img/".$director."/".$fileName))
یکی هم ادرس تصاویر هست که الان همون ادرس قبلیه ولی بعد از عملیات آپلود عکس رو نشون نمیده
خروجی برای ادیتور هم تقریبا همونی که بالا ذکر کردم فقط اسم فایل یا دایرکتوری ممکنه تغییر کنه
الان نه ادرس دهی مطلق نه نسبی (استفاده از dirname , / ) بهم کمکی نکرد تووی اکشن فرمها / رو که اضافه می کنم قبل از ادرس فایل مشکل فرمها حل میشه ولی تووی صفحات پردازشی فایل اینکلود میشه که الان شناسای نمیشن قبلا به شکل زیر بود
require_once("include/user.php");
اما الان
نه
require_once("/include/user.php");
و نه با dirname
کار میکنه البته حالت بالا برای فایل های css وjs خوبه ولی برای فایل های توودر تویی که خودم نوشتم مشکل دارم
وبسته به اینکه تووی چندمین پوشه هستم باید اینکلود کنم
require_once("/../../include/user.php");
ظاهرا برای ادیتور هم این ادرس مجازی حساب میشه و ادرس عکس شامل ادرس مجازی هم میشه که نباید اینجوری بشه
مشکلی که دارم اینه وقتی دارم از require_once استفاده می کنم چطور متغیر رو تووی صفحات استفاده کنم
$safePages = array("profile", "post", "ask","comment");
$safeAction = array("edit", "send","delete","banned");
if(isset($_SERVER["REQUEST_URI"]))
{
$path = (substr($_SERVER['REQUEST_URI'], -1) == '/') ?
substr($_SERVER['REQUEST_URI'], 0, -1) :
$_SERVER['REQUEST_URI'];
$path = (substr($path, 0 , 1) == '/') ?
substr($path, 1) :
$path;
$urlParts = explode("/",$path);
}
else
{
echo "error";
}
if(isset($urlParts))
{
if(isset($urlParts[0]) && $urlParts[1] )
{
in_array($urlParts[0] ,$safePages) ? $page = $urlParts[0] : $page = "404";
in_array($urlParts[1] ,$safePages) ? $action = $urlParts[1] : $action = "none";
}
if(isset($urlParts[2]))
$id = $urlParts[2] ;
}
switch($page)
{
case "post":
require_once("post.php");
break;
case "profile":
require_once("profile.php");
break;
default:
require_once("home.php");
}
توی آدرس های قبلیم ادرسها به صورت زیر بودن
post.php?id=26&action=show
اونجا از متغیر get استفاده می کردم حالا اینجا چیکار کنم .راهی که به ذهنم میرسه اینه که همون متغیر get رو اینجا مقدار دهی کنم با مقداری که از ادرس میگیرم
if(isset($urlParts[2]))
$_GET['id'] = $urlParts[2] ;
}
switch($page)
دومین مشکلم با همین اینکلود کردن فایل های مختلف هست
تووی ادیتور فایل ها رو به صورت ajax آپلود و نمایش میداد ولی الان دوتا مشکل تووی فال php پیش اومده
یه شرط دارم که چک می کنه آیا تووی پوشه آپلود فایل موجود یا نه الان شرط همیشه مقدار true بر می گردونه .در صورتی که فایل توی پوشه وجود داره
(!file_exists("/uploads/img/".$director."/".$fileName))
یکی هم ادرس تصاویر هست که الان همون ادرس قبلیه ولی بعد از عملیات آپلود عکس رو نشون نمیده
خروجی برای ادیتور هم تقریبا همونی که بالا ذکر کردم فقط اسم فایل یا دایرکتوری ممکنه تغییر کنه
الان نه ادرس دهی مطلق نه نسبی (استفاده از dirname , / ) بهم کمکی نکرد تووی اکشن فرمها / رو که اضافه می کنم قبل از ادرس فایل مشکل فرمها حل میشه ولی تووی صفحات پردازشی فایل اینکلود میشه که الان شناسای نمیشن قبلا به شکل زیر بود
require_once("include/user.php");
اما الان
نه
require_once("/include/user.php");
و نه با dirname
کار میکنه البته حالت بالا برای فایل های css وjs خوبه ولی برای فایل های توودر تویی که خودم نوشتم مشکل دارم
وبسته به اینکه تووی چندمین پوشه هستم باید اینکلود کنم
require_once("/../../include/user.php");
ظاهرا برای ادیتور هم این ادرس مجازی حساب میشه و ادرس عکس شامل ادرس مجازی هم میشه که نباید اینجوری بشه