کار با فایلها در php ، لیست فایلها را گرفتن ، مسیر را خواندن

saalek110

Well-Known Member
کار با فایلها در php ، لیست فایلها را گرفتن ، مسیر را خواندن
 
آخرین ویرایش:

saalek110

Well-Known Member
منظور من از کار با فایلها ، لیست کردن فایلها و خوندن فایلها است.
 

saalek110

Well-Known Member
کد زیر کارش لیست کردن فایلهای پوشه جاری است. و تاریخ ادیت را نگاه می کنه و مقایسه می کنه و جدید ترین فایل را پیدا می کنه.

کار دیگری که می کند اینه که یک آدرس را به اسم فایل اضافه می کند و آدرسی می سازد و لینکش را نمایش می دهد. قبلا این برنامه را ساختم. احتمالا مسیر پوشه را بهش می داده ، اون xtest اسم پوشه ای بوده که فایل لیسترگر داخلش است.

اسم فایلها اولش این طوری است:

کد:
./lister.php

که اون تابع str_replace اومده نقطه-ممیز قبل اسم فایل را حذف کرده.


PHP:
<?php
     $one_date=0;
        $file_wanted;
         $fileList = glob('./*');
     echo'<table border="1">';
foreach($fileList as $filename){//99
          echo'<tr><td>';
         if(is_file($filename)){//88
 $filename=  str_replace("./","",$filename);
    $thelink="http://nnnnnnnnnn/xtest/".$filename;
    echo $thelink."<br>";

echo '<a href="' . $thelink . '">'.$filename.'</a>';
echo"<br>";
 
            //---------------
             if (file_exists($filename)) {//777
echo "<h6>$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));  echo"</h6>";
              echo "filetime= ".filemtime($filename);  echo"<br>";
              if ( filemtime($filename)   >  $one_date  )
        {//   $one_date=filemtime($filename);
               $file_wanted=$filename;
                  }
              }//777
    echo'</td></tr>';
      }//88
      }//99
      echo'</table>';

                  echo"target - jadid tarin= ".$file_wanted;
                  echo"<br>"; echo"<br>"; echo"<br>";
                   echo "flag";
      $filename = 'uploads/logo.jpg';
      if (file_exists($filename)) {
   echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
                   }
       else{
           echo "<br>file not exist";
             }            
 

?>

در کد بالا ، فکر کنم اون لینک محلی که فایل اونجا قرار داره که دستی وارد شده ، کد برای به دست آوردنش داره.

در کد بالا ، من با اعداد 777 و 88 و 99 کروشه ها را علامت گذاری کردم.
در کد بالا ، در حلقه foreach ،‌ دو تا if باز شده.
اون if اولی تابع isfile گذاشته.
در if دومی تاریخ ادیت فایل را بدست آورده و نمایش داده.

در کدهای آخر ، در کد بالا ، یک فایلی در یک پوشه را در نظر گرفته یعنی پوشه uploads و فایل logo.jpg و گفته اگر اون فایل وجود داره تاریخ ادیت آن را بگو.
 
آخرین ویرایش:

saalek110

Well-Known Member
فایل لیست گیر و لینک ساز:

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


PHP:
<?php
         $fileList = glob('./*');
     echo'<table border="1">';
foreach($fileList as $filename){//99
          echo'<tr><td>';
         if(is_file($filename)){//88
         echo"<br>naame file hast: ".$filename;
 $filename=  str_replace("./","",$filename);

 
  $thelink="http://nnnnnnn/".$filename;
    echo "<br>".$thelink."<br>";

echo '<a href="' . $thelink . '">'.$filename.'</a>';
echo"<br>";
  
            //---------------
             if (file_exists($filename)) {//777

  
            
              }//777
    echo'</td></tr>';
      }//88
      }//99
      echo'</table>';

          
                
 

?>

دیگه کاری با زمان ادیت فایلها نداره ، و دنبال جدیدترین فایل نیست، و آخر کد هم که یک فایل خاص در پوشه خاص را بررسی می کرد حذف شد.

حالا ، لیست پوشه را نشون میده و لینک می سازه

برنامه مفیدی است..هر فایلی از اون پوشه را بخواهیم ، می توانیم اجرا کنیم.
جای اون nnnnn مسیر پوشه را بگذارید.مثلا این طوری:
کد:
  $thelink="http://example.com/folder_name/".$filename;
 
آخرین ویرایش:

saalek110

Well-Known Member
برنامه لیست گیر:

اگر باز بخواهیم کد را ساده تر کنیم این میشه:
PHP:
<?php
 
         $fileList = glob('./*');
     echo'<table border="1">';
foreach($fileList as $filename){//99
          echo'<tr><td>';
         if(is_file($filename)){//88
         echo"<br>naame file hast: ".$filename;
 $filename=  str_replace("./","",$filename);
         echo"<br>naame file hast: ".$filename;
 
echo"<br>";
    
            //---------------
             if (file_exists($filename)) {//777

    
              
              }//777
    echo'</td></tr>';
      }//88
      }//99
      echo'</table>';  

