هدر ها در صفحات وب

یه مدت هست که خودم درگیر یاد گیری هدر های http و طریقه به کار گیری هدرها در php هستم. اگه یه جستجوی ساده توی گوگل بزنید هرکسی برا خودش یه چیزی گفته و هیچ کدوم با هم جور در نمیاد. حالا بعد حدود ۶ ماه جستوجو و یادگیری تونستم دستورات اصولی رو یاد بگیرم. حالا میخوام یه سری نکات در مورد هدر های http در php  رو براتون توضیح بدم.

هدر ها در http چی هستند؟

کلمه ی http مخفف شده ی کلمات Hyper Text Transfer Protocol است که نشانه یک پروتکل استاندارد برای صفحات وب است.

این پروتکل در اوایل سال ۱۹۹۰ ایجاد شد و در عصر کنونی همه ی اطلاعاتی که ما در صفحات مرورگر خود مشاهده میکنیم توسط این پروتکل رد و بدل میشن. به عنوان مثال هنگامی که شما صفحه ای رو جستجو میکنید حدود ۴۰ درخواست (request) و پاسخ (response) بین مرورگر شما و سرور رد و بدل میشود.

هدر های http هسته ای این درخواست و پاسخ ها رو تشکیل میدن , هدر ها اطلاعاتی راجب مرورگر کاربر (cliant browser) , صفحه ی درخواست شده , سرور مورد نظر و موارد دیگر را مشخص میکنند.

http_headers_diagram_protocol

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

firebug-http-headers-protocols

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

خب حالا میریم سراغ دستورات کاربردی php برای برنامه نویسان:

در زبان برنامه نویسی php شما با تابع getallheaders میتونید همه ی هدر های درخواست شده از طرف مرورگر کاربر رو دریافت کنید همچنین با استفاده از تابع headers_list میتونید لیستی از هدر های پاسخ که از طرف سرور به کلاینت ارسال میشن رو دریافت کنید.

یکی از اطلاعاتی که توسط هدر ها به سرور فرستاده میشود اطلاعات user agent است که شامل ورژن مرورگر و اطلاعات زمانی سیستم کاربر و مواردی دیگر میشود. شما میتونید سایت خودتون رو برای مرورگر های مختلف به شکل متفاوتی به نمایش در بیارید مثلا به کد زیر توجه کنید:

در کد بالا اگر کاربر از مرورگر اینترنت اکسپلورر ۶ استفاده کند پیامی به کاربر نمایش داده میشود.

شما میتونید با استفاده از ارسال هدر ها کش شدن یا نشدن صفحه رو با php کنترل کنید که نحوه ی کار به صورت زیر است:

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

شما میتونید با استفاده از هدر هایی که به صفحه سایتتون ارسال میشه چک کنید کاربر از چه سایتی وارد سایت شما شده است. به کد زیر توجه کنید:

در کد بالا اگر کاربر از گوگل وارد سایت شما شده باشه کلمه ای که توی گوگل سرچ کرده رو بدست میاریم و نمایش میدیم.

برای ارسال فایل به دانلود با php میتونید به صورت زیر عمل کنید:

در کد بالا اگر به جای کلمه ی attachment از inline استفاده کنیم دیگه فایل برای دانلود ارسال نمیشه و توسط مرورگر اجرا میشه.

با استفاده از هدر content-type نوع فایل ارسالی رو مشخص کردیم که فایل در چه فرمتی برای دانلود ارسال بشه.

شما میتونید با استفاده از php و ارسال یک هدر صفحه های رمزدار تولید کنید! این روش برای ایجاد سرویس VIP با php مورد استفاده قرار میگیره. به کد زیر دقت کنید:

تصویر حاصل از اجرای کد بالا به صورت زیر خواهد بود:

vip_pages_user_authentication_web

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

دقت کنید که دستکاری و ارسال هدر ها در صفحات وب تاثیر زیادی روی نحوه ی کار سایت داره و یکی از مسائل مهم هست. شما با دستکاری هدر ها میتونید تغییرات اساسی روی صفحات و نحوه ی کار سایت خود انجام بدید.

برای ارسال یک هدر به صفحه با استفاده از php همونطور که در مثال های بالا دیدید میتونید از تابع header استفاده کنید.

برای ریدایرکت کردن صفحه با استفاده از php میتونید به صورت زیر عمل کنید:

دستورات بالا صفحه ی شما رو به سایت طرحچه هدایت میکنه . شما میتونید از دستورات ریدایرکت درون حالت های شرطی if بهره ببرید و کاربران رو باتوجه به حالاتی که براتون پیش میاد به صفحات مختلفی بفرستید.

بعضی وقتا ممکنه که صفحات شما متن رو به خوبی نمایش ندن یا اینکه بخواید نوع انکدینگ صفحه رو با php تغییر بدید در این حالت میتونید از دستورات زیر استفاده کنید:

با استفاده از دستورات بالا صفحه ای که شما به سمت کاربر میفرستید به صورت یک صفحه ی html در نظر گرفته میشود و نوع کاراکتر ان با استفاده از استاندارد utf8 تعیین میشه که فارسی رو هم ساپورت میکنه. (بعضی مواقع کلمات فارسی توی صفحات شما به صورت عجق وجق نمایش داده میشن که با استفاده از دستور بالا میتونید این مشکل رو حل کنید).

هدر ها کاربرد های زیادی دارن که همه رو نمیشه اینجا ذکر کرد اما در صورتی که سوالی داشتید از طریق بخش نظرات ذکر کنید در اسرع وقت جواب میدم.

به اشتراک بگذارید:Email this to someoneShare on FacebookTweet about this on TwitterShare on Google+Digg thisShare on LinkedInPin on PinterestShare on StumbleUponFlattr the authorShare on RedditBuffer this pageShare on TumblrPrint this pageShare on YummlyShare on VK
  1. مهرداد

    سلام بسیار عالی و ممنون از آموزشتون . دوست عزیز کلمه مخفف رو خفف نوشتید لطفا رسیدگی کنید 😀

  2. احمد

    سلاام این آموزشها خیلی کاربردی و به زبان ساده هست. آدم راحت یاد میگیره. فقط یک خورده دیر به دیر آپدیت میکنید.

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

  3. استاد, بسیار عالی. ممنون از مطالب عای و سودمند شما.

    اگر براتون امکان داره یمقدار بفکر کاربرای آماتور مثل بنده هم باشید و مثالهایی که میزنید بفرمایید در کجا قرار میگیره؟
    مثلا کد:

    header(‘location:http://tarhche.ir‘);

    در قسمت قرار میگیره یا در قسمت ?

    و دیگه اینکه مثلا بخوام جلوی رفر شدن یا سرکشی http://www.exampel.com با دستورات هدر گرفت؟ چگونه؟

    ممنون از شما

    • کد رو باید در بالاترین خط و در بین تگ های php قرار بدید. خیلی ساده هست! به مثال هایی که زده شده دقت کنید.

می‌خواهید دیدگاهتان را بیان کنید؟