# PHP Redirects and Headers

PHP ওয়েব ডেভেলপমেন্টে **Redirects** এবং **Headers** খুবই গুরুত্বপূর্ণ। যখন আমরা ব্যবহারকারীকে একটি পেজ থেকে অন্য পেজে পাঠাতে চাই বা ব্রাউজারের আচরণ নিয়ন্ত্রণ করতে চাই, তখন আমরা **HTTP Headers** ব্যবহার করি। এই ব্লগে আমরা ধাপে ধাপে শেখাবো কীভাবে PHP তে Redirect করা হয় এবং Headers ব্যবহার করা যায়।

---

## ১. Headers কি?

**HTTP Headers** হলো সার্ভার এবং ক্লায়েন্ট (ব্রাউজার) এর মধ্যে পাঠানো মেসেজের অংশ। এটি ব্রাউজারকে বলে দেয় কিভাবে রিকোয়েস্ট প্রক্রিয়াকরণ করতে হবে।

উদাহরণ: Content-Type, Location, Status, Cookie ইত্যাদি।

PHP তে আমরা `header()` ফাংশন ব্যবহার করে হেডার পাঠাই।

```plaintext
<?php
    // Content-Type সেট করা
    header("Content-Type: text/html; charset=UTF-8");
    echo "Hello, World!";
?>
```

উপরের উদাহরণে আমরা ব্রাউজারকে বলেছি, এটি HTML কনটেন্ট যা UTF-8 এ এনকোডেড।

---

## ২. PHP Redirects কি?

**Redirect** হলো ব্যবহারকারীকে একটি পেজ থেকে অন্য পেজে স্বয়ংক্রিয়ভাবে পাঠানো। এটি সাধারণত ২ ধরনের হয়:

1. **Permanent Redirect (301)**
    
2. **Temporary Redirect (302)**
    

PHP তে Redirect করার জন্য আমরা `header("Location: URL")` ব্যবহার করি।

---

### উদাহরণ: Simple Redirect

```plaintext
<?php
    // ব্যবহারকারীকে example.com এ পাঠানো
    header("Location: https://www.example.com");
    exit();
?>
```

**বিঃদ্রঃ**

* `exit();` ব্যবহার করা খুবই গুরুত্বপূর্ণ। কারণ Redirect এর পর যদি কোড চলে যায়, তবে অপ্রত্যাশিত আউটপুট আসতে পারে।
    
* `header()` ফাংশন সবসময় পেজের আউটপুটের আগে কল করতে হবে। যদি আগে কোন HTML বা স্পেস থাকে, তাহলে "Headers already sent" এরর আসবে।
    

---

### ৩. Permanent vs Temporary Redirect

1. **Permanent Redirect (301)**
    

```plaintext
<?php
    header("Location: https://www.newsite.com", true, 301);
    exit();
?>
```

* এটি সার্চ ইঞ্জিনকে জানায় যে পেজটি স্থায়ীভাবে স্থানান্তরিত হয়েছে।
    

2. **Temporary Redirect (302)**
    

```plaintext
<?php
    header("Location: https://www.newsite.com", true, 302);
    exit();
?>
```

* এটি সাধারণ Redirect। সার্চ ইঞ্জিন বুঝবে যে এটি অস্থায়ী।
    

---

## ৪. Headers দিয়ে Cache Control করা

কিছু ক্ষেত্রে আমরা চাই না যে ব্রাউজার পুরনো পেজ ক্যাশ করে রাখুক। তখন আমরা Headers ব্যবহার করি।

```plaintext
<?php
    // কনটেন্ট কখনো ক্যাশ হবে না
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
```

---

## ৫. অন্যান্য Useful Headers

* **Content-Type:** ব্রাউজারকে কনটেন্ট টাইপ জানানোর জন্য
    

```plaintext
header("Content-Type: application/json");
```

* **Set-Cookie:** কুকি সেট করার জন্য
    

```plaintext
header("Set-Cookie: user=John; expires=Wed, 10 Sep 2025 20:00:00 GMT");
```

* **Refresh:** পেজ স্বয়ংক্রিয়ভাবে রিফ্রেশ করতে
    

```plaintext
header("Refresh: 5; url=https://www.example.com");
echo "5 সেকেন্ড পর আপনি নতুন পেজে চলে যাবেন।";
```

---

## ৬. Common Errors এবং Tips

1. **Headers already sent**
    
    * সমস্যা: `header()` কল করার আগে কোন আউটপুট HTML, স্পেস বা ইকো থাকলে।
        
    * সমাধান: হেডার সবসময় পেজের শুরুতে কল করুন।
        
2. **Exit ব্যবহার করা**
    
    * Redirect করার পরে `exit();` ব্যবহার করুন।
        
3. **Absolute URL ব্যবহার করা ভালো**
    
    * কিছু সার্ভার `relative URL` সমর্থন করে না।
        

---

## ৭. সারসংক্ষেপ

* PHP তে **header()** ফাংশন হলো হেডার পাঠানোর মূল ফাংশন।
    
* Redirect করার জন্য `header("Location: URL")` ব্যবহার করা হয়।
    
* Redirect এর পরে সবসময় `exit();` ব্যবহার করা উচিত।
    
* Headers ব্যবহার করে কনটেন্ট টাইপ, কুকি, ক্যাশ এবং রিফ্রেশ নিয়ন্ত্রণ করা যায়।
    

PHP তে Headers এবং Redirect সঠিকভাবে ব্যবহার করা শেখা ওয়েব ডেভেলপারদের জন্য খুবই গুরুত্বপূর্ণ। এটি সাইটের **নেভিগেশন, ইউজার এক্সপেরিয়েন্স এবং SEO** উন্নত করতে সাহায্য করে।
