close
دانلود فیلم
آموزش گام به گام زبان PHP

قبل از هر چيز يه نگاه كوتاه و جزئي بر تاريخچهPHP مي كنيم. نويسندهPHP اولين بار اين زبان رو براي كار هاي شخصي خودش و اثري برايResume كاريش كه بايد تحويل مي داده نوشته بوده. اولين بار اين زبان بصورت يكCGI در زبانPerl نوشته شده بود. ولي سروري كه روشPHP نصب شده بود يكسري مشكل در اجراي صفحات داشت. به همين دليلPHP رو دوباره بازنويسي كرد و با زبان‍C نوشت. در همين اثنا بعضي از كاربران سرور مربوطه هم شروع به كار با نسخه نوشته شده و درخواست به افزودنfeature هاي بيشتر كردند. اين روال ادامه پيدا كرد تا اولين نسخه جمع و جور شدهPHP رو همراه با راهنما ، Mailing-Listو FAQبيرون داد. اولين نام اين زبانPersonal Home Page Toolsبوده كه در آينده بهPersonal Home Page Construction Kit تغيير كرد. در همين مدت كه داشتPHP پامي گرفت نويسنده اون شروع به نوشتن يهCGI ديگه براي كاركردن با بانك هاي اطلاعاتي و ارسالSQL Query كرد. خوب بقيه تارخچه باشه براي بعد حالا به خودPHP بپردازيم.



قبل از هرچيز پيشنهاد مي كنم اديتور يا بهتر بگمIDE پرقدرتZend رو دريافت كنيد. واقعا كارتون رو در كد نويسي راحت ميكنه و همون جا هم مي تونيد اجراش كنيد.
خوب تا الان نصبPHP رو گفتيم و گفتيم كه 2 جورPHP رو ميشه نصب كرد. يكي بصورتCGI و ديگري بصورت يكModule براي سرورتون. مطلبي كه جاش بود ذكر كنم يه توضيح كوچكي براي فرق اين دو بود.زماني كهPHP بصورت يكCGI برروي سرور نصب ميشه، هرگاه كه سرور به فايل هايPHP بر مي خورهPHP رو اجرا ميكنه و اين فايل رو بهش ارسال ميكنه. ولي وقتي بصورتModuleبراي سرور نصب ميشه، PHP جزئي از خود سرور ميشه و زماني كه سرور شروع به كار ميكنه هميشه هست و منتظر صفحات و اجراشون هست. طبيعتا معلومه كه نصب بصورت Module بهتر از نصب بصورتCGI هست. چون اگر بصورتCGI نصب بشه با هر Request بايدPHP اجرا بشه و بعد هم بسته بشه! البته وقتيPHP بصورت Module نصب ميشه به اين معني نيست كه ازCGI ديگه نشه استفاده كرد. يه موقع ها ميشه كه ما لازم داريم بصورتCGI ازPHP استفاده كنيم. به عنوان مثال مي خواهيم سرور ما هر هفته توسط يكي از اسكريپت هاي نوشته شده ما از Database ما يكBackupبگيره. براي انجام اين منظور ما اسكريپت رو بصورت جداگانه وCGI اجراش مي كنيم. خيلي حاشيه رفتم، حالا بيايم سر اصل مطلب.
اسكريپت هاي نوشته شدهPHP همگي بايد در فايل هاي متني ساده ويا به عبارتي بهتر بصورتUNIX-Styleنوشته شوند. به عنوان مثال يك فايلPHP هيچ وقت نبايد باWord Pad ياMS-Word ساخته شود! چون موقع اجراPHP رو دچار مشكل ميكنه. در محيطWindows ساده ترين اديتور براي انجام اينكارNote-Pad هست. اگر از ويندوز 2000 ياXP استفاده مي كنيد كه چه بهتر چون مي تونيد به راحتي يك فايلPHP و با كدپيجUnicode ذخيره كنيد. فايل هايPHP معمولا از پسوندPHP. تشكيل مي شوند. زماني كهbrowser شما يك درخواست به سرور شما ميفرستد براي مشاهده يك فايلPHP، سرور شما فايل مربوطه رو بهPHP Engine ميفرسته تا فايل اجرا بشه. كارPHP Engine اجراي فايلPHPشما و ارسال نتيجه بصورتHTML بهbrowser شما هست. PHPيك زبان اسكريپت نويسي سمت سرور است. يعني اسكريپت شما در سرور اجرا شده و نتيجه براي شما ارسال مي شود.
دستوراتPHP رو ميشه به طرق مختلف نوشت. در اينجا به چند صورتش اشاره مي كنم.

بصورتSGML

< ?
...
? >
بصورتXML
< ? PHP
...
? >

بصورت اسكريپت هاي نوشته شده در فايل هايHTML

...

بصورت تگ هايASP، البته در اين حالت بايد در فايلPHP.ini تعريف كنيد كه اين حالت رو بشناسه. براي اينكارasp_tags =off رو بهon تغيير بديد. يادتون نرهApache ياهر سروري كه داريد روrestart كنيد يا تغييرات رو مشاهده كنيد. نحوه نوشتنASP Style هم اينگونه هست:

< %
...
% >

من توي نوشته هام فقط بصورتXML مي نويسم. مابين اين تگ ها هر چند تا دستور كه بخواهيم مي تونيم بنويسيم. هر دستوري كه تموم ميشه بايد بعدش اين علامت رو بزاريم ";" هرگاهEngine زبانPHP به اين ويرگول نقطه دار رسيد فرض ميكنه كه دستور شما تموم شده. اگر در آخر هر دستور خود اينو نزاريد برنامتون با مشكل برميخوره. در اينجا يك مثال مي زنم كه نمايانگر پايان يك دستور هست.

< ? PHP
echo ( 14 * 5);
? >

اين عبارت دقيقا مساوي اين عبارت هست:

< ?PHP
echo (
14
*
5
);
? >

PHPتا زماني كه به ";" نرسه دستور رو تموم شده فرض نميكنه. هردوي اين عبارات حاصل ضرب 14 در 5 رو برروي صفحه نشون مي دهند.
گاهي اوقات ميشه كه ما مي خواهيم خطي يا خطوطي رو در فايلPHP خود غير فعال كنيم تا اجرا نشن. يا گاهي اوقات هست كه ما مي خواهيم در كد هاي خود مطلبي رو بنويسيم. مثلا مي خواهيم بگيم اين كد فلان كار رو انجام ميده. اين كار رو مي توان به 3 صورت انجام داد. راحت ترين راه براي انجام اين كار گذاشتن 2 تاslash " //" در آغاز هر خط است. به عنوان مثال ما مي خواهيم يه نوشته روي صفحه نمايش بديم و در خود كد هم مي خواهيم توضيح بديم كه اين چيه:

< ? PHP
echo ( 14 * 5); // This will show the result of 14 times 5
? >

اگر // رو در اول خط ميزاشتيم، اين دستور ديگه اجرا نميشد و به اصطلاح Ignore ميشد. به جاي // مي توان از # هم استفاده كرد. ولي گاهي اوقات هست كه شما مي خواهيد چند خط رو غير فعال كنيد. براي انجام اين كار نوشته هارو داخل /* ...*/ قرار مي دهيم. به عنوان مثال هر اسكريپتي كه نوشته ميشه، در آغاز فايل يه توضيح كوتاهي از اسكريپت نوشته شده، مي نويسند.

< ?PHP
/* This script will encrypt your string
using function md5()*/
? >

به همين روال اگر شما يكسري كد جاي اين نوشته ها قرار بديد، كد هاي شماIgone ميشن و اجرا نميشن.
خوب حالا بپردازيم به نحوه نمايش عبارات برروي صفحه! نوشته هاي متني و عبارات متني رو ميشه به 3 مدل نوشت و نمايش داد. نحوه اول بصورتdouble quote هست. اگر شما نوشته هاي خود رو درون "..." قرار بدهيد، زمان اجرا، PHP متن شمارو تا تگ هايHTML و متغير هاي استفاده شما رو پيدا كنه و نتيجه رو برروي صفحه نشون بده. در زبانPHP نوشته هاي ما توسط دستورecho نمايش داده مي شوند. به اين مثال براي نمايش متن هايي كه درونdouble quote هستند دقت كنيد.

< ?PHP
echo ("salam");
? >

در اين مثال چون كلمهsalam بين تگ هاي[ b ] هست بصورتbold يا توپور نمايش داده ميشه. بنابراين نتيجهsalam مي باشد. در ادمه نوشته مي بينيد كه اگر يك متغير هم نامش دورن "..." قرار داده شده باشده، مقدار يا ارزش اون در صفحه نشون داده ميشه.
نحوه بعدي نمايش عبارات، بصورتsingle quote هست. يعني نوشته هاي ما ميان '...' قرار مي گيرند. وقتي نوشته هاي شما ميان '...' قرار بگيرند، ديگه توسطPHP مورد بررسي قرار داده نميشه كه آيا متغيري ميانشون هست يا نه:

< ?PHP
echo ('salam');
? >

حاصل اين دستور عبارتsalam درست مانند قبلي برروي صفحه است. ولي اگر ما متغيري در اين نوشته قرار بديم، مقدار و ارزشش نشون داده نميشه و فقط اسمش نشون داده ميشه. آخرين روش براي نمايش عبارات استفاده ازHere Document است كه من تا حالا زياد نديدم جايي استفاده داشته باشه. در اين روش هم اگر شما از دستوراتhtml استفاده كنيد، نوشته هاي شما برروي صفحه به همان صورت نشون داده مي شوند. به عنوان مثال:

< ?PHP
$hereText=<<
salam

khoobi?
chetori?
end_delimiter;
echo "
";
echo($hereText);
? >

در متغيرhereTex$ ما اين نوشته هارو ذخيره مي كنيم. هنگام نمايش برروي صفحه ما اين نتايج رو ميگيريم:

salam
khoobi?chetori?

كلا زياد ازHere Document استفاده نميشه. اعداد رو هم ميشه بصورت عددي كه هستند نمايش بديم و هم بصورت مقادير آن ها در سيستم هايOctal و Hexa. به عنوان مثال اين عبارات همگي عدد 110 رو نشون مي دهند:

< ? PHP
echo (110);
echo (0x6e);
echo (0377);
? >

براي نمايش اعدادHexadecimal بايد در شروع آن 0x و براي نمايش اعدادOctal بايد درشورع آنها يك صفر قرار دهيم.

براي تبديل اعداد از عدد معمولي به سيستمHexa از تابع()dechex و براي تبديل از عدد معمولي به سيستمOctal از تابع ()decoct استفاده مي كنيم. همين روال رو براي تبديل ازhexa بهdecimal و octalبهdecimal ميشه انجام داد با توابع()hexdec و()octdec.

در برنامه نويسي ما هميشه با مقداري به نام بولين(Boolean) سروكار داريم. متغيري كه از نوع بولين تعريف ميشه يا مقدارTrue ميگيره ياFalse. ميشه اينو به يه چراغ تشبيه كرد. يه چراغ يا خاموشه يا روشن. وقتي روشنه True هست وقتي هم كه خاموش هست False.
PHPهم مانند تمامي زبان هاي برنامه نويسي ديگه از انواع مختلف متغير ها پشتيباني مي كنه. در اين زبان متغير ها با علامت $ نامشون شروع ميشه. به عنوان مثال اگر ما بخواهيم متغيري داشته باشيم كه درونش نامي رو نگهداري كنيم مي تونيمname$ تعر&


