آژانس هواپیماییexchanging

آموزش پي اچ پي قسمت دهم (كار با فايلها)

شروع موضوع توسط Mehdi ‏14 ژانویه 2006 در انجمن آموزش PHP به زبان فارسی

  1. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    كار با فايلها در پي اچ پي
    پيوست دادن كدهاي ديگر در كد خود مان:
    شما ميتونيد يك كد رو در يك فايل ديگر بنويسد و هرجا لازم شد در يك كد ديگر كه در فايل ديگري هم قرار داره اونو صدا بزنيد تابع Include(); اين امكان رو به شما ميده و باعث سهولت و كم حجم شدن صفحات ميشه .
    اين تابع فقط به يك آرگومان نياز داره و اون مسير فايل پي اچ پي هست كه ميخوايم به صفحمون پيوند بديم
    بزاريد با يك مثال راحتتر بيان كنم : فرض كنيد ما در فايل a.php يك كد داريم كه يك پيغام رو چاپ ميكنه
    حالا ما ميخوايم همين دستور در فايل اول رو در فايل b.php بدون نوشتن دوباره دستور و با دستور اينكلود بنويسيم كافيه بنويسيم
    PHP:
    // file name is b.php
    <?php
    include("a.php");
    ?>
    //will Print message in a.php
    البته چون در اينجا ما در فايل اولمون يك خط دستور داريم فرقي نميكنه ولي اگه چندين خط و چندين دستور باشه كار مارو خيلي راحت ميكنه چون فقط با يه خط كد ميتونيم همون دستورات رو صدا بزنيم .
    حتي ميتونيم يك مقدار رو با دستور اينكلود صدا بزنيم يا دستور اينكلود رو با توجه به يه شرط صدا بزنيم.
    يك مثال :
    PHP:
    <?php
    //this file name is a.php
    $ret=(4+4);
    return 
    $ret;
    ?>
    _______
    PHP:
    <?php
    //this file name is b.php
    $flag=true;
    if(
    $flag) {
    $resualt=include("a.php");
    print 
    " The Sum Of (4+4) Is $resualt";
    }
    ?>
    همونطور كه ديديد ميتونيم طوري تعريف كنيم كه اگه شرط درست نبود اصلا دستور اينكلود اجرا نشه و در خط بعدي مقدار فايل a.php رو توي يه متغيير ديگه مينوسيسم و چاپ ميكنيم .
    خوب بهتر بود قبل از اينكه بقيه آموزش رو بگم اينارو ميدونستيد
    حالا ميرسيم به كار با فايل ها :
    اولين تابعي كه ميخوايم بررسي كنيم تابع چك كردن وجود يك فايل هست !
    به اين مثال توجه كنيد :
    PHP:
    <?php
    if (file_exists("a.php"))
    print 
    "The File Exists";
    ?>
    حتي ميتونيد با تابع ديگري بفهميد مسير داده شده يك فايل هست يا يك دايركتوري
    PHP:
    //Check if it's a file
    <?php
    if(is_file("a.php")
    print
    "yes this is file";
    ?>
    /*-----------------------------*/
    //Check if Current Path is a dir
    <?php
    if(is_dir("/tmp"))
    print
    "/tmp is valid";
    ?>
    تابع ديگري كه وجود داره توابع is_readable , is_writeable , is_executeable هستن كه چك ميكنن ببينن فايل مورد نظر قابل خواندن و يا نوشتن ويا اجرا شدن هست يا مسير داده شده معتبر هست يا نه و يك مقدار از نوع بولين برميگردونه .
    تابع ديگري نيز وجود دارد كه سايز يك فايل رو برميگردونه خيلي ساده
    Print filesize("a.php");
    اين تابع سايز فايل شما رو برحسب بايت نمايش ميده
    تابع ديگري كه ميخوايم بررسي كنيم تابع fileatime(); ميباشد كه اخرين باري كه يك فايل دسترسي پيدا كرد رو به ما بر ميگردونه ما در مثال زير ميخوايم بدونيم فايل a.php در چه تاريخ و زماني براي اخرين بار دسترسي پيدا كرده است :
    PHP:
    <?php
    $lasttime
    =fileatime("a.php");
    print 
    "The File last time accessed  in ".date("D d M Y  g:i A",$lasttime).".";
    // Will Print Sat 14 jan 2006 10:30 Pm
    ?>
    تابع filemtime(); نيز مشابه fileatime(); هستش با اين تفاوت كه تاريخ و زمان اخرين باري كه فايل ويرايش شد رو برميگردونه . تابع filectime(); نيز وجود داره كه در سيستم هاي يونيك تاريخ تغيير يا ويرايش فايل رو برميگردونه ولي در پلت فرم هاي ديگه تاريخ بوجود آمدن فايل رو برميگردونه
    حالا ميرسيم به توابع كاربردي تر :
    تابع
    touch("file-path.txt");
    در صورتي كه فايلي با اين نام وجود نداشته باشد اين فايل رو ايجاد ميكنه ولي اگه وجود داشته باشه كاري نميكنه و فقط تاريخ ويرايش فايل تغيير پيدا ميكنه و فايل از بين نميره

    با تابع
    unlink("file-path.txt");
    ميتونيد يك فايل رو پاك كنيد
    نكته : در سيستم هاي يونيكس براي اينكه يك فايل را پاك يا ويرايش يا دست يابي پيدا كنيم لازم است كه دسترسي به فايل رو داده باشيد .
    بازكردن فايل قبل از خواندن و نوشتن :
    قبل از اينكه بتونيد يك فايل رو بخونيد يا محتوايش رو عوض كنيد به اين احتياج داريد كه اون فايل رو باز كنيد
    شما با اين دستور ميتونيد يك فايل رو براي خواندن اماده كنيد
    $f=fopen("file.txt",'r');
    و با اين دستور ميتونيد فايل رو براي نوشتن اماده كنيد
    $f=fopen("file.txt",'w');

    و براي اضافه كردن اطلاعات به يك فايل بايد از اين دستور استفاده كنيد (َAppend)

    $f=fopen("file.txt",'a');

    بهتره قبل از اينكه اقدام به ويرايش يا باز كردن يك فايل كنيد اون رو امتحان كنيد ببينيد اجازه باز شدن يا ويرايش شدن رو داره ؟
    PHP:
    If ($fp=fopen("file.txt",'w'))
    {
    // codehaie marboot be viraiesh file
    }
    يا ميتونيد بجاي كد بالا اينگونه عمل كنيد
    PHP:
    ($fp=fopen("file.txt",'w')) or die("Could Not open file");
    اگه دستور فوق مقدار درست رو برگردونه پيغام Could Not open file نشون داده نميشه در غير اينصورت نشون داده ميشه .
    همون طور كه متوجه شديد هر عملياتي كه بخوايم بر سر فايل اجرا كنيم بايد داخل :
    Fopen();

    // Code
    Fclose();

    انجام بديم.
    پي اچ پي امكانات زيادي رو براي خوندن يك فايل در اختيار ما ميزاره بعنوان مثال شما ميونيد يك فايل رو برحسب بايت يا برحسب لاين يا برحسب كاراكتر بخونيد .
    بزاريد ابتدا يك مثال رو نگاه كنيم و بعد توضيحات مربوطه رو بخونيم :
    PHP:
    <?php
    $filename 
    "test.txt";
    $fp fopen$filename"r" ) or die("Couldn't open $filename");
    while ( ! 
    feof$fp ) )
     {
     
    $line fgets$fp1024 );
     print 
    "$line<br>";
     }
     
    ?>
    با استفاده از دستور feof(); چك ميكنيم ببينم به اخر فايل رسيديم يا نه و اگه نه ميايم خط به خط با دستور وايل خط هاي فايل رو داخل يك متغيير ميريزيم و اونها رو چاپ ميكنيم . دستور fgets($fp,1024) اينكارو ميكنه و ميگه كه طول هر خط ميتونه تا 1024 بايت باشه .
    ما ميتونيم مقدار خاصي از فايلمون رو بخونيم مثلا 16 بايت يا 16 كاراكتر از فايلمون رو بخونيم
    PHP:
    <?php
    $filename 
    "test.txt";
    $fp fopen$filename"r" ) or die("Couldn't open $filename");
    while ( ! 
    feof$fp ) )
    {
    $chunk fread$fp16 );
    print 
    "$chunk<br>";
    }
    ?>

    همونطور كه ديديد با دستور fread( $fp, 16 ); ما 16 كاراكتر از فايلمون رو ميخونيم .
    شما ميتونيد با تابع fseek() جاي مشخصي از فايل رو بخونيد به مثال زير نگاه كنيد
    PHP:

    <?php
    $filename 
    "test.txt";
    $fp fopen$filename"r" ) or die("Couldn't open $filename");
    $fsize filesize($filename);
    $halfway = (int)( $fsize );
    fseek$fp$halfway );
    $chunk fread$fp, ($fsize − $halfway) );
    print 
    $chunk;
    ?>

     
    در كد بالا ما نيمه دوم يك فايل رو چاپ ميكنيم .همه چيز واضح و روشن هست ونيازي به توضيح نيست
    دستور fgetc(); مثل دستور fgets() ميباشد كه اگه در كد بالا كه خط به خط يك فايل رو اجرا ميكرد بزاريد كاراكتر به كاراكتر فايل رو نشون ميده .

    براي نوشتن يا اضافه كردن مقدار به يك فايل بايد ابتدا فايل رو بصورت
    Foper("file.txt",'w');
    Or
    Fopen("file.txt",'a');

    شما ميتونيد با تابع fwrite(); داخل يك فايل مقداري رو قرار بديد ، دقت كنيد كه در اينصورت محتواي فايل قبلي پاك ميشه و ميتونيد با تابع fputs(); يك مقدار رو به فايل مورد نظر اضافه كنيد .
    كار كردن با اين دستورها ساده هست با اين حال يك مثال ميارم :
    PHP:

    <?php
     $filename 
    "test.txt";
     
    $fp fopen$filename"w" ) or die("Couldn't open $filename");
     
    fwrite$fp"Hello world\n" );
     
    fclose$fp );
     print 
    "Appending to $filename<br>";
     
    $fp fopen$filename"a" ) or die("Couldn't open $filename");
     
    fputs$fp"And Hello To You\n" );
     
    fclose$fp );
     
    ?>

    حال ميرسيم به تابع تعيين دسترسي فايل شما ميتونيد با دستور flock(); براي يك فايل دسترسي هاي متفاوتي رو اعمال كنيد ليست شماره دسترسي ها به اين صورت است
    PHP:
    1    ---- Sharing   اجازه خواندن ميده ولي نوشتن خير
    2    
    ---- Exclusive  اجازه خواندن و نوشتن نميدهد 
    3    
    ---- Release   دسترسي هاي بالا را ازاد ميكند
    نوبتي هم باشه نوبت كار با پوشه هاست :
    شما ميتونيد با دستور mkdir() , rmdir() پوشه اي ايجاد يا پاك كنيد
    توابع ساده اي هستن و نيازي به مثال نيست
    يك مثال براي بيشتر آشنا شدن با اين نوع توابع ، ميخوايم فايل هاي داخل يك پوشه رو نمايش بديم
    PHP:

    <?php
    $dirname 
    "testdir";
    $dh opendir$dirname );
    while ( 
    gettype$file readdir$dh )) != boolean )
    {
    if ( 
    is_dir"$dirname/$file) )
    print 
    "(D)";
    print 
    "$file<br>";
    }
    closedir$dh );
    ?>

    ما با دستور opendir() پوشه مورد نظرمون رو در ابتدا باز ميكنيم
    سپس با دستور وايل مسير فايلهامون رو ميگيريم و چك ميكنيم اگه متعلق به اين دايركتوري بودن عبارت (D) و سپس اسم فايل و مسيرش رو چاپ ميكنيم
    در نهايت با دستور closedir() ميبنديم .
    دستور readdir مقدار درست يا نادرست رو برميگردونه و اين بر حسب اين هست كه هر عددي بجز صفر مقدارش ترو ميشه بزاريد با مثالي توضيج بدم فرض كنيم ما چهار تا فايل داريم
    كه بر حسب ايندكس ما ميايم اينارو داخل وايل چك ميكنيم و تا زماني كه ايندكس صفر نشده شرط وايل ما درست هست و ادامه ميده و هنگامي كه صفر شد از وايل خارج ميشه .
    -----

    مهدی صفری
     
  2. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    خوب اين قسمت خستم كرد و همونطور كه ميبينيد طولاني هم شد
    فقط نظرات باعث ميشه انگيزه برا ادامه پيدا كنم
     
  3. artin

    artin کاربر تازه وارد

    تاریخ عضویت:
    ‏19 می 2004
    نوشته ها:
    2,112
    تشکر شده:
    2
    عالی بود
    خسته نباشی !

    آقا یه چیزی این تاپیکهای که برای آموزش هست رو نمیشه sort کرد ؟ الان در همه
     
  4. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    صحبت ميكنم ببينم ميشه كاري كرد
     
  5. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
  6. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    ميدونيد چي منو ناراحت ميكنه؟[​IMG]
    وقتي ميام ميبينم كساني كه از مقاله استفاده ميكنن نظر نميزارن و اكثرا كسايي نظر ميزارن كه خودشون استادن تو پي اچ پي[​IMG]
    حالا كافيه يه مدت آموزش نزاري دادو هوار همه بره هوا[​IMG]
     
  7. appbannerkhuniresbanner
  8. iransbs

    iransbs کاربر تازه وارد

    تاریخ عضویت:
    ‏3 می 2005
    نوشته ها:
    471
    تشکر شده:
    0
    محل سکونت:
    ایران، مازندارن، ساری
    بنده خدا راست می گه
    همه می خوانن بعد یه نظر نمی دن خیلی ضد حاله
    ولی خداییش تازه دیدم وگرنه می گفتم دمت گرم
    البته ما جزو استاد پی اچ پی نیستیم همون گوشه کنار ها آبدار چی بودیم ما رو آوردن اینجا :D
     
  9. Shahed

    Shahed کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    31
    محل سکونت:
    mt.cgi
    مهدي جان عالي بود !
    سيو کردمش !!
     
  10. Romain_Gary

    Romain_Gary Registered User

    تاریخ عضویت:
    ‏23 فوریه 2005
    نوشته ها:
    1,711
    تشکر شده:
    5
    دمت گرم خیلی عالیه
     
  11. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
    مهدی جان درکت میکنم
    من وقتی قسمت دوم آموزش برنامه نویسی شیء گرا با PHP رو گذاشتم و دیدم که هیچ کس حتی یک post هم تو تاپیک نذاشت نمی دونی چه حالی بهم دست داد :( افسرده شدم :(
    به خودم گفتم دیگه هیچ آموزشی نمی زارم :(
    ولی بعد وقتی با میلاد صحبت کردم و قضیه رو گفتم یکم به من امید داد و من قسمت سوم رو هم گذاشتم

    هیچ کس درک نمی کنه که نظرات شما چقد در کسانی که آموزش گذاشتن تأثیر داره !!!!!!!!!!!
     
  12. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    خوب منم آموزش نمينويسم همه چي دستشون بياد
    بفهمن آموزش فارسي همه جا گير نمياد خيلي دوست داشتم فقط يه قسمتشو بشينن از رو كتاب بخونن ببينم چيزي حاليشون ميشه؟[​IMG]
     
  13. iransbs

    iransbs کاربر تازه وارد

    تاریخ عضویت:
    ‏3 می 2005
    نوشته ها:
    471
    تشکر شده:
    0
    محل سکونت:
    ایران، مازندارن، ساری
    غرور مساوی شکست
    مغرور نشو هیچ وقت

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

    ( روان پزشکی با قیمت ارزان :D )
     
  14. avajang.com .leftavajang.com.right
  15. baranmatin

    baranmatin کاربر تازه وارد

    تاریخ عضویت:
    ‏9 اکتبر 2005
    نوشته ها:
    45
    تشکر شده:
    0
    کارتون عالیه من که استفاده میکنم
    ممنون
    موفق و سربلند باشید
     
  16. mahanq&a

    mahanq&a Registered User

    تاریخ عضویت:
    ‏22 اکتبر 2005
    نوشته ها:
    183
    تشکر شده:
    0
    محل سکونت:
    گیلان
    سلام دوست من
    از آموزشی که دادی ممنونم.
    همونطور که میدونید بیشترین قدرت php در توابع پیش ساخته ش هست. بنابر این اگه شما یا یکی دیگه از دوستان بتونه اینتوابع رو که تعدادشون هم زیاد هست رو حتی به صورت یک خطی معرفی کنه. کمک بزرگی به برنامه نویسای تازه کار کرده. به امید موفقیت بیشتر.:cool:
     
  17. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    اين سايت توابع رو به شما معرفي ميكنه:D
    www.ir.php.net

    ----
    بزودي قسمت بعدي رو ميزارم يكم سرم شلوغه:(
     
  18. fireboy

    fireboy Registered User

    تاریخ عضویت:
    ‏17 ژوئن 2003
    نوشته ها:
    3,214
    تشکر شده:
    27
    محل سکونت:
    :: طهرون قديم ::
    خسته نباشي :)
    با اجازه منم يه نظر بدم.
    ميخواستم بگم اگر آموزش ها به همراه يه جزيي عكس هم باشه بهتر تر ميشه و از خشكي در مياد.
     
  19. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    جدا فكر ميكني خشكه؟؟
    به اين خوش رنگي و قشنگي؟
    خود كتاب رو ديدي؟ تنها قشنگيش اينه كه بعضي جاها متن رو بلد كرده بعضي جاها ايتاليك:blink:
     
  20. fireboy

    fireboy Registered User

    تاریخ عضویت:
    ‏17 ژوئن 2003
    نوشته ها:
    3,214
    تشکر شده:
    27
    محل سکونت:
    :: طهرون قديم ::
    البته اين چيزا كه براي برنامه نويسا زياد مهم نيست اما از لحاظ ظاهري , هميشه داشتن تصوير به همراه هر نوشته اي متن رو از حالت خشكي در مياره و اين در مورد همه چيز هست نه فقط برنامه نويسي.
    البته قصد جسارت نداشتم ها .
     
  21. m4hd!

    m4hd! Registered User

    تاریخ عضویت:
    ‏13 فوریه 2006
    نوشته ها:
    310
    تشکر شده:
    37
    محل سکونت:
    عودلاجان
    salam midonam kar kheili sakhtieh va khasteh bozorgi hamhast ama agar javab bedi behem lotf kardi
    mishe be man begi chejoori mishe ba php ye toolbar filter shekan sakht!??!?!?!?1man host va domain ro gereftam chand ta ham file peyda kardam ama nemidonam chi kar konam:(
     
  22. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    به اين برنامه ها ميگن پي اچ پي پراكسي
    كافيه فقط پيدا كني و اپلود كني همين
    فقط نگو لينك بده:D
    چون نميتونم