بکندباز

header در php

header() یک تابع از پیش تعریف شده PHP است که یک هدر HTTP خام را برای یک کلاینت ارسال می کند. یک نکته مهم در مورد تابع header() این است که قبل از ارسال هر خروجی واقعی باید فراخوانی شود.

تابع header() یک هدر HTTP را به صورت خام به مشتری یا مرورگر می فرستد. قبل از ارسال هر خروجی دیگری، توابع HTTP اطلاعات ارسال شده توسط وب سرور به مشتری یا مرورگر را دستکاری می کنند.

نحو

void header (string $header, boolean $replace = TRUE, int $http_response_code)  

مولفه های

تابع header() سه پارامتر را می پذیرد که در زیر به تفصیل مورد بحث قرار گرفته است:

$header (اجباری)

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

هدر اول با یک رشته ” HTTP/ ” شروع می شود که کد وضعیت HTTP را برای ارسال تعیین می کند.

دومین مورد ویژه هدر با هدر « مکان: » شروع می شود . نه تنها هدر را به مرورگر باز می‌فرستد، بلکه یک کد وضعیت REDIRECT (302) را نیز به مرورگر ارائه می‌کند، تا زمانی که کد وضعیت 201 یا 3xx قبلاً تنظیم شده باشد.

$replace (اختیاری)

این پارامتر برای تعیین اینکه آیا هدر قبلی باید با هدر جایگزین شود یا هدر دیگری از همان نوع اضافه شود استفاده می شود. $replace یک پارامتر اختیاری نوع بولی است.

مقدار پیش فرض TRUE است، به این معنی که جایگزین همان هدر قبلی می شود. اما اگر FALSE به عنوان آرگومان دوم ارسال شود، می‌توانید چندین هدر از یک نوع را پیوند دهید.

http_response_code (اختیاری)

$http_response_code یک پارامتر اختیاری است که کد پاسخ HTTP را به یک مقدار مشخص وادار می کند.

توجه: اگر هدر خالی نباشد، پارامتر http_response_code تأثیر می گذارد.

ارزش بازگشتی

تابع header() PHP هیچ مقداری را بر نمی گرداند.

تغییرات

پس از PHP نسخه 5.1.2 ، این تابع ارسال بیش از یک هدر را متوقف می کند تا از حملات تزریق هدر جلوگیری کند. این اجازه می دهد تا تنها یک هدر در یک زمان.

استفاده می کند

  • مکان صفحه را تغییر می دهد.
  • منطقه زمانی را تعیین می کند.
  • وضعیت STOP را ارسال می کند.
  • این تابع کنترل کش را تنظیم می کند.
  • دانلود نیرو را آغاز می کند.

مثال ها

با کمک مثال های زیر، می توانید عملکرد واقعی تابع header() را در محیط زمان اجرا درک کنید.

مثال 1: تغییر مسیر مرورگر

کد زیر کاربر شما را به صفحه دیگری هدایت می کند.

<?php  
    // با این کار کاربر به مکان جدید هدایت می شود  
    header( 'Location: http://backendbaz.ir/' );  
    //کد زیر بعد از هدر اجرا نمی شود  
    exit;
?>  

خروجی

به مکان URL جدید که در تابع header() برنامه فوق داده شده است، یعنی http://backendbaz.ir هدایت می شود. اگر هر خطی از کد بعد از header() نوشته شود، اجرا نخواهد شد.

مثال 2: فاصله تغییر مسیر

کد زیر پس از 10 ثانیه کاربر شما را به صفحه دیگری هدایت می کند.

<?php  
    // این پس از 10 ثانیه تغییر مسیر می دهد  
    header( 'Refresh: 10; url = http://backendbaz.ir/' );  
    exit;
?>  

خروجی

The output will be same as the example 1, but it will take 10 seconds to load.

نکته: اگر هر خطی از کد بعد از تابع header() نوشته شود، اجرا نخواهد شد.

مثال 3: صفحات را کش نکنید

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

<?php  
    // PHP program to describes header function   
    
    // Set a past date   
    header("Expires: Tue, 03 March 2001 04:50:34 GMT");   
    header("Cache-Control: no-cache");   
    header("Pragma: no-cache");   
?>  
<html>   
    <body>   
    <p>Hello there!</p>   
        
    <!-- PHP program to display   
    header list -->   
    <?php   
        print_r(headers_list());   
    ?>   
    </body>   
</html>  

خروجی

Hello there!
Array ( 
[0] => X-Powered-By: PHP/7.3.13 
[1] => Expires: Tue, 03 March 2001 04:50:34 GMT 
[2] => Cache-Control: no-cache 
[3] => Pragma: no-cache 
)

URI مطلق

URI مطلق توسط برخی از کلاینت قدیمی مورد نیاز است، که شامل hostname، scheme و مسیر مطلق است، در حالی که اکثر کلاینت های معاصر URI نسبی را به عنوان آرگومان Location می پذیرند . برای ایجاد URI مطلق، می‌توانید از $SERVER[‘PHP_SELF’] ، $SERVER[‘HTTP_HOST’] و dirname() استفاده کنید.

مثال 4

دو فایل php ایجاد کنید که یکی از آنها حاوی کد فایل هدر و دیگری برای هدایت به صفحه جدیدی در مرورگر است.

headercheck.php

<?php  
    $host  = $_SERVER['HTTP_HOST'];  
    $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');  
    $newpage = 'welcome.php';  
      
    /* Redirect to a different page requested in the current directory*/  
    header("Location: http://$host$uri/$newpage");  
    exit;  
?>  

welcome.php

<!-- welcome.php file redirect to new page -->  
<html>  
        <head>  
            <title> Welcome page </title>  
        </head>  
        <body>  
            <h1> <center> Welcome</center> </h1>  
        </body>  
</html>  
backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*