عملگرهاي string:
اولين چيزي كه بايد بگم اين هست كه دستورecho از ادامه نوشته شما، نوشته اي رو نشون ميده. دقيقا همانند كد هايHTML. تا شما از
استفاده نكنيد، خط شما عوض نميشه و به خط بعدي نميره. echo هم كارش نمايش تمامي نوشته هاي شما همراه با تگ هايhtml شما هست. مهمترين عملگري كه براي رشته هاي متني(string ها) به كار ميره، كاراكتر نقطه (.) هست. اين كاراكتر رشته هاي متني رو به هم وصل ميكنه. به اين عملگرDot Operatorميگن. به عنوان مثال شما مي خواهيد هركس كه وارد سيستم كاربري سايت شما ميشه بهش يه خوش آمد گويي همراه نامش گفته بشه. فرض مي كنيم در متغير UserName$ نام كاربر قرار مي گيره و در مقدار ثابتWELCOME هم عبارت" ,Welcome to our site" قرار ميگيره. بنابر اين ما بايد عبارت خوش آمد رو به نام كاربر وصل كنيم. به مثال زير براي انجام اين كار دقت كنيد:

< ?PHP
define("WELCOME","Welcome to our site, ");
$UserName = "Milad";
echo WELCOME . $UserName;
? >

وقتي برنامه ما اجرا ميشه عبارتWelcome to our site, Milad برروي صفحه نمايش داده ميشه. بخاطر داشته باشيد كه مقدار هاي ثابت رو اگر در "..." قرار دهيد، PHP مانند متغير ها به آنها رجوع نميكنه. مثال بالا رو براي متغير ها هم صدق ميكنه، به اين معنا كه ما چند متغير داشته باشيم و همه رو بصورت رشته اي به يكديگر وصل كنيم. به عنوان مثال در برنامه ما اسم مردم در 3 تا متغير ثبت ميشه، بصورتFirstName$ وMiddleName$ و LastName$. حالا مي مي خواهيم متغيري درست كنيم به نامCompeltename$ و توش هر 3 اين متغير ها رو به يكديگر وصل كنيم:

< ?PHP
$FirstName = "Milad";
$MiddleName = "farid";
$LastName = "Sina";
/*---------------------*/
$CompleteName = $FirstName." ".$MiddleName." ".$LastName;
echo $CompleteName;
? >

در اينجا توسط نقطه، همون عملگرDot Operator اين 3 متغير رو به يكديگر وصل مي كنم. همچنين چون مي خوام بين كلمات فاصله باشه، فاصله هم به اين صورت" " بينشون مي دهم. خروجي برنامهMilad farid Sinaخواهد بود. اگر اون فاصله هارو نمي دادم و دستور رو مانند زير مي نوشتم در اين صورت خروجي برنامه عبارتMiladfaridSina بود.
$CompleteName = $FirstName . $MiddleName . $LastName;
حالا جاش هست بعضي از توابعي كه براي كارباString ها خيلي به كارمون مياد رو بگيم. در اين نوشته بهReqular Expression ها نمي پردازم چون جاش نيست، ولي در آينده بهشون مي رسيم.

تابع()substr:

string substr ( string string, int start [, int length])

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

نتيجه دستور

m4s.net (از حرف 4 به بعد در متغيرresult$ ذخيره مي شود) $result = substr("www.m4s.net",4);

m4s (از حرف 4 به بعد 3 حرف در متغيرresult$ دخيره مي شود) $result = substr("www.m4s.net",4,3);

 

تابع()strpos

int strpos ( string haystack, string needle [, int offset])

كار اين تابع دقيقا برعكس تابع()substr مي باشد. يعني شما يك عبارتي رو در متني جستجو مي كنيد و تابع به شماPosition اولين حرف رو ميده. اين تابع اولين نتيجه اي كه پيدا ميكنه رو نشون ميده بنابر اين اگر عين همون عبارت رو بازم داشته باشيد نشون نخواهد داد. اين تابع 3 تا پارامتر ميگيره. پارامتر اول رشته متن اوليه ما مي باشد. پارامتر دوم عبارتي هست كه در رشته متن پيدا ميشه. به خاطر داشته باشيد كه اگر عبارت پيدا نشد تابع مقدارFalse به ما برميگردونه! و اما پارامتر سوم براي شروع جستجو مي باشد. اگر عددي را مشخص نكنيد از اول رشته متني عبارتي جستجو ميشه و اگر عددي رو مشخص كنيد، از اونPosition به بعد جستجو انجام ميشه. به مثال هاي زير دقت كنيد

نتيجه دستور

عدد 4 در متغيرresult$ ذخيره مي شود. از حرف 4 به بعد عبارتm4s شروع مي شود$result = strpos("www.m4s.net","m4s");

عدد 3 در متغيرresult$ ذخيره مي شود. چون بعد از حرف 4، عبارت ما يافت شده$result = strpos("www.m4s.net",".");

عدد 7 در متغيرresult$ ذخيره مي شود. از حرف 5 به بعد شروع ميشه به جستجوي براي پيدا كردن".". Position نقطه بعد از حرف 7 مي باشد. $result = strpos("www.m4s.net",".",5);

 

تابع()trim
كار اين تابع حذف تمامي فواصل آغاز و پايان رشته متني مي باشد. به عنوان مثال اگر ما چنين رشته متني داشته باشيم" Milad "، اين تابع تمامي فاصله هاي آغاز و پايان رشته رو حذف ميكنه. به عنوان مثال:

< ?PHP
$name = " Milad ";
$name =trim($name);
? >

در اين مثال اول در متغيرname$ عبارت" Milad " رو ذخيره كرديم، سپس توسط تابع()trim تمامي فاصله هاي اضافه حذف كرديم و دوباره در متغير name$ ذخيرش كرديم.

توابع()char و()ord
تابع()char كدASCII حرفي را ميگرد و حرف مربوطه رو بر ميگردونه. و تابع()ord هم دقيقا بر عكس همين كار رو انجام ميده. يعني كه حرف رو ميگره و كد اسكي اون رو براي ما بر مي گردونه:

< ?PHP
echo ord("©");
echo chr(169);
? >

عبارت اول كد اسكي © كه همون 169 هست رو نشون ميده، و عبارت دوم هم حرف مربوطه به كد 169 كه همون علامت© رو نشون ميده.

تابع()strlen
كار اين تابع برگردوندن طول يك رشته متني مي باشد. به عنوان مثال اگر عبارت"M4S.Net" رو به اين تابع بدهيم، تابع به ما عدد 7 رو بر مي گردونه. يه مثال ديگه هم نوشتم:

< ?PHP
echo strlen("www.m4s.net");
? >

وقتي اين اسكريپت اجرا ميشه، عدد 11 خروجي برنامه مي باشد.

چند تا تابع ديگه هم هست كه جا داشت بگم ولي يكم مبحث رو پيچيده مي كرد، به ياري خدا در بخش ديگه اي از سات كه در نظر دارم، بهشون مي پردازم. خوب تا اينجاي كار يكسري از مسايل بسيار پايه ايPHP رو گفتيم. در نوشته هاي آينده بيشتر با اين زبان آشنا خواهيد شد. اگر هرگونه سوال يا مشكلي داشتيد در قسمت گفتگوي سايت در انجمنPHP مطرح كنيد. لطفا به عنوان پيغام شخصي نپرسيد، چون شايد سوال شما، سوال فرد ديگه هم باشه.

 

لینک کوتاه پست
مطالب مرتبط با پست جاری
  • نکات مهم
    1- لطفا نظر خود را با زبان فارسی بیان کنید
    2- رایتم نظرات اسپم و تبلیغی شما را تایید نمی کند
    3- لطفا نظرات شما بدون ابهام و واضح باشد
  • نام
    ایمیل (منتشر نمی‌شود) (لازم)
    وبسایت
    :):(;):D;)):X:?:P:*=((:O@};-:B/:):S
    نظر خصوصی
    مشخصات شما ذخیره شود ؟[حذف مشخصات] [شکلک ها]
    کد امنیتی
به کانال تلگرام سایت ما بپیوندید