𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 𝗘𝘃𝗲𝗿𝘆 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝗠𝗮𝗸𝗲𝘀
तुम्ही कोड लिहिता. तुम्ही पेज रिफ्रेश करता. आणि तुम्हाला फक्त एक कोरा पांढरा स्क्रीन दिसतो.
असे घडते कारण PHP बाय डिफॉल्ट (by default) शांतपणे फेल होते. जर तुम्हाला एरर्स (errors) दिसत नसतील, तर तुम्ही त्या सुधारू शकत नाही.
तुमच्या फाईलच्या सुरुवातीला या ओळी जोडून तुमची डेव्हलपमेंट सुरू करा:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
यामुळे PHP तुम्हाला काय चूक आहे ते दाखवण्यास भाग पाडते. हे प्रोडक्शन (production) मध्ये वापरू नका.
येथे १० सामान्य बग्स (bugs) आणि ते कसे सुधारायचे याची माहिती दिली आहे.
सेमीकोलन (Semicolons) विसरणे स्टेटमेंट संपवण्यासाठी PHP ला सेमीकोलनची गरज असते. जर तुम्ही एकही विसरलात, तर स्क्रिप्ट थांबते. उपाय: तुमच्या ओळी नेहमी सेमीकोलनने संपवा.
लूज कंपॅरिझन (Loose Comparison)
==ऑपरेटर तुलना करण्यापूर्वी डेटाचे प्रकार (types) बदलतो. यामुळे चुकीचे निकाल मिळू शकतात. उपाय:===वापरा. हे व्हॅल्यू (value) आणि टाईप (type) दोन्ही तपासते.अनडिफाइन्ड व्हेरिएबल्स (Undefined Variables) तुम्ही तयार न केलेले व्हेरिएबल वापरल्यामुळे लॉजिक एरर्स (logic errors) येतात. उपाय: नुल कोलेसिंग ऑपरेटर (null coalescing operator) वापरा.
$name = $_GET['name'] ?? 'Guest';ग्लोबल व्हेरिएबल स्कोप (Global Variable Scope) फंक्शन्सना त्यांच्याबाहेरील व्हेरिएबल्स दिसत नाहीत. उपाय: फंक्शन्समध्ये व्हेरिएबल्स पॅरामीटर्स (parameters) म्हणून पास करा.
SQL इंजेक्शन (SQL Injection) युजर इनपुट थेट क्वेरीमध्ये टाकणे धोकादायक आहे. हॅकर्स तुमचा डेटा चोरू शकतात. उपाय: प्लेसहोल्डर्ससह (placeholders) प्रिपर्ड स्टेटमेंट्स (prepared statements) वापरा.
क्रॉस-साइट स्क्रिप्टिंग (XSS) युजरचे रॉ इनपुट (raw input) स्क्रीनवर प्रिंट केल्यामुळे ब्राउझरमध्ये घातक स्क्रिप्ट्स रन होऊ शकतात. उपाय: सर्व आउटपुटवर
htmlspecialchars()वापरा.हेडर एरर्स (Header Errors) ब्राउझरला कोणताही मजकूर किंवा स्पेस पाठवल्यानंतर तुम्ही हेडर (header) पाठवू शकत नाही. उपाय:
header()कॉल्स अगदी सुरुवातीला ठेवा. रिडायरेक्ट (redirect) नंतर नेहमीexit()वापरा.फॉर्म कीजचा अभाव (Missing Form Keys) अस्तित्वात नसलेली फॉर्म की (form key) एक्सेस केल्यामुळे एरर्स येतात. उपाय: डिफॉल्ट व्हॅल्यू देण्यासाठी नुल कोलेसिंग ऑपरेटर वापरा.
Include विरुद्ध Require
includeकमांड फाईल नसेल तर फक्त वॉर्निंग (warning) देते. स्क्रिप्ट चालू राहते आणि नंतर क्रॅश होते. उपाय: डेटाबेस कनेक्शनसारख्या महत्त्वाच्या फाईल्ससाठीrequire_onceवापरा.अनचेक्ड रिटर्न व्हॅल्यूज (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