سفارش تبلیغ
صبا ویژن
[ و طلحه و زبیر بدو گفتند با تو بیعت مى‏کنیم به شرط آنکه ما را در خلافت شریک کنى ، فرمود : ] نه ، لیکن شما شریکید در نیرو بخشیدن و یارى از شما خواستن ، و دو یارید به هنگام ناتوانى و به سختى درماندن . [نهج البلاغه]
 
پنج شنبه 85 دی 14 , ساعت 3:35 عصر

http://diamound4u.persianblog.com

امروز تو این وبلاگ یه مطلب خوب دیدم گفتم این ریختی ازش تشکر کنم



 مقدمه:
فرض کنید ساعت 4:00 است و رئیس شما ساعت 4:30 به یک CGI نویس نیاز دارد، و شما حتی نمی دونید CGI چی هست! شما به جای درستی آمدید..
چیز نگران کننده ای وجود دارد ، با وجود این شاید شما باز هم در درون خود نگران هستید...
اگر شما توانایی خواندن از یک STDIN و نوشتن در STDOUT را دارید ، شما می توانید نویسنده CGI scripts باشید!
اگر شما اکنون یک برنامه نویس هستید ، این الفبای ساده می تواند در عرض چند دقیقه کلیات و چارچوب CGI را به شما یاد دهد.

و اگر شما یک برنامه نویس نیستید ، این الفبا کمک چندانی به شما نمی کند – با عرض معذرت بروید و یک زبان برنامه نویسی یاد بگیرید و برگردید مطمئن باشید که موفق می شوید . موفق باشید !

این متن بیشتر در نوشتن اسکری پت های CGI برای راه اندازی و پیشبردن صفحات HTML و همچنین فرم های HTML در وب تمرکز، و از بعضی جزئیات چشم پوشی می کند ، با این وجود می تواند به سرعت شما را راه بیاندازد.( به عبارت دیگر در یک ساعت 

CGI چیست ؟
CGI یک زبان برنامه نویسی نیست بلکه یک پروتکل ساده است می تواند برای ارتباط بین فرم های درون وب و همچنین برنامه شما بکار رود.
یک اسکریپت CGI می تواند به هر زبانی که قابلیت خواند از از یک STDIN و نوشتن در STDOUTو همچنین خواند و ایجاد کردن متغییر ها را دارد نوشته شود یا به طور کلی هر زبان برنامه نویسی ( شامل C , Perl و ...) 

ساختمان یک اسکریپت CGI :

در اینجا یک روال عادی برای پیکر بندی یک CGI اسکریپت توضیح داده میشود:

1) دریافت اطلاعات کاربری از ورودی
2) چه کاری باید با داده های ورودی انجام شود؟
3)نوشتن HTML برای نمایش خروجی

اولین و آخرین مرحله در زیر شرح داده میشود: 


دریافت اطلاعات کاربری از ورودی

وقتی کاربر یک فرم را ثبت می کند ، اسکریپت شما اطلاعات فرم را به صورت یک سری ارزش یا اسم برای متغییر ها دریافت می کند.
اسم ها چیزهایی هستند که شما در تگ INPUT ( یا تگ SELECT یا تگ TEXTAREA) مشخص می کنید و هر چیزی که کاربر تایپ می کند و یا انتخاب می کند به عنوان ارزش (value) محسوب می شود.( کاربر می تواند همراه فرم فایل هم ثبت کند ولی این قسمت شامل مبحث ما نمی شود.
این مجموعه اطلاعات که به دست شما می رسد ،یک رشته بلند هست که شما باید آن را تجزیه کنید.
این زیاد پیچیده نیست و روالهای بسیاری وجود دارد که این کار را برای شما انجام می دهد . چند نمونه در زیر آورده شده اند :
یکی در زبان پرل :
Here
یک نوع ساده تر در پرل : Here
و آخری در C : Here

برای CGI اسکریپت های آماده و نوشته شده می توانید به قسمت پرل CGI.pm و یا با دایرکتوری CGI در یاهو سر بزنید.

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

رشته بلند در یکی از فرمت های زیر است:
CODE

"name1=value1&name2=value2&name3=value3"
"name1=value1;name2=value2;name3=value3"


بنابراین فقط علامت های امپرسند و یا سمی کالن را جدا کنید و سپس به علامت مساوی بپردازید سپس دو کار باید با هر ارزش انجام بدید:
1) تمام علامت های + را به فضای خالی تبدیل کنید.
2) تمام کاراکتر های اسکی را که به صورت %xx است و xx عدد هگز کاراکتر در جدول اسکی است را به معادل خودشان تبدیل کنید. برای مثال : "%3d" to "=".
رشته اصلی به صورت URL-encoded تبدیل شده و برای استفاده از علائم مانند مساوی و .. توسط کاربر این کار ضروری است .
خوب، از کجا رشته بلند را پیدا کنیم؟
این بستگی به روش (method) HTTP دارد که درون فرم استفاده شده است که به دو صورت :
GET : در این روش رشته بلند در محدوده متغییر در حال استفاده است (QUERY_STRING)
POST : از طریق STDIN خوانده می شود .طول بایت های رشته را می گیرد و متغییر را می خواند.( CONTENT_LENGTH)
(در واقع POST برای مصارف عمومی و کلی استفاده می شود ولی GET برای فرم های کوچک مناسب است)


 جوابگویی به درخواست کاربر
قبل از هر چیز خط زیر را بنویسید:
Content-type: text/html

به علاوه یک خط خالی در STDOUT (صفحه خروجی) و بعد از آن کدهای HTML خود را در صفحه خروجی بنویسید ، این زمانی که اسکریپت شما به پایان برسد برای کاربر به نمایش در می آید. و این تمام چیزی است که درون آن وجود دارد!
بله، شما به راحتی و با سرعت کد HTML خود را به دست می آورید و این اصلاً سخت نیست. در حقیقت HTML در همین راه طراحی شده تا بتواند به سادگی STDOUT را طراحی کند.

اگر می خواهید خروجی غیر از HTML باشد به آموزش بعدی که می نویسم و در آن نکات CGI رو شرح دادم مراجعه کنید.

 خوب، خسته نباشید!!

دیدید چقدر ساده بود؟ اگر شما هنوز من را باور نداری بروید و یک اسکریپت بنویسید ، و اطمینان حاصل کنید که در جای درست در سرور قرار دادید و آن را قابل اجرا کنید.(CHMOD)
و به آموزش بعدی که می نویسم و در آن نکات CGI رو شرح دادم مراجعه کنید.
قبل از این که اسکریپت های زیادی بنویسید قسمت امنیت اسکریپت ها رادر مقاله بعدی بخوانید.
و لینک های آموزشی زیر که به طور کامل به شرح cgi پرداختند:
http://hoohoo.ncsa.uiuc.edu/cgi/
http://www.w3.org/
http://www.w3.org/CGI/

حالا اگر عزیزی خواست با ویژوال بیسیک
CGI
بنوسیه، می تونه از روال
CGI4VB.BAS
استفاده کنه. می تونین آخرین نسخش رو به رایگان از اینجا بگیرین


لیست کل یادداشت های این وبلاگ