𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 𝗘𝘃𝗲𝗿𝘆 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝗠𝗮𝗸𝗲𝘀

আপনি কোড লিখলেন। রিফ্রেশ করলেন। দেখলেন একটি সাদা ফাঁকা স্ক্রিন।

এটি ঘটে কারণ PHP ডিফল্টভাবে কোনো ত্রুটি (error) না দেখিয়েই থেমে যায়। ডেভেলপমেন্টের সময় আপনাকে এটি দিয়ে জোরপূর্বক এরর দেখানো নিশ্চিত করতে হবে।

আপনার ফাইলের একদম উপরে এই লাইনগুলো যোগ করুন:

ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

এটি প্রোডাকশনে ব্যবহার করবেন না। পরিবর্তে ফাইল লগ (file logs) ব্যবহার করুন।

এখানে ১০টি সাধারণ ভুল এবং সেগুলো সমাধানের উপায় দেওয়া হলো:

  • সেমিকোলন বাদ পড়া (Missing Semicolons) আপনি যদি সেমিকোলন ভুলে যান, তবে PHP কাজ করা বন্ধ করে দেয়। এটি প্রায়ই কোনো সতর্কতা ছাড়াই ক্র্যাশ ঘটায়। সমাধান: নিশ্চিত করুন যেন প্রতিটি স্টেটমেন্ট সেমিকোলন দিয়ে শেষ হয়।

  • লুজ কম্পারিজন (Loose Comparison) (== বনাম ===) ডাবল ইকুয়াল সাইন টাইপ কোয়ারশন (type coercion) করে। এটি লজিক্যাল এরর বা যুক্তিমূলক ভুলের সৃষ্টি করে। সমাধান: ট্রিপল ইকুয়াল (===) ব্যবহার করুন। এটি ভ্যালু এবং টাইপ উভয়ই পরীক্ষা করে।

  • আনডিফাইন্ড ভেরিয়েবল (Undefined Variables) কোনো ভেরিয়েবল অ্যাসাইন করার আগেই সেটি ব্যবহার করলে আপনার লজিক ভেঙে যায়। সমাধান: null coalescing operator ব্যবহার করুন। উদাহরণ: $name = $_GET['name'] ?? 'Guest';

  • গ্লোবাল ভেরিয়েবল স্কোপ (Global Variable Scope) ফাংশনগুলো তাদের বাইরের ভেরিয়েবলগুলো দেখতে পায় না। সমাধান: প্যারামিটার হিসেবে ফাংশনের ভেতরে ভেরিয়েবল পাস করুন।

  • SQL ইনজেকশন (SQL Injection) ইউজার ইনপুট দিয়ে কুয়েরি তৈরি করলে হ্যাকাররা ডেটা চুরি করতে পারে। সমাধান: প্লেসহোল্ডার (?) সহ prepared statements ব্যবহার করুন।

  • ক্রস-সাইট স্ক্রিপ্টিং (XSS) ইউজার ইনপুট সরাসরি প্রিন্ট করলে ব্রাউজারে ক্ষতিকারক স্ক্রিপ্ট চলতে পারে। সমাধান: আউটপুটকে htmlspecialchars() দিয়ে র‍্যাপ করুন।

  • হেডার অলরেডি সেন্ট (Headers Already Sent) আপনি যদি ইতিমধ্যে ব্রাউজারে কোনো টেক্সট পাঠিয়ে দেন, তবে ইউজারকে রিডাইরেক্ট করতে পারবেন না। এমনকি একটি মাত্র স্পেসও এই এরর ঘটাতে পারে। সমাধান: header() কলগুলো একদম উপরে রাখুন। রিডাইরেক্ট করার পর সবসময় exit() ব্যবহার করুন।

  • আনডিফাইন্ড অ্যারে কী (Undefined Array Keys) এমন কোনো ফর্ম কী অ্যাক্সেস করা যা বিদ্যমান নেই, তা ওয়ার্নিং (warning) তৈরি করে। সমাধান: সমস্ত $_POST এবং $_GET ডেটার জন্য null coalescing operator ব্যবহার করুন।

  • Include বনাম Require ফাইল মিসিং হলে include শুধুমাত্র একটি ওয়ার্নিং দেখায়। স্ক্রিপ্টটি চলতে থাকে এবং পরে ক্র্যাশ করে। সমাধান: ডাটাবেস কানেকশনের মতো গুরুত্বপূর্ণ ফাইলের জন্য require_once ব্যবহার করুন।

  • আনচেকড রিটার্ন ভ্যালু (Unchecked Return Values) অনেক PHP ফাংশন ব্যর্থ হলে false রিটার্ন করে। আপনি যদি সেই ফলাফলটি সরাসরি ব্যবহার করেন, তবে আরও এরর আসবে। সমাধান: ব্যবহার করার আগে ফলাফলটি false কিনা তা পরীক্ষা করে নিন।

সফল হওয়ার সারসংক্ষেপ:

  • ডেভেলপমেন্টের সময় এরর রিপোর্টিং চালু রাখুন।
  • সব ধরনের কম্পারিজনের জন্য === ব্যবহার করুন।
  • সমস্ত ইউজার ইনপুট স্যানিটাইজ (sanitize) করুন।
  • রিটার্ন ভ্যালুগুলো পরীক্ষা করুন।

উৎস: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh