آموزش پرل ( مقدمات ) - قسمت اول

mehdvirus

Member
سلام

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

در اين قسمت ياد كيگيريد كه چجوري برنامه هاي سي جي اي خود رو نصب كنيد و اطلاعاتي از چگونگي اجرا شدن برنامه پيدا ميكنيد
CGI مخفف (Commin Getway Interface) هستش .
درواقع برنامه نويسي CGI كار طراحي و نوشتن رو برعهده داره كه معمولا از طريق خط فرمان يك صفحه وب شروع به كار ميكنه .مثل فرم ها در اچ تي ام ال .
فرم هاي اچ تي ام ال روشي است براي ارسال اطلاعات دروب و بخاطر سهولت تنظيمات كاربري يك روش متداول در اومده و شما ميتونيد
بسادگي با تگ هاي <form> , <input> چك باكس ، تكست باكس ؛ ليست باكس ، منو هاي كشويي و غيره بسازيد
يك برنامه سي جي آي مجبور نيست از طريق يه صفحه وب اجرا بشه ميتونه بعنوان نتيجه يك دستور SSI
بكار بره (Server Side Include) }در قسمت هاي بعدي كار كردن با اين دستورات رو ياد ميگيريم{

حتي ميتونيد يك برنامه سي جي اي رو از طريق خط فرمان هم اجرا كنيد اما ممكنه در اينصورت اونطوري كه شما ميخوايد عمل نكنه
سروري كه برنامه شما روي اون قرار داره براي برنامه شما يك اطلاعات خاصي رو ميفرسته و همينطور برنامه شما اطلاعاتي رو بر ميگردونه.
و قبل از اينكه برنامه شما شروع به كار كنه سرور يك محيط خاصي رو براي برنامه شما آماده ميكنه و اون محيط
درخواست هاي HTTP (HyperText Transfer Protocol) رو ترجمه ميكنه و در اختيار برنامه شما ميزاره و برنامه شما ميتونه براي اطلاعات
متغيير ها از اون استفاده كنه .

در مرحله بعد سرور تلاش ميكنه بفهمه نوع فايلي كه توسط برنامه صدا زده شده چيه و عكس العملي كه نسبت به نوع فايل نشون ميده متفاوت
خواهد بود يعني بر حسب فرمت فايل تصميم ميگيره كه اگه فايل حاوي فرمان هاي SSI بود دستورات رو به پرل بفرسته و اگر نه يه جواب
اچ تي تي پي ارسال كنه ، يك فايل اچ تي ام ال برگردونه .
فايل هاي SSI همانند فايل اچ تي ام ال هست و تنها تفاوتي كه دارند نوع برخورد سرور با اونهاست يعني سرور بايد خط به خط دنبال
فرمان هاي SSI بگرده و اگه يه فرمان اس اس آي پيدا كرد سعي ميكنه اونو اجرا كنه و محتوياتي كه از اجراي دستورات برگشت داده
ميشه در فايل اچ تي ام ال قرار ميگيره.فرمت فايل هاي اس اس اي shtml هستش .
بعد از اينكه سرور برنامه شما رو اجرا كرد برنامه شما اطلاعاتي رو به سرور ميده اطلاعات هدر و كمي تگ اچ تي ام ال رو برميگردونه اگه برنامه
شما اچ تي ام ال برگردونه يه كد مثل Content-Type: text/html
رو به سرور ميفرسته و همين اطلاعات برا سرور كافيه تا جواب هاي ازسالي رو تشخيص بده .

دايناميك بودن صفحات وب :

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

ولي چرا پرل؟

خوب نميشه اگه برناممون رو با يه زبوني بنويسيم كه احتياج به كامپايل نداره ، با دستورات لينك دهدنه عذاب آور درگير نشيم ،
خط به خط تفسير نشه دستوراتمون ، فقط بنويس و اون آماده استفاده هستش ، نظتون درباره يه زباني كه مجاني هست چيه ؟
زباني كه روي هر سيستم عاملي اجرا ميشه ويندوز يا يونيكس يا مك ، ويك زباني مثل سي كه قدرت بسياري داره ؟
زباني كه كلي مقاله و مطلب در باره اون وجود داره , اين يه تبليغات درباره پرل نبود ! نه من علاقه زيادي به پرل ندارم
ولي پرل سريعترين زبان در بين زبان هاي اسكريپتي هست اگه شنيديد كه پرل كند هست يا امنيتش پايينه رقيبانش بخاطر پايين آوردن محبوبيتش اينكارو كردن
. درواقع پرل برا اين ساخته شده كه با متن كار كنه و گزارش دهي كنه و كنترل فايل هارو داشته باشه .
علاوه بر اينها پرل يك ساختمان داده دوست داشتني به اسم associative arrayداره كه ميتونيد براي كنترل ديتابيس ازش استفاده كنيد .
نويسندگان پرل زماني كه پرل رو مينوشتن به فكر امنيتش هم بودن و به همين خاطر يك امكان جالب به پرل اضافه كردن به اسم data-flow tracing
اين امكان به شما اجازه ميده بفهميد كدوم قسمت از كدتون امنيت نداره و بعضي وقتها قبل از اينكه امنيت پايين بره به شما اطلاع ميده .
قسمت هاي ديگري هم در پرل وجود داره كه در اين سري آموزشي نميتونيم بگيم و درواقع ميخوايم برنامه نويسي سي جي آي رو در پرل ياد بگيريم .
اين سري آموزشي براي كساني كه تا به حال با پرل كار نكردن يا تازه برنامه نويسي رو يادگرفتن خيلي جالب خواهد بود چون هم پرل رو ياد خواهيد
گرفت هم سي و با يونيكس هم اشنا خواهيد شد .

پوشه هاي روي سرور شما :

در سرور شما دو نوع پوشه وجود خواهد داشت يكي DocumentRoot وServer Root كه شما قادر به تغيير ان نيستيد و اطلاعات برنامه شما از قبيل
مسير برنامه و كارهايي كه اجازه انجام دادن رو برنامتون داره در اينجا ذخيره ميشه در داخل اين پوشه دو دايركتوري ديگر هم وجود داره به اسم هاي log , conf
در داخل دايركتوري لاگ همه چيز ثبت ميشه اعم از دستورات اجرا شده توسط برنامه شما دستورات اس اس اي و كدهاي اچ تي ام ال كه باعث ايجاد خطا شده اند
.و اطلاعات مربوط به بازديدكنندگان سايت شما . و در داخل پوشه conf دو فايل به اسم هاي access.conf , srm.conf وجود داره كه در اكسس كانف مربوط ميشه
به تعيين دسترسي هاي مربوط به پوشه ها توجه كنيد كه هر تغييري كه در اين فايل ايجاد كنيد لازم هست كه سرورتون رو ريستارت كنيد
فايل srm.conf سرور رو بعد از اينكه راه اندازي شد كنترل ميكنه علاوه بر اون مسير Document Root رو هم داخلش داره و همينطور دستوراتي كه به سرور ميگه
كجا بايد اسكريپت هاي سي جي اي رو اجرا كنه
اين فايل براي فعال كردن دستورات اس اس اي بكار ميره و فرمت فايل هايي كه در مايم تايپ
(MIME TYPe ) تعريف نشده اند رو به سرور گزارش ميده
اما پوشه Document Root درواقع شما در اين قسمت كار خواهيد كرد و فايلهايتان رو در اين پوشه قرار خواهيد داد و ميتونيد هرچقدر كه دلتون ميخواد توش پوشه بسازيد

بعد از اينكه كار با پوشه ها رو ياد گرفتيد نوبت ميرسه به فايل ها :
سه نوع دسترسي داريم : خواندن ، نوشتن ، اجرا كردن
نكته : محتويات فايل سي جي اي ما هم از نوع متن و هم اجرا كردني خواهد بود .
براي تعيين دسترسي از دستور chmod (change file mode) استفاده ميكنيم
و اين دستور دو پارامتر ميگيره يكي شماره دسترسي و يكي نام فايلي كه ميخوايم دسترسي بديم بهش
شماره اي كه اختصاص ميديم هم از سه عدد تشكيل شده كه هركدوم براي تعيين دسترسي نوع كاربر هست اولين عدد مربوط به دسترسي ادمين هست
ومين عدد براي دسترسي گروه هست و سومين عدد براي همه كاربران هست . و هركدوم از عدد ها يا خواندي بودن يا نوشتني بودن يا اجرايي بودن رو مشخص ميكنه .
خواندي بودن عدد 4 است ، نوشتني بودن عدد 2 است و اجرايي بودن عدد 1 است .
نكته : اگه ميخوايد به يك فايل هم قابليت نوشتن بودن و هم خواندني بودن رو بديد بنويسيد 6 (4+2) و از عدد 7 براي دادن دسترسي كامل به همه استفاده كنيد.
براي مثال با دستور
Chmode 751 filename
شما ميتونيد ليستي از دستورات رو ببينيد

مفهوم عددها :

دسترسي خواندني، نوشتني،اجرايي براي هر سه گره 777
دسترسي كل براي ادمين و خواندني واجرايي براي گروه و كاربران 755
دسترسي نوشتني و خواندني براي ادمين و فقط خواندني براي گروه و كاربران 644
دسترسي خواندني و نوشتني براي همه ، سطح امنيت رو پايين مياره 666

نكته : منظور از گروه ها : Owner,Group,Web users
اگه ميخوايد به كاربران اجازه بتونن بخونن ولي به شرطي كه مسير فايل رو بدونن فقط دسترسي خواندني بديد در اين صورت ديگه نميتونن با دادن مسير پوشه
همه فايل هارو ببينن.

انواع سرور ها :


MS-Based Server
CERN Server
ncSA Server
The NetScape Server


كه در اين ميان سرور هاي ncSA سريعتر هستن و ميشه گفت اينترنت به همين سرور ها متكي است
:wink:
 
آخرین ویرایش:

mehdvirus

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

oxygenws

Active Member
چرا بیهوده؟!!
من دو-سه مشکل تو متن ات دیدم، اون این بود که پاراگراف بندی هات زیاد جالب نبود، یه جورایی white space های عمودی کم داشتی، این کار خوندن مطلبت رو سخت می کنه و افراد کمتری متمایل می شن بخونن.
مشکل دوم این بود که چیزی به عنوان "تیتر" یا "زیر تیتر" یا .. نداشتی، اینا خوندن رو خیلی راحت می کنه، موافق نیستی؟!
به هر حال، من مقداری از مطلبت رو خوندم، ولی چون سرم کمی شلوغه، هنوز نتونستم کامل بخونمش، ولی مطمئنا خواهم خوند :)

