PDA

View Full Version : سوال: چطور می تونم یه اسکریپت خوب برای خوندن محتویات پوشه ها بنویسم.



phpweb
پنج شنبه 28 بهمن 1389, 10:32 صبح
من می خوام یه اسکریپت بنویسم که بتونه محتویات درون پوشه های مختلف رو بخونه و نمایش بده.

مسیر پیش فرض admin/file/all هست که اسکریپت باید محتویات پوشه all و پوشه هایی که توی این پوشه هستن رو بخونه.

من هر کاری کردم نتونستم یه سیستم خوب طراحی کنم و مدام با توابع، is_file و is_dir به مشکل برخورد می کنم.

حدس می زنم که این مشکل بخاطر عدم آدرس دهی مناسب بوجود می یاد.

کدی که خودم نوشتم رو در ادامه قرار دادم. این کد کار نمی کنه. لطفا این کد رو اصلاح کنید تا بتونم بخوبی ازش استفاده کنم یا اینکه یکی از کدهای خودتون رو برام ارسال کنید.




$path1 = dirname($_SERVER[SCRIPT_NAME]);
$path='../..'."$path1".'/all/';
$opendir = opendir($path);
while ($readdir = readdir($opendir))
{
if(is_file($readdir))
{
echo '<div class="show_file">';
echo "$readdir".'<br />';
$size=filesize( $readdir)/1024;
$round = round($size,1);
echo "$round".'KB'.'<br />';
echo "<a href=\"$url\">URL</a>";
echo '</div>';
}
elseif(is_dir($readdir))
{
echo '<div class="show_file">';
$url="$path"."$readdir";
echo "<a href=\"$url\">URL</a>";
echo '</div>';
}
}

MMSHFE
شنبه 30 بهمن 1389, 09:14 صبح
با سلام، اين كد رو امتحان كنيد.
موفق و مؤيد باشيد.

phpweb
شنبه 30 بهمن 1389, 15:53 عصر
با سلام، اين كد رو امتحان كنيد.
موفق و مؤيد باشيد.

ظاهرا تنها مشکلی که توی اسکریپت من، عدم استفاده از تابع chdir بود.

می شه بگید توی کد زیر استفاده از تابع chdir قبل از تابع opendir چه دلیلی داره؟




function printdir($path, $level)
{
global $dirs;
global $files;
chdir($path);
$dir=opendir('.');
.
..
..

MMSHFE
یک شنبه 01 اسفند 1389, 07:08 صبح
با سلام، دوست گرامي وقتي يك فايل رو با استفاده از readdir ميخونيد، اگه با دستور echo مقدارش رو چاپ كنيد، خواهيد ديد كه فقط نام فايل ذكر ميشه. درنتيجه مسيردهي بصورت نسبي هست. بنابراين بايد با استفاده از chdir اول به اون پوشه منتقل بشين تا وقتي مسير نسبي ميدين، عمل كنه.
موفق و مؤيد باشيد.

phpweb
یک شنبه 01 اسفند 1389, 12:42 عصر
با سلام، دوست گرامي وقتي يك فايل رو با استفاده از readdir ميخونيد، اگه با دستور echo مقدارش رو چاپ كنيد، خواهيد ديد كه فقط نام فايل ذكر ميشه. درنتيجه مسيردهي بصورت نسبي هست. بنابراين بايد با استفاده از chdir اول به اون پوشه منتقل بشين تا وقتي مسير نسبي ميدين، عمل كنه.
موفق و مؤيد باشيد.

برای اینکه این تابع به خوبی کار کنه، باید بعد از تابعی مثل opendir, teaddir اجرا بشه؟ یا اینکه هر جا که از این تابع استفاده شد، بخوبی کارش رو انجام می ده؟

MMSHFE
یک شنبه 01 اسفند 1389, 14:08 عصر
با سلام، دوست گرامي تابع chdir فقط براي تغيير پوشه جاري هست. مثلاً فرض كنيد شما توي كدي كه در پوشه scripts قرار داره، به فايلها و محتويات پوشه files كه در كنار اين پوشه هست دسترسي داشته باشيد. يك راه اينه كه هر جا ميخواين به فايلي دسترسي داشته باشين، بنويسيد files/file.txt/.. يا files/pic.jpg/.. و يا هر چيزي شبيه اينها چون اگه فقط بنويسيد file.txt دنبال اين فايل توي پوشه جاري (يعني scritps) ميگرده. اما يك راه ساده تر اينه كه ابتداي كد بنويسيد:


chdir('../files');

حالا از اين به بعد فقط كافيه بگين file.txt يا pic.jpg و منظور، محتويات پوشه files هست نه پوشه scripts كه كد توش قرار داره چون دستور chdir باعث تغيير مسير جاري شده.
حالا توي مثالي كه گفتم، از اين تابع در كنار readdir و opendir و... استفاده شده اما معناش اين نيست كه اين تابع محدود به استفاده در كنار توابع مذكور باشه.
اميدوارم خوب توضيح داده باشم.
موفق و مؤيد باشيد.

pcbrain
یک شنبه 01 اسفند 1389, 19:42 عصر
سلام دوست من
اگه php بلدي اين مشكل منو بي زحمت حل كن
من ميخواستم يك صفحه اي كه پر از كلمه كليديه را توي سايت خودم لود كنم توي صفحه اول
ميخواستم يه جوري باشه كه هيچ كاربري اونو نبينه ولي گوگل ايندكس كنه
ديده بودم خيلي از سايت ها اين كارو ميكنند

شنيدم با دستورات iframe اين كارو انجام ميدند
كسي بلده

ادرس سايتم
www.djdownload.ir
ادرس اون صفحه
www.djdownload.ir/curl/index.php
در ضمن از وردپرس استفاده ميكنم

MMSHFE
چهارشنبه 04 اسفند 1389, 07:13 صبح
با سلام، دوست گرامي شما يك iframe توي صفحه بگذاريد و پهنا و ارتفاعش رو كم درنظر بگيرين و موقعيتش رو طوري تنظيم كنيد كه توي صفحه ديده نشه. مثال:


<IFRAME src="curl/index.php" style="position: absolute; top: -1px; left: -1px; width: 1px; height: 1px"/>
حالا يك سؤال: اين چه ربطي به PHP و ضمناً چه ارتباطي با اين بحث داشت؟
موفق و مؤيد باشيد.

wallfa
چهارشنبه 04 اسفند 1389, 18:23 عصر
بحث اول مبحث جالبی بوود اما در مورد مبحث دوم گوگل تشحیص میده این کار نکن

MMSHFE
پنج شنبه 05 اسفند 1389, 08:12 صبح
بحث اول مبحث جالبی بوود اما در مورد مبحث دوم گوگل تشحیص میده این کار نکن
با سلام، موافقم، درسته كه گوگل هست، ولي گاگول كه نيست! جديداً خيلي هوشمند شده و به راحتي اين روشها رو تشخيص ميده. البته من فقط از اين جهت كه ايشون راهنمايي خواسته بودن، روش كار رو گفتم.
موفق و مؤيد باشيد.