शुरुआती लोग अक्सर करने वाली टॉप 10 PHP गलतियाँ
आप कोड लिखते हैं। आप रिफ्रेश करते हैं। आपको एक खाली सफेद स्क्रीन दिखाई देती है।
ऐसा इसलिए होता है क्योंकि PHP डिफ़ॉल्ट रूप से बिना किसी सूचना के (silently) फेल हो जाता है। डेवलपमेंट के दौरान आपको इसे एरर दिखाने के लिए मजबूर करना होगा।
अपनी फाइलों के सबसे ऊपर ये लाइनें जोड़ें:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
इसे प्रोडक्शन में इस्तेमाल न करें। इसके बजाय फाइल लॉग्स का उपयोग करें।
यहाँ 10 सामान्य गलतियाँ और उन्हें ठीक करने के तरीके दिए गए हैं:
सेमीकोलन (Semicolons) का छूटना यदि आप सेमीकोलन भूल जाते हैं, तो PHP काम करना बंद कर देता है। यह अक्सर बिना किसी एरर मैसेज के क्रैश हो जाता है। समाधान: सुनिश्चित करें कि हर स्टेटमेंट सेमीकोलन के साथ समाप्त हो।
लूज़ कंपैरिजन (Loose Comparison) (== बनाम ===) डबल इक्वल साइन 'टाइप कोएर्शन' (type coercion) करता है। इससे लॉजिक में गलतियाँ हो सकती हैं। समाधान: ट्रिपल इक्वल (===) का उपयोग करें। यह वैल्यू और टाइप दोनों की जाँच करता है।
अनडिफाइंड वेरिएबल्स (Undefined Variables) किसी वेरिएबल को असाइन करने से पहले उसका उपयोग करने से आपका लॉजिक टूट जाता है। समाधान: नल कोलेसिंग ऑपरेटर (null coalescing operator) का उपयोग करें। उदाहरण:
$name = $_GET['name'] ?? 'Guest';ग्लोबल वेरिएबल स्कोप (Global Variable Scope) फंक्शन्स अपने बाहर के वेरिएबल्स को नहीं देख सकते। समाधान: वेरिएबल्स को पैरामीटर्स के रूप में फंक्शन्स में पास करें।
SQL इंजेक्शन (SQL Injection) यूजर इनपुट के साथ क्वेरी बनाना हैकर्स को डेटा चुराने की अनुमति देता है। समाधान: प्लेसहोल्डर्स (?) के साथ प्रिपेयर्ड स्टेटमेंट्स (prepared statements) का उपयोग करें।
क्रॉस-साइट स्क्रिप्टिंग (XSS) यूजर इनपुट को सीधे प्रिंट करने से ब्राउज़र में दुर्भावनापूर्ण (malicious) स्क्रिप्ट चल सकती हैं। समाधान: आउटपुट को
htmlspecialchars()में रैप करें।हेडर्स पहले ही भेजे जा चुके हैं (Headers Already Sent) यदि आप पहले ही ब्राउज़र को कोई टेक्स्ट भेज चुके हैं, तो आप यूजर को रीडायरेक्ट नहीं कर सकते। एक सिंगल स्पेस भी इस एरर का कारण बन सकता है। समाधान:
header()कॉल्स को सबसे ऊपर रखें। रीडायरेक्ट के बाद हमेशाexit()का उपयोग करें।अनडिफाइंड एरे कीज़ (Undefined Array Keys) ऐसी फॉर्म की (key) को एक्सेस करना जो मौजूद नहीं है, वॉर्निंग (warnings) पैदा करता है। समाधान: सभी
$_POSTऔर$_GETडेटा के लिए नल कोलेसिंग ऑपरेटर का उपयोग करें।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