من همچنان از شما سپاسگذارم که اطلاعاتت رو به اشتراک می ذاری.
اگر احیانا از منابعی هم در نگارش این مطلبت استفاده کردی، ممنون خواهیم شد که اونها رو هم بنویسی و اگر خودت نوشتی، اگر کوچکترین لایسنسی برای نوشته هات بذاری، به پایمال نشدن "حقوق" خودت کمک کردی.

موفق و پیروز باشی.
 

mehdvirus

Member
CGI Programming In A Week
از اين كتاب نوشتم
خوب من اينا رو تو ورد نوشتم تو اونجا هم درشت كنم يا نكنم فرقي نميكنه
 

yaghi

Member
كار جالبيه !
منم از حالا شروع ميكنم به خوندن وانشاا... همراه با شما ميام جلو ولي مشكلي كه هست اينه كه الان اين مقاله رو مي خوانم 2 ما از تاريخ ارسالش ميگزره اما درس 2ش رو نفرستاديد ؟!!
 

mehdvirus

Member
كجا دوماه گزشته؟
هنوز يه ماه هم نشده
قبل اينكه شماره دو رو بدم اول بايد قسمت 12 پي اچ پي رو بزارم بعد:D
اينو ميزارم:D
خيلي هم سخته نوشتنش

كتاب زياد خوب ننوشته
 

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

بالا