تشکر از diamound4u

http://diamound4u.persianblog.ir

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



wwwarow.gifمقدمه:
فرض کنيد ساعت 4:00 است و رئيس شما ساعت 4:30 به يک CGI نويس نياز دارد، و شما حتی نمی دونيد CGI چی هست! شما به جای درستی آمديد..
چيز نگران کننده ای وجود دارد ، با وجود اين شايد شما باز هم در درون خود نگران هستيد...
اگر شما توانايی خواندن از يک STDIN و نوشتن در STDOUT را داريد ، شما می توانيد نويسنده CGI scripts باشيد!
اگر شما اکنون يک برنامه نويس هستيد ، اين الفبای ساده می تواند در عرض چند دقيقه کليات و چارچوب CGI را به شما ياد دهد.
و اگر شما يک برنامه نويس نيستيد ، اين الفبا کمک چندانی به شما نمی کند – با عرض معذرت برويد و يک زبان برنامه نويسی ياد بگيريد و برگرديد مطمئن باشيد که موفق می شويد . موفق باشيد !
اين متن بيشتر در نوشتن اسکری پت های CGI برای راه اندازی و پيشبردن صفحات HTML و همچنين فرم های HTML در وب تمرکز، و از بعضی جزئيات چشم پوشی می کند ، با اين وجود می تواند به سرعت شما را راه بياندازد.( به عبارت ديگر در يک ساعت 

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

wwwarow.gif ساختمان يک اسکريپت CGI :

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

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

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


wwwarow.gifدريافت اطلاعات کاربری از ورودی

وقتی کاربر يک فرم را ثبت می کند ، اسکريپت شما اطلاعات فرم را به صورت يک سری ارزش يا اسم برای متغيير ها دريافت می کند.
اسم ها چيزهايی هستند که شما در تگ 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 برای فرم های کوچک مناسب است)


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

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

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

wwwarow.gif خوب، خسته نباشيد!!

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

حالا اگر عزيزی خواست با ويژوال بيسيك
CGI
بنوسيه، می تونه از روال
CGI4VB.BAS
استفاده كنه. می تونين آخرين نسخش رو به رايگان از اينجا بگيرين
/ 2 نظر / 10 بازدید
امير غفاری

با سلام ! يک سوال داشتم . می خواستم بدون با کمک CGI می توانيم صفحات aspx را به html تبديل کنيم ؟ نکته اساسی اينجاست که بايد صفحه html ای وجود داشته باشد کاربر به آن وارد شود اين صفحه با صفحه aspx مربوطه ارتباط بر قرار کند اطلاعات را از آن گرفته و در صفحه html اوليه نمايش دهد ؟

پارسا

شما یک تازی پرست هستید و باورهای شما خیانت به این کشور است مکتب شما مکتب پوسیده ای میباشد به امید اینکه شما به راه راست رهنمون شوید