PHP-তে তাৎক্ষণিক রিডাইরেক্ট
header ফাংশন ব্যবহার করে করা রিডাইরেক্ট
এই ফাংশনটি কল করার মুহূর্তে ঘটে না। সর্বোপরি, PHP
নিজে রিডাইরেক্ট কার্যকর করে না, এটি শুধুমাত্র
ব্রাউজারে সংশ্লিষ্ট HTTP হেডার পাঠায়।
এর মানে হল, রিডাইরেক্ট তখনই ঘটবে যখন PHP সম্পূর্ণ স্ক্রিপ্টটি শেষ পর্যন্ত নির্বাহ করবে। এর কারণে বিভিন্ন ধরনের অনাকাঙ্ক্ষিত প্রভাব ঘটতে পারে।
উদাহরণস্বরূপ, নিচের কোডে আমরা রিডাইরেক্ট বা ডাটাবেসে কুয়েরি করতে চাই। কিন্তু রিডাইরেক্টের আদেশ থাকলেও ডাটাবেস কুয়েরি নির্বাহ হবে:
<?php
if ($_GET['test']) {
header('Location: test.php');
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query); // রিডাইরেক্ট হলেও নির্বাহ হবে!
?>
এই ধরনের সমস্যা এড়াতে
রিডাইরেক্টের পরপরই
die ফাংশনটি কল করতে হবে,
যা তাৎক্ষণিকভাবে স্ক্রিপ্টের নির্বাহ শেষ করবে
এবং রিডাইরেক্ট সঙ্গে সঙ্গেই ঘটবে:
<?php
if ($_GET['test']) {
header('Location: test.php');
die();
}
$query = "UPDATE users SET changed=1 WHERE id=1";
mysqli_query($link, $query);
?>
আপনার কোডে কোনও অনাকাঙ্ক্ষিত
প্রভাব পুনরুত্পাদন করুন। তারপর die
ফাংশন ব্যবহার করে এটি সংশোধন করুন।