टॉप 10 PHP बग्स जो हर शुरुआती करता है

आप कोड लिखते हैं। आप पेज को रिफ्रेश करते हैं। आपको एक खाली सफेद स्क्रीन दिखाई देती है।

ऐसा इसलिए होता है क्योंकि PHP डिफ़ॉल्ट रूप से बिना किसी सूचना के फेल हो जाता है। यदि आपको एरर नहीं दिखते हैं, तो आप उन्हें ठीक नहीं कर सकते।

अपने डेवलपमेंट की शुरुआत अपनी फ़ाइल के सबसे ऊपर ये लाइनें जोड़कर करें:

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

यह PHP को यह दिखाने के लिए मजबूर करता है कि क्या गलत है। इसे प्रोडक्शन (production) में उपयोग न करें।

यहाँ 10 सामान्य बग्स और उन्हें ठीक करने के तरीके दिए गए हैं।

  1. सेमीकोलन (Semicolons) का छूटना PHP को एक स्टेटमेंट खत्म करने के लिए सेमीकोलन की आवश्यकता होती है। यदि आप एक भी भूल जाते हैं, तो स्क्रिप्ट रुक जाती है। समाधान: हमेशा अपनी लाइनों को सेमीकोलन के साथ समाप्त करें।

  2. लूज़ कंपैरिजन (Loose Comparison) == ऑपरेटर तुलना करने से पहले टाइप बदल देता है। इससे गलत परिणाम मिल सकते हैं। समाधान: === का उपयोग करें। यह वैल्यू और टाइप दोनों की जाँच करता है।

  3. अनडिफाइंड वेरिएबल्स (Undefined Variables) किसी ऐसे वेरिएबल का उपयोग करना जिसे आपने नहीं बनाया है, लॉजिक एरर का कारण बनता है। समाधान: नल कोलेसिंग ऑपरेटर (null coalescing operator) का उपयोग करें। $name = $_GET['name'] ?? 'Guest';

  4. ग्लोबल वेरिएबल स्कोप (Global Variable Scope) फ़ंक्शन अपने बाहर के वेरिएबल्स को नहीं देख सकते। समाधान: वेरिएबल्स को पैरामीटर्स के रूप में फ़ंक्शंस में पास करें।

  5. SQL इंजेक्शन (SQL Injection) यूजर इनपुट को सीधे क्वेरी में डालना खतरनाक है। हमलावर आपका डेटा चुरा सकते हैं। समाधान: प्लेसहोल्डर्स के साथ प्रिपेयर्ड स्टेटमेंट्स (prepared statements) का उपयोग करें।

  6. क्रॉस-साइट स्क्रिप्टिंग (XSS) स्क्रीन पर रॉ यूजर इनपुट प्रिंट करने से ब्राउज़र में दुर्भावनापूर्ण स्क्रिप्ट (malicious scripts) चल सकती हैं। समाधान: सभी आउटपुट पर htmlspecialchars() का उपयोग करें।

  7. हेडर एरर्स (Header Errors) ब्राउज़र को कोई भी टेक्स्ट या स्पेस भेजने के बाद आप हेडर नहीं भेज सकते। समाधान: header() कॉल्स को सबसे ऊपर रखें। रीडायरेक्ट के बाद हमेशा exit() का उपयोग करें।

  8. मिसिंग फॉर्म कीज़ (Missing Form Keys) किसी ऐसी फॉर्म की (key) को एक्सेस करना जो मौजूद नहीं है, एरर का कारण बनता है। समाधान: डिफ़ॉल्ट वैल्यू प्रदान करने के लिए नल कोलेसिंग ऑपरेटर का उपयोग करें।

  9. Include बनाम Require include कमांड केवल एक चेतावनी (warning) देती है यदि कोई फ़ाइल गायब है। स्क्रिप्ट चलती रहती है और बाद में क्रैश हो जाती है। समाधान: डेटाबेस कनेक्शन जैसी महत्वपूर्ण फ़ाइलों के लिए require_once का उपयोग करें।

  10. अनचेक्ड रिटर्न वैल्यूज़ (Unchecked Return Values) कई PHP फ़ंक्शंस यदि विफल हो जाते हैं तो false रिटर्न करते हैं। अगले स्टेप में उस false वैल्यू का उपयोग करने से क्रैश हो जाता है। समाधान: परिणाम का उपयोग करने से पहले जाँचें कि क्या फ़ंक्शन ने false रिटर्न किया है।

बेहतर कोड के लिए सारांश: • डेवलपमेंट में एरर रिपोर्टिंग चालू करें। • == के बजाय === का उपयोग करें। • रिटर्न वैल्यूज़ की जाँच करें। • सभी यूजर इनपुट को सैनिटाइज़ (sanitize) करें।

स्रोत: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh