مرجع متغیرهای محیطی رابط دروازه مشترک (CGI)

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


در ابتدا ، وب اکثراً سیستمی برای ارسال و دریافت درخواست های HTTP بود. یک مرورگر از شما درخواست می کند که یک صفحه با درخواست HTTP ارسال شود و سرور صفحه را به مرورگر ارسال کند. این صفحه ممکن است مواردی مانند ارجاع به تصاویری باشد که مرورگر با درخواست HTTP بیشتر درخواست می کند. خیلی ساده بود اما اجازه نمی دهد پردازش توسط سرور انجام شود. در نتیجه ، رابط مشترک دروازه (CGI) توسعه داده شد.

با CGI ، یک مرورگر می تواند یک درخواست را با ورودی به سرور ارسال کند ، و یک برنامه CGI یک صفحه وب را پردازش می کند که بر اساس ورودی های ارسال شده پردازش می شود. یک مثال اولیه بگیرید: یک برنامه CGI که ​​اطلاعات مربوط به ترکیبات شیمیایی را برگرداند. مرورگر درخواستی را به برنامه CGI با ترکیبی که داده مورد نظر کاربر می خواست ارسال می کند ، و این صفحه می تواند به صفحه ای پر از اطلاعات مربوط به آن ترکیب برگردد..

سرانجام زبانهای برنامه نویسی سرور مانند PHP و Python ایجاد شدند ، اما در آن روزها CGI همه چیز در آنجا بود. با این حال ، CGI توانایی منحصر به فردی داشت: مستقل از زبان بود. اگر سرور می توانست برنامه را اجرا کند ، CGI می توانست آن را اداره کند. بنابراین می تواند یک برنامه کامپایل شده C ++ یا یک اسکریپت Perl تفسیر شده یا هر چیز دیگری باشد.

امروز ، برنامه های CGI بیشتر میراث هستند. اما مواقعی وجود دارد که هنوز هم بهترین راه حل یک مشکل است. بیایید نگاهی دقیق تر به متغیرهای محیطی که ستون فقرات سیستم هستند.

متغیرها

اگر برنامه نویسی CGI را در نظر دارید ، متغیرهای زیر برای رسیدگی به درخواستهای مختلف سرور برای پردازش داده های فرم و در نتیجه برنامه های قدرتمند و چند منظوره بسیار مفید خواهند بود. برای دسترسی به این متغیرها ، باید یک ورودی از مجموعه ای از مقادیر ارجاع شده به محیط را بازیابی کنید. به عنوان مثال در پرل ، شما می توانید مقادیر موجود در آرایه $ ENV را با استفاده از کلیدهای متغیر محیط شبیه به موارد زیر بازیابی کنید:

