لیست زیر توابع مهم و پرکاربرد کار با HTTP در PHP نشان می دهد . برای دریافت اطلاعات بیشتر بر روی نام هر یک کلیک نمایید :
نام تابع | شرح عملکرد |
header ( ) | به وسیله این تابع می توان یک دستور HTTP را به مرورگر ( client ) ارسال کرد . |
header_list ( ) | این تابع لیستی از دستورات HTTP که به مرورگر ارسال شده یا آماده هستند ، که ارسال شود را به صورت یک آرایه بر می گرداند . |
header_sent ( ) | این تابع چک می کند که آیا یک دستور HTTP خاص به مرورگر ( client ) ارسال شده یا خیر . |
setcookie ( ) | این دستور یک کوکی cookie را به مرورگر ( client ) ارسال می کند . |
setrawcookie ( ) |
این دستور یک کوکی HTTP را بدون اینکه URL تاثیری بر مقدار آن داشته باشد را به مرورگر ( client ) ارسال می کند . عملکرد این تابع دقیقا مشابه تابع ( ) setcookie است ، با این تفاوت که در آن کوکی ها encode نخواهند شد . |
تابع ( ) header:
تابع ( ) header ، یک دستور HTTP را به مرورگر کاربر ( client ) ارسال می کند. از دستورات HTTP برای ارسال کدهایی که می خواهید قبل از هرگونه پردازش یا تولید خروجی صفحه ، توسط وب سرور اجرا شوند ، استفاده می شود. بنابراین تابع ( ) header ، بایستی قبل از هر گونه کد یا دستور در صفحه ، حتی قبل از تگ HTML تعریف شوند . برای مثال کد زیر ، صفحه را دچار مشکل می کند . چرا که بعد از تگ <html> وارد شده است:
کد نا صحیح |
<html> <?php // این کد باعث بروز خطا در صفحه می شود // قرار دارد html چون بعد از تگ header('Location:http://www.example.com/'); ?> </html> |
شکل کلی استفاده از این تابع به صورت زیر است :
syntax | header( string , replace , http_response_code ) ; |
syntax توضیح هر یک از موارد | |
توضیح | پارامتر |
این پارامتر دستور یا عبارت HTTP را برای تابع ( ) header تعیین می کند . استفاده از این پارامتر اجباری است . |
string |
این پارامتر تعیین می کند که آیا دستور HTTP ارسالی باید جایگزین دستور مشابه قبلی خود شود یا اینکه دستور دومی را به صفحه اضافه نماید . مقدار پیش فرض این پارامتر TRUE است و باعث می شود تا دستور HTTP جدید ، جایگزین دستور HTTP قبلی مشابه خود شود . استفاده از این پارامتر اختیاری است . |
replace |
این پارامتر یک مقدار اجباری را برای پاسخ دستور HTTP تعیین می کند . تا آنجایی که ما بررسی کردیم ، این پارامتر کاربرد چندانی ندارد ! استفاده از این پارامتر اختیاری است . |
http_response_code |
مثال های عملی :
در این بخش با ارائه چند مثال عملی ، نحوه استفاده و کاربرد تابع ( ) header را در PHP آموزش داده ایم.
مثال 1: به طور معمول مرورگرها اطلاعات صفحاتی که اجرا می کنند را در حافظه ذخیره ( cache ) می کنند . در مثال زیر به وسیله تابع ( ) header ، یک دستور HTTP را به مرورگر ارسال کرده ایم ، تا از ذخیره اطلاعات صفحه جاری در حافظه خودداری نماید :
مثال |
< ? php // تاریخ مراجعه قبلی header("Expires: Mon, 26 Jul 2012 05:00:00 GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); ? > <html> <body> ... |
مثال 2 : در مثال زیر ، توسط یک دستور HTTP به مرورگر اعلام کرده ایم تا در هنگام لود صفحه پنجره دانلودی را به کاربر نمایش داده و در صورت تمایل وی ، یک فایل PDF را ذخیره نماید :
مثال 2 |
< ? php header("Content-type:application/pdf"); // این دستور باعث نمایش کادر دانلود می شود header("Content-Disposition:attachment;filename='downloaded.pdf'"); // نام فایل را تعیین می کند readfile("original.pdf"); ? > <html> <body> ... |
تابع ( ) headers_list:
تابع ( ) headers_list ، لیستی از دستورات HTTP که به صفحه ارسال شده یا آماده برای ارسال هستند ، را در خروجی به صورت یک آرایه نمایش می دهد. این تابع عملکرد خاصی جز خروجی بر روی صفحه ندارد. شکل کلی استفاده از این تابع به صورت زیر است :
syntax | headers_list( ) ; |
مثال عملی :
مثال : در مثال زیر با استفاده از تابع ( ) headers_list ، لیست Header های HTTP که به صفحه ارسال شده اند را نمایش داده ایم :
مثال |
<?php setcookie("TestCookie","SomeValue"'); header("X-Sample-Test: foo"); header('Content-type: text/plain'); ?> <html> <body> < ? php // چاپ هدرهای صفحه در خروجی var_dump(headers_list( )); ? > </html> </body> ... |
خروجی |
array( 4 ) { [0]=> string(23) "X-Powered-By: PHP/5.1.1" [1]=> string(1HTTP) "Set-Cookie: TestCookie=SomeValue" [2]=> string(18) "X-Sample-Test: foo" [3]=> string(24) "Content-type: text/plain" } |
تابع ( ) headers_sent:
تابع ( ) headers_sent ، چک می کند آیا دستورات HTTP صفحه ، ارسال شده اند یا خیر. اگر دستورات ارسال شده باشند ، تابع مقدار TRUE و اگر ارسال نشده باشند ، مقدار FALSE را بر می گرداند . از این تابع می توان برای چک کردن دستورات مورد نظر خود استفاده نمود. شکل کلی استفاده از این تابع به صورت زیر است :
syntax | headers_sent ( ) ; |
مثال عملی :
مثال : در مثال زیر با استفاده از تابع ( ) headers_sent ، چک کرده ایم که آیا هدری به صفحه ارسال شده یا خیر و در صورت عدم ارسال ، هدر مورد نظر ارسال شود :
مثال |
<?php // اگر هدری در صفحه ارسال نشده باشد ، هدر مورد نظر زیر ارسال می شود if (!headers_sent( ) ) { header("Location: http://www.hassas-computer.com"); exit; } ?> <html> <body> ... |
تابع ( ) setcookie:
تابع ( ) setcookie ، یک کوکی را به وسیله یک دستور HTTP به مرورگر کاربر ( client ) ارسال می کند. همانطور که می دانید کوکی یک متغیر است که برای نگهداری اطلاعات کاربر بر روی کامپیوتر وی استفاده می شود . هر بار که کاربر ، با همان مرورگر صفحه یا سایت مورد بحث را باز کند ، مقدار این کوکی فراخوانی شده و به صفحه ارجاع می شود . برای مثال رمز عبور یا نام کاربری در یک سایت از جمله کوکی های پر استفاده است. برای دریافت اطلاعات بیشتر راجع به کوکی ها و نحوه تعریف و استفاده از آنها ، به بخش تعریف و استفاده از کوکی ها در PHP بروید. نام کوکی به صورت اتوماتیک به متغیری به همان نام در صفحه اختصاص می یابد . برای مثال اگر کوکی به نام " user " در صفحه ایجاد شود ، در هنگام اجرای صفحه متغیری به نام " user " ساخته شده و با مقدار کوکی ، مقدار دهی خواهد شد.
برای استفاده موثر از یک کوکی ، بایستی مقدار آن قبل از ایجاد صفحه ، به صفحه ارسال شود . بنابراین می توان از تابع ( ) setcookie که یک دستور HTTP است ، برای این کار استفاده نمود .
شکل کلی استفاده از این تابع به صورت زیر است :
syntax | setcookie( name , value , expire , path , domain ,secure ) ; |
syntax توضیح هر یک از موارد | |
توضیح | پارامتر |
پارامتر name تعیین کننده نام کوکی است . از این نام برای بازیابی و فراخوانی کوکی در سطح برنامه استفاده می شود . | name |
پارامتر value مقدار کوکی را تعیین می کند .این مقدار بر روی کامپیوتر ذخیره می شود . | value |
پارامتر expire تعیین کننده مدت زمان اعتبار کوکی ، بر حسب ثانیه است . پس از اتمام این مدت زمان ، کوکی از بین خواهد رفت . برای تعیین مدت زمان اعتبار کوکی ، معمولا از تابع ( ) time استفاده می شود . |
expire |
پارامتر domain ، دامنه ای که کوکی بر روی آن قابل دسترس است را تعیین می کند . برای مثال اگر مقدار آن 'www.DeveloperStudio.ir' تنظیم شود ، فقط در این دامنه قابل دسترسی است . تعیین این پارامتر اختیاری است . |
domain |
این پارامتر تعیین میکند که آیا کوکی فقط بایستی از طریق یک پروتکل امن HTTPS منتقل شود با خیر . مقدار پیش فرض این خاصیت FALSE بوده و تعیین آن نیز اختیاری است . |
secure |
نکته : برای خواندن مقدار یک کوکی از تابع ( نام کوکی ) COOKIE_$ استفاده می شود .
مثال های عملی :
در مثال های زیر ، به صورت عملی نحوه استفاده از تابع ( ) setcookie را آموزش داده ایم .
مثال 1 : در مثال اول ، نحوه تعریف یک کوکی را به صورت ساده نشان داده ایم :
مثال 1 |
< ? php $value = "my cookie value"; // تعریف و ارسال یک کوکی ساده setcookie("TestCookie",$value); ? > <html> <body> ... |
مثال 2 : تعریف یک کوکی که پس از یک روز از بین می رود :
مثال 2 |
< ? php $value = "my cookie value"; // تعریف و ارسال یک کوکی ساده با اعتبار 24 ساعت setcookie("TestCookie",$value, time()+3600*24); ? > <html> <body> ... |
مثال 3 : در مثال زیر مقدار کوکی که قبلا ایجاد کرده ایم را به روش های مختلفی در خروجی نمایش داده ایم :
مثال 3 |
< ? php // چاپ مقدار کوکی در خروجی echo $_COOKIE["TestCookie"]; echo "<br />"; echo $HTTP_COOKIE_VARS["TestCookie"]; echo "<br />"; // چاپ تمام کوکی های صفحه print_r($_COOKIE); ? > <html> <body> ... |
خروجی |
my cookie value my cookie value Array ([TestCookie] => my cookie value) |
منبع: developer1