𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 𝗘𝘃𝗲𝗿𝘆 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝗠𝗮𝗸𝗲𝘀
আপনি কোড লিখলেন। আপনি পেজটি রিফ্রেশ করলেন। আপনি একটি সাদা খালি স্ক্রিন দেখতে পেলেন।
এটি ঘটে কারণ PHP ডিফল্টভাবে কোনো ত্রুটি বা এরর (error) না দেখিয়েই কাজ থামিয়ে দেয়। আপনি যদি এররগুলো দেখতে না পান, তবে আপনি সেগুলো ঠিক করতে পারবেন না।
আপনার ফাইলের একদম উপরে এই লাইনগুলো যোগ করে ডেভেলপমেন্ট শুরু করুন:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
এটি PHP-কে ভুলগুলো দেখানোর জন্য বাধ্য করে। এটি প্রোডাকশন (production) এনভায়রনমেন্টে ব্যবহার করবেন না।
নিচে ১০টি সাধারণ বাগ এবং সেগুলো কীভাবে ঠিক করবেন তা দেওয়া হলো।
সেমিকোলন বাদ পড়া (Missing Semicolons) PHP-তে একটি স্টেটমেন্ট শেষ করার জন্য সেমিকোলন প্রয়োজন। আপনি যদি একটি সেমিকোলন দিতে ভুলে যান, তবে স্ক্রিপ্টটি থেমে যাবে। সমাধান: সবসময় আপনার লাইনের শেষে একটি সেমিকোলন দিন।
লুজ কম্পারিজন (Loose Comparison)
==অপারেটর তুলনা করার আগে ডেটা টাইপ পরিবর্তন করে ফেলে। এর ফলে ভুল ফলাফল আসতে পারে। সমাধান:===ব্যবহার করুন। এটি মান (value) এবং টাইপ (type) উভয়ই পরীক্ষা করে।আনডিফাইন্ড ভেরিয়েবল (Undefined Variables) এমন একটি ভেরিয়েবল ব্যবহার করা যা আপনি তৈরি করেননি, তা লজিক্যাল এরর তৈরি করে। সমাধান: নাল কোয়ালেসিং অপারেটর (null coalescing operator) ব্যবহার করুন।
$name = $_GET['name'] ?? 'Guest';গ্লোবাল ভেরিয়েবল স্কোপ (Global Variable Scope) ফাংশনগুলো তাদের বাইরের ভেরিয়েবল দেখতে পায় না। সমাধান: প্যারামিটার হিসেবে ফাংশনের ভেতরে ভেরিয়েবল পাস করুন।
SQL ইনজেকশন (SQL Injection) সরাসরি ইউজার ইনপুট কুয়েরিতে (query) ব্যবহার করা বিপজ্জনক। আক্রমণকারীরা আপনার ডেটা চুরি করতে পারে। সমাধান: প্লেসহোল্ডারসহ প্রিপেয়ার্ড স্টেটমেন্ট (prepared statements) ব্যবহার করুন।
ক্রস-সাইট স্ক্রিপ্টিং (XSS) স্ক্রিনে সরাসরি ইউজার ইনপুট প্রিন্ট করলে ব্রাউজারে ক্ষতিকারক স্ক্রিপ্ট চলতে পারে। সমাধান: সমস্ত আউটপুটে
htmlspecialchars()ব্যবহার করুন।হেডার এরর (Header Errors) ব্রাউজারে কোনো টেক্সট বা স্পেস পাঠানোর পরে আপনি আর হেডার পাঠাতে পারবেন না। সমাধান:
header()কলগুলো একদম উপরে রাখুন। রিডাইরেক্ট করার পর সবসময়exit()ব্যবহার করুন।ফর্ম কী অনুপস্থিত থাকা (Missing Form Keys) এমন একটি ফর্ম কী অ্যাক্সেস করা যা বিদ্যমান নেই, তা এরর তৈরি করে। সমাধান: একটি ডিফল্ট মান প্রদান করতে নাল কোয়ালেসিং অপারেটর ব্যবহার করুন।
Include বনাম Require
includeকমান্ড ফাইল না পাওয়া গেলে শুধুমাত্র একটি ওয়ার্নিং (warning) দেয়। স্ক্রিপ্টটি চলতে থাকে এবং পরে ক্র্যাশ করে। সমাধান: ডাটাবেস কানেকশনের মতো গুরুত্বপূর্ণ ফাইলের জন্যrequire_onceব্যবহার করুন।আনচেকড রিটার্ন ভ্যালু (Unchecked Return Values) অনেক PHP ফাংশন ব্যর্থ হলে
falseরিটার্ন করে। পরবর্তী ধাপে সেইfalseমানটি ব্যবহার করলে ক্র্যাশ হতে পারে। সমাধান: ফলাফলটি ব্যবহার করার আগে ফাংশনটিfalseরিটার্ন করেছে কি না তা পরীক্ষা করুন।
উন্নত কোডের জন্য সারসংক্ষেপ:
• ডেভেলপমেন্টের সময় এরর রিপোর্টিং চালু রাখুন।
• ==-এর পরিবর্তে === ব্যবহার করুন।
• রিটার্ন ভ্যালু পরীক্ষা করুন।
• সমস্ত ইউজার ইনপুট স্যানিটাইজ (sanitize) করুন।
Source: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh