PDA

View Full Version : پیدا کردن مسیر در php



wp-ammar
دوشنبه 16 فروردین 1395, 19:43 عصر
با سلام و خسته نباشید
یه cms کوچیک برای تست دارم مینویسم کد نویسی وردپرس رو انجام میدادم

خب من فایل های کانفینگ و ایندکس و چندتا فایل دیگ برای اجرای دستورات نوشتم تا اینجای کار خوب بوده

چیزی که من میخوام اینه که فایل
index.php تابع فایل های یک پوشه به اسم pages باشه :

if(is_file("pages/$page.php"))include("pages/$page.php");else include('pages/notpage.php');


مشکل من اینه که تابع رو براش تعریف نکردم مییشه یکی راهنمایی کنه با چه توابع ای میش درستش کرد

wp-ammar
دوشنبه 16 فروردین 1395, 21:25 عصر
دوستان میخوام به cms دستور بدم که فایل ها رو از پوشه pages دریافت کنه و اگر فایلی که در پوشه pages نبود ارور نوت پیچ یا 404 قرار بده میتونید کمک کنید؟

Farshid007
سه شنبه 17 فروردین 1395, 05:14 صبح
بنده دقیق منظور شمارو متوجه نشدم
اما
برای نمایش ارور 404 Not Found که دربسیاری از سایت دیده میشه از این روش استفاده نمیکنن!
روش معقول تعریف ارور 404 در فایل .htaccess هستش
کدشو دقیق یادم نیست ولی چیز پیچیده ای نیست سرچ کنید زیاد میاد

us1234
سه شنبه 17 فروردین 1395, 05:44 صبح
در همان کدخودتان به جای تابع is_file از file_exists استفاده کنید .

در خصوص روشی که پیش بردید اگر $page توسط کاربر وارد شود باگ خطرناکی دارد .

wp-ammar
سه شنبه 17 فروردین 1395, 08:21 صبح
سلام از پاسخگویی شما متشکرم!
بنده کدشو یاد دارم ولی من به شکل دیگه ای میخوام سایت با این ارور برخورد کنه ببینید اگه یکم واضح تر بخوام بگم
این پوشه بندی :

139884

و محتوی ایندکس:
139885

نمونه این کد تو و مسیر یابی در اسکریپت دی چت موجوده که در اینجا میتونید دانلود کنید
http://baran-web.ir/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A8%DA%A9%D8%A7%D9%BE-%D8%B7%D8%B1%D8%AD-%D8%A7%D8%B1%D8%A7/

من میخواهم فایل های که در پوشه pages هستن به عنوان فایل های اصلی قرار بدم که اگر سایت با فایل های جز این پوشه برخورد کنه ارور نات فاند بده در واقع میخوام به عنوان هسته برنامه از این پوشه دستور بگیره این پوشه هم در واقع فایل های که در مسیر های app وجود داره رو فراخونی میکنه و هم دستوراتو در این قسمت اجرا میکنه

wp-ammar
سه شنبه 17 فروردین 1395, 08:25 صبح
در همان کدخودتان به جای تابع is_file از file_exists استفاده کنید .

در خصوص روشی که پیش بردید اگر $page توسط کاربر وارد شود باگ خطرناکی دارد .

سلام ممنون از پاسخگویی شما
تست میکنم اطلاع میدم برای من تابع $page تعریف نشده هست در اصل
میخوام تابع $page جوری تعریف بشه که همه فایل ها داخل پوشه pages رو بتونه بخونه
مثال من در پوشه pages فایلی دارم به اسم test.php

که در حالت عادی به این مسیر میخوره
www.nameweb.ir/pages/test.php
که من میخوام
www.nameweb.ir/test.php

به این شکل باز شه البته فقط یک فایل در پوشه نیست و منظورم همه فایل های داخل پوشه هستش

wp-ammar
سه شنبه 17 فروردین 1395, 08:34 صبح
کسی اگر میتونه در تعریف تابع $page کمک کنه ممنون میشم

wp-ammar
سه شنبه 17 فروردین 1395, 14:28 عصر
خب اگ بخوام واضح تر بیان کنم بنده میخوام محتویات پوشه سیستم رو به عنوان فایل های اصلی قرار بدم مثال من فایلی در پوشه system دارم با اسم test.php خب مطمنا به این شکل باز خواهد شد

www.myweb.ir/system/test.php (http://www.myweb.ir/system/test.php)

بنده میخوام به صورت زیر باز بشه
www.myweb.ir/test.php (http://www.myweb.ir/test.php)
البته منظور من استفاده از دستور های include نیست در واقع میخوام به سیستم بفهمونم روت اصلی سایت رو در پوشه system جستجو کنه و تنها فایل test.php نیست بلکه همه فایل هایی که در پوشه system هست رو خودکار بخونه

www.myweb.ir/system/$page.php
www.myweb.ir/$page.php

در رابطه با اسکریپتی که قرار دادم اسکریپت دی چت
کاری که میخوام انجام بدم دقیقا در اسکریپت دی چت طبق گفته شما با تابع giu انجام شده

یعنی روت و یا ایندکس سایت رو در پوشه pages جستجو میکنه و فایل های pages هم مسیر theme رو فرخوانی میکنن
من الان قصد دارم ایندکس سایتم رو در پوشه system جستجو کنه و محتویات پوشه system هم پوشه app رو فراخوانی کنه

wp-ammar
سه شنبه 17 فروردین 1395, 20:12 عصر
خب من تونستم تا حدودی عملی کنم



<?php
function giu($re, $i=''){
global $giu;
if($giu == null){
global $site_url,$options;
if($options['url_type'] == 'rewrite'){
$i = strtolower($_SERVER['REQUEST_URI']);
if(!empty($options['rewtite_suffix'])){$i = explode($options['rewtite_suffix'], $i);$i = $i[0];}
$i = substr($i, 1);
$i = explode('?', $i);
$i = explode('/', $i[0]);
if($i[0] == ''){
$i[0] = 'index';
}elseif($i[0] == 'index'){
header::Go(url());exit();
}else{
if($i[0] != 'robots.txt' and $i[0] != 'sitemap.xml'){
$temp = explode('?', strtolower($_SERVER['REQUEST_URI']));
if(substr($temp[0],strlen($temp[0])-strlen($options['rewtite_suffix'])) != $options['rewtite_suffix']){header::go("http://{$_SERVER['HTTP_HOST']}/".implode('/', $i).$options['rewtite_suffix']);exit();}
}
}
$giu = $i;
}elseif($options['url_type'] == 'rewrite-i'){
if(!isset($_GET['i'])){
$i = strtolower($_SERVER['REQUEST_URI']);
$i = explode($options['rewtite_suffix'], $i);
$i = $i[0];
$i = substr($i, 1);
$i = explode('/', $i);
if($i[0] == ''){$i[0] = 'index';}
$giu = $i;
}else{
$i = strtolower($_GET['i']);
$i = explode('|', $i);
if($i[0] == ''){$i[0] = 'index';}
$giu = $i;
}
}elseif($options['url_type'] == 'i'){
if(isset($_GET['i'])){
$i = strtolower($_GET['i']);
$i = explode('|', $i);
if($i[0] == ''){$i[0] = 'index';}
$giu = $i;
}
}elseif($options['url_type'] == 'get'){
$giu = array_keys($_GET);
}
}
switch($re){
case('page'):return(isset($giu[0]) ? $giu[0] : 'index');break;
case('el2'):return(isset($giu[1]) ? $giu[1] : false);
case('el3'):return(isset($giu[2]) ? $giu[2] : false);
case('el4'):return(isset($giu[3]) ? $giu[3] : false);
case('el5'):return(isset($giu[4]) ? $giu[4] : false);
}
}

?>


index.php


<?php
date_default_timezone_set('Asia/Tehran');
session_start();
include("include/config.php");
include("include/function.php");
include("include/core.php");
$page = giu('page');


if(is_file("system/$page.php"))include("system/$page.php");else include('system/notpage.php');
?>

wp-ammar
سه شنبه 17 فروردین 1395, 20:17 عصر
مشکلی که هست اینه که همه فایل ها رو نمیخونه و فقط index رو میخونه