تبلیغات در پرشین تولز

PDA

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


Mehdi
01-15-2006, 12:59 AM
كار با فايلها در پي اچ پي
پيوست دادن كدهاي ديگر در كد خود مان:
شما ميتونيد يك كد رو در يك فايل ديگر بنويسد و هرجا لازم شد در يك كد ديگر كه در فايل ديگري هم قرار داره اونو صدا بزنيد تابع Include(); اين امكان رو به شما ميده و باعث سهولت و كم حجم شدن صفحات ميشه .
اين تابع فقط به يك آرگومان نياز داره و اون مسير فايل پي اچ پي هست كه ميخوايم به صفحمون پيوند بديم
بزاريد با يك مثال راحتتر بيان كنم : فرض كنيد ما در فايل a.php يك كد داريم كه يك پيغام رو چاپ ميكنه
حالا ما ميخوايم همين دستور در فايل اول رو در فايل b.php بدون نوشتن دوباره دستور و با دستور اينكلود بنويسيم كافيه بنويسيم

// file name is b.php
<?php
include("a.php");
?>
//will Print message in a.php

البته چون در اينجا ما در فايل اولمون يك خط دستور داريم فرقي نميكنه ولي اگه چندين خط و چندين دستور باشه كار مارو خيلي راحت ميكنه چون فقط با يه خط كد ميتونيم همون دستورات رو صدا بزنيم .
حتي ميتونيم يك مقدار رو با دستور اينكلود صدا بزنيم يا دستور اينكلود رو با توجه به يه شرط صدا بزنيم.
يك مثال :

<?php
//this file name is a.php
$ret=(4+4);
return $ret;
?>

_______

<?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
if (file_exists("a.php"))
print "The File Exists";
?>

حتي ميتونيد با تابع ديگري بفهميد مسير داده شده يك فايل هست يا يك دايركتوري

//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
$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');

بهتره قبل از اينكه اقدام به ويرايش يا باز كردن يك فايل كنيد اون رو امتحان كنيد ببينيد اجازه باز شدن يا ويرايش شدن رو داره ؟

If ($fp=fopen("file.txt",'w'))
{
// codehaie marboot be viraiesh file
}


يا ميتونيد بجاي كد بالا اينگونه عمل كنيد

($fp=fopen("file.txt",'w')) or die("Could Not open file");


اگه دستور فوق مقدار درست رو برگردونه پيغام Could Not open file نشون داده نميشه در غير اينصورت نشون داده ميشه .
همون طور كه متوجه شديد هر عملياتي كه بخوايم بر سر فايل اجرا كنيم بايد داخل :
Fopen();

// Code
Fclose();

انجام بديم.
پي اچ پي امكانات زيادي رو براي خوندن يك فايل در اختيار ما ميزاره بعنوان مثال شما ميونيد يك فايل رو برحسب بايت يا برحسب لاين يا برحسب كاراكتر بخونيد .
بزاريد ابتدا يك مثال رو نگاه كنيم و بعد توضيحات مربوطه رو بخونيم :

<?php
$filename = "test.txt";
$fp = fopen( $filename, "r" ) or die("Couldn't open $filename");
while ( ! feof( $fp ) )
{
$line = fgets( $fp, 1024 );
print "$line<br>";
}
?>

با استفاده از دستور feof(); چك ميكنيم ببينم به اخر فايل رسيديم يا نه و اگه نه ميايم خط به خط با دستور وايل خط هاي فايل رو داخل يك متغيير ميريزيم و اونها رو چاپ ميكنيم . دستور fgets($fp,1024) اينكارو ميكنه و ميگه كه طول هر خط ميتونه تا 1024 بايت باشه .
ما ميتونيم مقدار خاصي از فايلمون رو بخونيم مثلا 16 بايت يا 16 كاراكتر از فايلمون رو بخونيم

<?php
$filename = "test.txt";
$fp = fopen( $filename, "r" ) or die("Couldn't open $filename");
while ( ! feof( $fp ) )
{
$chunk = fread( $fp, 16 );
print "$chunk<br>";
}
?>



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


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



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

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

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


<?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(); براي يك فايل دسترسي هاي متفاوتي رو اعمال كنيد ليست شماره دسترسي ها به اين صورت است

1 ---- Sharing  اجازه خواندن ميده ولي نوشتن خير
2 ---- Exclusive  اجازه خواندن و نوشتن نميدهد
3 ---- Release  دسترسي هاي بالا را ازاد ميكند