?>
که کارش دادن لیست پوشه است.

دیگه از این ساده تر ، فکر کنم دیگه نشه.
 

saalek110

Well-Known Member
در کد زیر نتیجه اجرا به شکل کامنت جلویش هست.


PHP:
echo $_SERVER['SERVER_NAME'];   // www.example.com

echo $_SERVER['PHP_SELF'] ; // /folder/filename

در دومی htdocs را ذکر نمی کند، فقط پوشه ای که فایل داخلش است و اسم فایل.البته هر چند تا پوشه تودرتو باشه اسم پوشه ها می آیند. ولی اسم پوشه htdocs را نمیگه. قبل اسم پوشه ها هم همان طور که در کد بالا می بینید یک ممیز هست.
اسم فایل همراه با پسوندش است مثلا my_file.php
منبع:
$_server

 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
echo __FILE__;

کد بالا از رگ و ریشه ، اطلاعات می دهد!!

کد:
home/vol2_1/example.com/user_name/naame sub domain/htdocs/folder_name/filename.pasvand
 

saalek110

Well-Known Member
لیست گیر فایلهایhtdocs: اگر فایل شما داخل یک پوشه باشد و نه پوشه در پوشه تودرتو.

کد زیر :
PHP:
<?php
    
         $fileList = glob('./../*');
     echo'<table border="1">';
foreach($fileList as $filename){//99
          echo'<tr><td>';
         if(is_file($filename)){//88
         echo"<br>naame file hast: ".$filename;
 $filename=  str_replace("./../","",$filename);
         echo"<br>naame file hast: ".$filename;
        
 
echo"<br>";
        
            //---------------
             if (file_exists($filename)) {//777

        
                  
              }//777
    echo'</td></tr>';
      }//88   
      }//99
      echo'</table>';

                
?>
در این خط:
PHP:
         $fileList = glob('./../*');
من گفتم یک پوشه برود بالا. تا به پوشه htdocs برسد. چون فایلم داخل یک پوشه بود ولی داخل پوشه های تودرتو نبود.
با کد بالا ، فایلهای پوشه htdocs را من لیست گرفتم.
 

saalek110

Well-Known Member
لیست گیر پوشه ها و فایلهای htdocs: وقتی فایل شما در یک پوشه باشد و نه در پوشه های تودرتو
PHP:
<?php
    
         $fileList = glob('./../*');
     echo'<table border="1">';
foreach($fileList as $filename){//99
          echo'<tr><td>';

         if(is_dir($filename)){//33
         echo"<br>naame folder hast: ".$filename;
 $filename=  str_replace("./../","",$filename);
          echo"<br>naame folder hast: ".$filename;



                   }//33
         if(is_file($filename)){//88
         echo"<br>naame file hast: ".$filename;
 $filename=  str_replace("./../","",$filename);
         echo"<br>naame file hast: ".$filename;
        
 
echo"<br>";
        
            //---------------
             if (file_exists($filename)) {//777

        
                  
              }//777
    echo'</td></tr>';
      }//88   
      }//99
      echo'</table>';

                
                      
      

?>
 

saalek110

Well-Known Member
با کد پست قبل ، نام پوشه ها و فایلهای پوشه htdocs را بدست آوردیم.

ولی داخل پوشه ها را نگاه نکردیم.
 

saalek110

Well-Known Member
PHP:
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n";
?>

کد:
/www/htdocs/inc
lib.inc.php
php
lib.inc




PHP:
<?php
print_r(pathinfo('/some/path/.test'));
?>

PHP:
Array
(
    [dirname] => /some/path
    [basename] => .test
    [extension] => test
    [filename] =>
)
 

saalek110

Well-Known Member
PHP:
<?php
dirname('.');    // Will return '.'.
dirname('/');    // Will return `\` on Windows and '/' on *nix systems.
dirname('\\');   // Will return `\` on Windows and '.' on *nix systems.
dirname('C:\\'); // Will return 'C:\' on Windows and '.' on *nix systems.
?>

من این طوری نوشتم:
PHP:
<?php
echo dirname('.');    // Will return '.'.
echo "<br>".dirname('/');    // Will return `\` on Windows and '/' on *nix systems.
echo "<br>".dirname('\\');   // Will return `\` on Windows and '.' on *nix systems.
echo "<br>".dirname('C:\\'); // Will return 'C:\' on Windows and '.' on *nix systems.
?>

این نتبجه اجرا بود:
کد:
.
/
.
.
یعنی دومی ممیز، باقی نقطه.
منطبق بر nix است.

 

saalek110

Well-Known Member
PHP:
<?php
echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo "2) ".basename("/etc/sudoers.d").PHP_EOL;
echo "3) ".basename("/etc/passwd").PHP_EOL;
echo "4) ".basename("/etc/").PHP_EOL;
echo "5) ".basename(".").PHP_EOL;
echo "6) ".basename("/");
?>

کد:
1) sudoers
2) sudoers.d
3) passwd
4) etc
5) .
6)

 

جدیدترین ارسال ها

بالا