$ ENV {$ env_var

در گزیده کد فوق ، env_var به یک کلید متغیر محیط یا رشته ای مانند SERVER_NAME اشاره می کند. سایر زبان های برنامه نویسی سیستم های خاص خود را برای مدیریت متغیرهای محیط دارند. مرجع زبان خاص خود را بررسی کنید.

متغیرهای CGI و آنچه انجام می دهند در اینجا آورده شده است:

AUTH_TYPE

برخی از سرورهای وب با استفاده از مجوز از دسترسی به اسکریپت های CGI محافظت می کنند. متغیر AUTH_TYPE به نوع مجوز که سرور برای تأیید کاربران از آن استفاده می کند ، اشاره دارد. به عنوان مثال ، یک مقدار ممکن برای این متغیر می تواند Basic باشد که به تأیید هویت Basic می پردازد. توجه داشته باشید که همه سرورها از مجوز پشتیبانی نمی کنند.

CONTENT_LENGTH

CONTENT_LENGTH طول محتوای تحویل داده شده از طریق درخواست را به عنوان تعداد بایت می دهد. اگر طول ناشناخته باشد ، متغیر روی -1 تنظیم می شود.

نوع محتوا

متغیر CONTENT_TYPE شامل نوع پرونده ای است که توسط درخواست بازگردانده می شود. به عنوان مثال ، در صورت درخواست یک صفحه وب ، متغیر CONTENT_TYPE روی متن / متن نوع MIME تنظیم می شود / html.

GATEWAY_INTERFACE

اگر می خواهید بدانید که از چه نسخه ای از مشخصات CGI سرور استفاده می کند ، می توانید از GATEWAY_INTERFACE پرس و جو کنید. این متغیر به شما اطمینان می دهد که از نسخه صحیح مشخصات و دستورات معتبر استفاده می کنید.

HTTP_ACCEPT

دقیقاً مانند CONTENT_TYPE داده یا نوع MIME تحویل داده شده را ارائه می دهد ، HTTP_ACCEPT تمام انواع MIME ممکن را که یک مشتری درخواست درخواست می کند ، لیست می کند. لیست انواع با کاما از هم جدا می شوند.

HTTP_USER_AGENT

HTTP_USER_AGENT نام برنامه ای را که مشتری برای ارسال درخواست از آن استفاده می کند ، می دهد. به عنوان مثال ، اگر کاربر اسکریپت CGI را از Mozilla Firefox اجرا کند ، HTTP_USER_AGENT نشان می دهد که کاربر درخواستی را از طریق Firefox به سرور وب انجام داده است..

PATH_INFO

متغیر PATH_INFO شامل اطلاعات اضافی است که پس از نام اسکریپت CGI دیده می شود. به عنوان مثال ، اگر www.placeholder.com/cgi-bin/hello.pl/index.html را اجرا کنید ، PATH_INFO برای این کاراکترهایی هستند که در این مثال به نام اسکریپت CGI یا /index.html آمده اند..

PATH_TRANSLATED

وقتی آدرس یک اسکریپت CGI را در یک مرورگر وب تایپ می کنید ، معمولاً مسیری مجازی را تایپ می کنید که در یک مکان فیزیکی روی سرور نقشه برداری می شود. به عنوان مثال ، اگر به http://www.somewebsite.com/cgi-bin/index.cgi بروید و از متغیر PATH_TRANSLATED پرس و جو کنید ، مسیر فیزیکی واقعی را دریافت خواهید کرد. اگر در سرور یونیکس مشترک هستید ، ممکن است /home/placeholder/public_html/cgi-bin/index.cgi.

کوپن میزبانی وب

به کیفیت میزبانی دسترسی CGI نیاز دارید?
GreenGeeks در تست های سرعت و عملکرد ما بسیار خوب به ثمر رسید. خوانندگان در حال حاضر می توانند تا 60٪ برنامه خود را پس انداز کنند. از این لینک تخفیف ویژه استفاده کنید
برای گرفتن معامله.

QUERY_STRING

معمول است که اطلاعات پرس و جو را که بعد از علامت سؤال به URL اضافه شده است ، مشاهده کنید. برای آدرس http://www.placeholder.com/cgi-bin/hello.cgi؟name=Leroy&تعجب = درست است ، درخواست QUERY_STRING به نام = لروی باز می گردد&تعجب = واقعی بازگردانده می شود.

REMOTE_ADDR

متغیر REMOTE_ADDR آدرس IP رایانه مشتری را درخواست می کند. در اصل ، REMOTE_ADDR REMOTE_HOST به یک آدرس IP برطرف شده است.

میزبان راه دور

سرورهای وب دائماً اتصالات و درخواستهای مشتری را می پذیرند. متغیر REMOTE_HOST به نام میزبان مشتری که درخواست را انجام می دهد اشاره دارد. به عنوان مثال ، اگر میزبان وب شما درخواستی را از webhost2.com بپذیرد ، REMOTE_HOST با webhost2.com جمع می شود.

REMOTE_IDENT

متغیر REMOTE_IDENT شناسه کاربر را که اسکریپت CGI را اجرا می کند ، ذخیره می کند. شناسه كاربر فقط در صورت اجراي فرآيند شناسايي ذخيره مي شود ، زيرا شناسه پاسخي را شامل مي شود كه نه تنها اطلاعات شناسه كاربر ، بلكه اسم OS كه اسكريپت را اجرا مي كند نيز باز مي گردد..

REMOTE_USER

پرس و جو از متغیر REMOTE_USER اطلاعات مربوط به نام کاربر موجودیتی را که درخواست می کند به شما ارائه می دهد. این تنها در صورت فعال بودن تأیید اعتبار معتبر است.

REQUEST_METHOD

REQUEST_METHOD نوع درخواست HTTP را تکمیل می کند که شامل مقادیری مانند GET ، POST و PUT می شود.

SCRIPT_NAME

اگر در عوض می خواهید مسیر مجازی این اسکریپت را اجرا کنید ، می توانید به سادگی از متغیر SCRIPT_NAME پرس و جو کنید. به عنوان مثال ، اگر اسکریپت http://www.placeholder.com/cgi-bin/ping.sh را اجرا کرده و SCRIPT_NAME را بازیابی کنید ، مسیر مجازی فیلمنامه یا /cgi-bin/ping.sh را بدست می آورید..

نام ارائهکننده

متغیرهای SERVER_NAME نام کامل سرور شما را می دهد. به عنوان مثال ، اگر از این متغیر پرس و جو کنید ، نتیجه نام دامنه وب سایت خواهد بود. به عنوان مثال ، چیزی مانند www.placeholder.com.

SERVER_PORT

هر سروری که در وب اجرا شود هم دارای یک آدرس و هم یک درگاه است. سرور از پورت برای پذیرش اتصالات و گوش دادن به درخواست ها استفاده می کند. درگاه استاندارد 80 است ، اما می تواند شماره های دیگر باشد – مخصوصاً برای برنامه های تخصصی. پرس و جو از متغیر SERVER_PORT به ارزش پورت گوش دادن منجر می شود.

SERVER_PROTOCOL

می توانید دریابید که از چه پروتکی سرور برای رسیدگی به درخواست ها استفاده می کند. به عنوان مثال ، اگر سروری که با آن کار می کنید از پروتکل HTTP استفاده کند ، رشته ای مانند “HTTP / 1.1” را برگرداند ، بدین معنی که سرور از HTTP نسخه 1.1 استفاده می کند. اساساً رشته برگشتی در پروتکل / نسخه فرمت است.

SERVER_SOFTWARE

متغیر محیط SERVER_SOFTWARE شامل نام و نسخه نرم افزاری است که در وب سرور اجرا می شود. به عنوان مثال ، اگر مقدار این متغیر را تولید کنید و نسخه ای از Apache را اجرا کنید ، ممکن است چیزی شبیه به موارد زیر بدست آورید:

آپاچی 2.4.25

نتیجه

یکی از اولین اقداماتی که می توانید برای درک CGI یا پروتکل HTTP انجام دهید ، آشنایی با متغیرهای اساسی و نحوی است. این شامل متغیرهای محیطی است که فقط بیان شده است. اگرچه امروزه به ندرت از CGI استفاده می شود ، بسیاری از زبان های توسعه وب فعلی مانند PHP نیز از بسیاری از این متغیرها استفاده می کنند. در نتیجه ، یادگیری آنها به شما در نوشتن برنامه های قوی حتی برای زبان های فعلی توسعه وب نیز کمک خواهد کرد.

مطالعه بیشتر و منابع

ما راهنماهای ، آموزش ها و اینفوگرافیک های بیشتری در رابطه با کد نویسی و توسعه داریم:

  • مقدمه و منابع PHP: این یکی از بزرگترین زبانهای برنامه نویسی در وب است.
  • CGI Primer: با اصول CGI شروع کنید.
  • آموزشها و منابع CGI: نحوه دریافت CGI را تا آنجا که می توانید بدانید.

چه کدی را باید بیاموزید?

گیج شده در مورد چه زبان برنامه نویسی که باید رمزگذاری کنید؟ اینفوگرافیک ما را ببینید ، چه کدی را باید یاد بگیرید؟ این نه تنها در مورد جنبه های مختلف زبان بحث می کند ، بلکه به سؤالات مهمی از جمله ، “چقدر پول برای برنامه نویسی PHP برای زندگی می پردازم؟”

چه کد باید یاد بگیرید؟
چه کدی را باید بیاموزید?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me