نوبتي هم باشه نوبت كار با پوشه هاست :
شما ميتونيد با دستور mkdir() , rmdir() پوشه اي ايجاد يا پاك كنيد
توابع ساده اي هستن و نيازي به مثال نيست
يك مثال براي بيشتر آشنا شدن با اين نوع توابع ، ميخوايم فايل هاي داخل يك پوشه رو نمايش بديم


<?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 مقدار درست يا نادرست رو برميگردونه و اين بر حسب اين هست كه هر عددي بجز صفر مقدارش ترو ميشه بزاريد با مثالي توضيج بدم فرض كنيم ما چهار تا فايل داريم
كه بر حسب ايندكس ما ميايم اينارو داخل وايل چك ميكنيم و تا زماني كه ايندكس صفر نشده شرط وايل ما درست هست و ادامه ميده و هنگامي كه صفر شد از وايل خارج ميشه .
-----

مهدی صفری

Mehdi
01-15-2006, 01:02 AM
خوب اين قسمت خستم كرد و همونطور كه ميبينيد طولاني هم شد
فقط نظرات باعث ميشه انگيزه برا ادامه پيدا كنم

artin
01-15-2006, 03:35 AM
عالی بود
خسته نباشی !

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

Mehdi
01-15-2006, 12:37 PM
صحبت ميكنم ببينم ميشه كاري كرد

Parsa_361
01-15-2006, 01:07 PM
ایول :D
کارت درسته !

Mehdi
01-16-2006, 07:02 PM
ميدونيد چي منو ناراحت ميكنه؟http://www.opera.5gigs.com/smiles/yahoo/20.gif
وقتي ميام ميبينم كساني كه از مقاله استفاده ميكنن نظر نميزارن و اكثرا كسايي نظر ميزارن كه خودشون استادن تو پي اچ پيhttp://www.opera.5gigs.com/smiles/yahoo/8.gif
حالا كافيه يه مدت آموزش نزاري دادو هوار همه بره هواhttp://www.opera.5gigs.com/smiles/yahoo/47.gif

iransbs
01-16-2006, 10:05 PM
بنده خدا راست می گه
همه می خوانن بعد یه نظر نمی دن خیلی ضد حاله
ولی خداییش تازه دیدم وگرنه می گفتم دمت گرم
البته ما جزو استاد پی اچ پی نیستیم همون گوشه کنار ها آبدار چی بودیم ما رو آوردن اینجا :D

Shahed
01-17-2006, 12:24 AM
مهدي جان عالي بود !
سيو کردمش !!

Romain_Gary
01-17-2006, 11:08 AM
دمت گرم خیلی عالیه

