PHP में header() फ़ंक्शन का उपयोग करके उपयोगकर्ता को एक पृष्ठ से दूसरे पृष्ठ पर रीडायरेक्ट किया जाता है। यह एक बिल्ट-इन फ़ंक्शन है जो क्लाइंट (ब्राउज़र) को रॉ HTTP हेडर भेजता है।
header() फ़ंक्शन सिंटैक्स
header(string $header, bool $replace = true, int $http_response_code = 0): void
पैरामीटर्स
| पैरामीटर | विवरण |
$header | हेडर स्ट्रिंग (उदाहरण: "Location: URL") |
$replace | क्या समान प्रकार के पिछले हेडर को बदलना है (डिफ़ॉल्ट true) |
$http_response_code | बाध्य HTTP प्रतिक्रिया कोड (उदाहरण: 301, 302, 303) |
बुनियादी रीडायरेक्ट उदाहरण
<?php
header("Location: https://www.example.com");
exit; // महत्वपूर्ण: रीडायरेक्ट के बाद स्क्रिप्ट रोकें
?>
महत्वपूर्ण नियम और सर्वोत्तम अभ्यास
- कोई आउटपुट पहले नहीं:
header() से पहले कोई HTML, व्हाइटस्पेस, या echo नहीं होना चाहिए।
- पूर्ण URL उपयोग करें: हालांकि रिलेटिव URL काम कर सकते हैं, पूर्ण URL (https://...) अधिक विश्वसनीय हैं।
- हमेशा
exit या die() कॉल करें: रीडायरेक्ट के बाद स्क्रिप्ट निष्पादन रोकने के लिए।
- उचित स्थिति कोड: स्थायी के लिए 301, अस्थायी के लिए 302/303।
स्थिति कोड के साथ रीडायरेक्ट
<?php
// स्थायी रीडायरेक्ट (SEO के लिए अच्छा)
header("Location: https://newsite.com", true, 301);
exit;
// अस्थायी रीडायरेक्ट (डिफ़ॉल्ट 302)
header("Location: /maintenance.php", true, 302);
exit;
// POST के बाद रीडायरेक्ट (PRG पैटर्न) - 303
header("Location: /thankyou.php", true, 303);
exit;
?>
सामान्य गलतियाँ
| गलती | समाधान |
header() से पहले HTML/व्हाइटस्पेस | सभी आउटपुट बफरिंग (ob_start()) उपयोग करें या शीर्ष पर रखें |
exit भूलना | हमेशा exit; जोड़ें |
| रिलेटिव URL उपयोग करना | पूर्ण URL पसंद करें |
| कैशिंग हेडर्स न सेट करना | header("Cache-Control: no-cache, must-revalidate") जोड़ें |
आउटपुट बफरिंग के साथ सुरक्षित रीडायरेक्ट
<?php
ob_start(); // पृष्ठ शीर्ष पर
// ... कोड ...
if ($condition) {
header("Location: /login.php");
exit;
}
ob_end_flush();
?>