PDA

View Full Version : define در php =» سوال ساده



parandweb
جمعه 18 دی 1394, 17:28 عصر
سلام دوستان به کد زیر توجه کنید:


define('DATAPAGESPATH', ROOTPATH. 'mp3/file/');



همانطور که می دانید در این دستور یک متغیر ثابت تعریف شده است که در سیستم مدیریت من فایلها رو در این پوشه ذخیره می کنه حال من با یه مشکل مواجه شدم اونم اینه که تعداد فایلها در این پوشه به بیش از ده هزار رسیده و می خوام هر فایل رو بر اساس اسم اولش در یک پوشه جدا بریزم از دوستان آیا راهی برای این مورد هست یعنی اون متغییر ثابت مثلا مثل آرایه کار کنه؟

لطفا یه راهی پیش روم بزارید :گریه:


از همتون بابت وقتی که برای خواندن گذاشتید سپاسگذارم :قلب:

0xEHSAN
جمعه 18 دی 1394, 22:02 عصر
درود دوست عزیز اینم خدمت شما




<?php define('DATAPAGESPATH','test/'); $files=scandir(DATAPAGESPATH); foreach ($files as $value) { if(basename($value)!='..'&&basename($value)!='.'&&!is_dir(DATAPAGESPATH.$value)){ $folder=$value[0]; if(!file_exists(DATAPAGESPATH.$folder)){ mkdir(DATAPAGESPATH.$folder,0744); } rename(DATAPAGESPATH.$value,DATAPAGESPATH.$folder. '/'.$value); } }?>

parandweb
یک شنبه 20 دی 1394, 00:28 صبح
ممنون دوست خوبم خواهش می کنم یه توضیح مختصری در رابطه با کدی که ارائه دادین بدهید تا متوجه عملکرد کد و همچنین یادگیری مباحث ان شوم ممنون:قلب:

0xEHSAN
یک شنبه 20 دی 1394, 06:24 صبح
بروی چشم دوست عزیز خوشحال میشم دانش اندکی رو دارم به اشتراک بذارم



define('DATAPAGESPATH','test/');

این خط یک ثابت رو تعریف میکنه که خودتون بسلامتی میدونید ثابت چیه عذر خواهی می کنم اینجوری توضیح میدم فرضم اینه که شما حداقل آشناییت رو با زبان php دارید




$files=scandir(DATAPAGESPATH);

این تابع لیست فایل های همون مسیر رو به صورت آرایه برمیگردونه




foreach ($files as $value)

اینو که حتما آشناییت دارید ولی برای احتیاط میگم کار این دستور اینه که اسامی فایل هایی رو که در مرحله قبل تو $files گرفتن تک تکی در $value برمیگردونه




basename($value)

این تابع هم نام فایل رو از مسیر فایل جدا میکنه



is_dir(DATAPAGESPATH.$value)
این دستور هم چک میکنه آیا فایلی که پیدا شده فولدر هست یا نه؟



if(basename($value)!='..'&&basename($value)!='.'&& !is_dir(DATAPAGESPATH.$value))
کل این دستور هم میگه اگر اسم فایل . یا .. نبود و یا فایل از نوع فولدر نبود اونوخت این ستورات رو اجرا کن




folder=$value[0];

این دستور هم حرف اول اسم فایل رو بر میگردونه




file_exists(DATAPAGESPATH.$folder)

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



if(!file_exists(DATAPAGESPATH.$folder))
و این دستور هم میگه اگه فولدر با نام حرف اول فایل وجود نداشت اونوخت :




mkdir(DATAPAGESPATH.$folder,0744);

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




rename(DATAPAGESPATH.$value,DATAPAGESPATH.$folder. '/'.$value);

اونوخت اونو جابجا کن به اون پوشه که



وسلام به همین سادگی و خوشمزگی

0xEHSAN
یک شنبه 20 دی 1394, 06:27 صبح
البته باید یک کار کوچولو دیگه هم بکنی و اونم اینکه اگه نیاز نیست کاربر مستقیم به فایل هات دسترسی پیدا کنه یا باید تو هر پوشه یک فایل index.php بسازی یا با فایروال و فایل htaccess اونو اجازه دسترسی مستقیم رو به کاربر ندی