Parsa_361
01-17-2006, 07:01 PM
ميدونيد چي منو ناراحت ميكنه؟http://www.opera.5gigs.com/smiles/yahoo/20.gif
وقتي ميام ميبينم كساني كه از مقاله استفاده ميكنن نظر نميزارن و اكثرا كسايي نظر ميزارن كه خودشون استادن تو پي اچ پيhttp://www.opera.5gigs.com/smiles/yahoo/8.gif
حالا كافيه يه مدت آموزش نزاري دادو هوار همه بره هواhttp://www.opera.5gigs.com/smiles/yahoo/47.gif
مهدی جان درکت میکنم
من وقتی قسمت دوم آموزش برنامه نویسی شیء گرا با PHP رو گذاشتم و دیدم که هیچ کس حتی یک post هم تو تاپیک نذاشت نمی دونی چه حالی بهم دست داد :( افسرده شدم :(
به خودم گفتم دیگه هیچ آموزشی نمی زارم :(
ولی بعد وقتی با میلاد صحبت کردم و قضیه رو گفتم یکم به من امید داد و من قسمت سوم رو هم گذاشتم

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

Mehdi
01-17-2006, 09:48 PM
خوب منم آموزش نمينويسم همه چي دستشون بياد
بفهمن آموزش فارسي همه جا گير نمياد خيلي دوست داشتم فقط يه قسمتشو بشينن از رو كتاب بخونن ببينم چيزي حاليشون ميشه؟http://www.opera.5gigs.com/smiles/yahoo/45.gif

iransbs
01-19-2006, 05:03 PM
غرور مساوی شکست
مغرور نشو هیچ وقت

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

( روان پزشکی با قیمت ارزان :D )

baranmatin
01-22-2006, 02:19 AM
کارتون عالیه من که استفاده میکنم
ممنون
موفق و سربلند باشید

mahanq&a
01-22-2006, 10:44 AM
سلام دوست من
از آموزشی که دادی ممنونم.
همونطور که میدونید بیشترین قدرت php در توابع پیش ساخته ش هست. بنابر این اگه شما یا یکی دیگه از دوستان بتونه اینتوابع رو که تعدادشون هم زیاد هست رو حتی به صورت یک خطی معرفی کنه. کمک بزرگی به برنامه نویسای تازه کار کرده. به امید موفقیت بیشتر.:cool:

Mehdi
02-11-2006, 10:48 AM
اين سايت توابع رو به شما معرفي ميكنه:D
www.ir.php.net

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

fireboy
02-11-2006, 02:09 PM
خسته نباشي :)
با اجازه منم يه نظر بدم.
ميخواستم بگم اگر آموزش ها به همراه يه جزيي عكس هم باشه بهتر تر ميشه و از خشكي در مياد.

Mehdi
02-11-2006, 11:08 PM
جدا فكر ميكني خشكه؟؟
به اين خوش رنگي و قشنگي؟
خود كتاب رو ديدي؟ تنها قشنگيش اينه كه بعضي جاها متن رو بلد كرده بعضي جاها ايتاليك:blink:

fireboy
02-12-2006, 03:54 PM
البته اين چيزا كه براي برنامه نويسا زياد مهم نيست اما از لحاظ ظاهري , هميشه داشتن تصوير به همراه هر نوشته اي متن رو از حالت خشكي در مياره و اين در مورد همه چيز هست نه فقط برنامه نويسي.
البته قصد جسارت نداشتم ها .

zaghar64
02-13-2006, 01:41 PM
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:(

Mehdi
02-13-2006, 06:05 PM
به اين برنامه ها ميگن پي اچ پي پراكسي
كافيه فقط پيدا كني و اپلود كني همين
فقط نگو لينك بده:D
چون نميتونم

ooghry
02-28-2006, 04:43 PM
حالا توی یک صفحه ی خاص چه طور میشه یک کلمرو پیدا کرد؟؟

Mehdi
03-01-2006, 11:30 AM
جوابتم که دادمD:
البته اینم بگم اون تابع مال سالار بود
---
اینم کپی رایت:D

nima178
03-02-2006, 11:37 PM
خوب منم آموزش نمينويسم همه چي دستشون بياد
بفهمن آموزش فارسي همه جا گير نمياد خيلي دوست داشتم فقط يه قسمتشو بشينن از رو كتاب بخونن ببينم چيزي حاليشون ميشه؟
حاج مهدي دليل مهم ترش اينه كه
نمي خوايم تاپيكت خراب شه
بايد خودتو جاي بازديد كنند ها بزاري
اونا خيلي بيشتر حال مي كنن وقتي تاپيك فقط مطلب مفيده
نه تقدير تشكر
بهترين تقدير تشكر رضايت مشتري است(اينو مي توني دقيق حس كني از پي ام هايي كه برات مي ياد)
به هر صورت من تزا آمدم تو خط پي اچ پي
چون زورم به هساتاي گرون قيمت ويندوز نمي رسيد

mynobar
03-03-2006, 02:53 AM
خوب اين قسمت خستم كرد و همونطور كه ميبينيد طولاني هم شد
فقط نظرات باعث ميشه انگيزه برا ادامه پيدا كنم
خسته نباشی همشهری ،
دمت گرم ،
همچنان در رکابت هستیم . :)

it2
08-27-2008, 02:31 AM
سلام خسته نباشيد :
شرمنده مزاحم شدم ولي چه كنم كه كارم بد جور گيره
گره فقط به دست شما باز ميشه آقا مهدي
واقعيتش به اين پست اومدم واسه يه سوال ولي تا اين آموزش رو ديدم دلم نيومد نخونم . در واقع همچين گرم اين آ'موزش بودم كه سوال خودم رو يادم رفت . فقط در يه كلام ( معلمي كار انبياست )

راستش واسه يه قسمت سايت پروژه پايان دورم يه برنامه هفتگي نياز دارم كه با PHP & MYSQL بايد باشه .
برنامه هفتگيش بايد شبيه فايل html كه ضميمه كردم باشه كه قابليت به روز شدن رو هم داشته باشه
خودم كه نتونستم درستش كنم .
اگه لطف كنيد كمكم كنيد ممنون ميشم .
vafa2ms@gmail.com
امام رضا پشت و پناهتان ..
سعيد . نيشابور
بايد مثل طرح زير باشه 7*8
Time شنبه يكشنبه دوشنبه سه شنبه چهارشنبه پنجشنبه جمعه
8-10
10-12
12-14
14-16
16-18