प्रत्येक नवशिक्याकडून होणाऱ्या टॉप १० PHP चुका
तुम्ही कोड लिहिता. तुम्ही रिफ्रेश करता. आणि तुम्हाला फक्त एक कोरा पांढरा स्क्रीन दिसतो.
हे घडते कारण PHP बाय डिफॉल्ट शांतपणे फेल होते. डेव्हलपमेंट दरम्यान एरर्स दाखवण्यासाठी तुम्हाला ते फोर्स करावे लागेल.
तुमच्या फाईल्सच्या सुरुवातीला या ओळी जोडा:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
हे प्रोडक्शनमध्ये (production) वापरू नका. त्याऐवजी फाईल लॉग्सचा (file logs) वापर करा.
येथे १० सामान्य चुका आणि त्या कशा सुधाराव्या याबद्दल माहिती दिली आहे:
सेमीकोलन (Semicolons) विसरणे जर तुम्ही सेमीकोलन विसरलात तर PHP काम करणे थांबवते. यामुळे अनेकदा कोड शांतपणे क्रॅश होतो. उपाय: प्रत्येक स्टेटमेंटच्या शेवटी सेमीकोलन असल्याची खात्री करा.
लूज कंपॅरिझन (Loose Comparison) (== vs ===) डबल इक्वल साइन 'type coercion' करते. यामुळे लॉजिकमध्ये चुका होऊ शकतात. उपाय: ट्रिपल इक्वल (===) वापरा. ते व्हॅल्यू (value) आणि टाईप (type) दोन्ही तपासते.
अनडिफाइन्ड व्हेरिएबल्स (Undefined Variables) व्हेरिएबल असाइन करण्यापूर्वी त्याचा वापर केल्यास तुमचे लॉजिक बिघडते. उपाय: 'null coalescing operator' वापरा. उदाहरण:
$name = $_GET['name'] ?? 'Guest';ग्लोबल व्हेरिएबल स्कोप (Global Variable Scope) फंक्शन्सना त्यांच्या बाहेरचे व्हेरिएबल्स दिसत नाहीत. उपाय: फंक्शन्समध्ये व्हेरिएबल्स पॅरामीटर्स (parameters) म्हणून पास करा.
SQL इंजेक्शन (SQL Injection) युजर इनपुट वापरून क्वेरीज (queries) तयार केल्यास हॅकर्स डेटा चोरू शकतात. उपाय: प्लेसहोल्डर्स (?) सह 'prepared statements' वापरा.
क्रॉस-साइट स्क्रिप्टिंग (XSS) युजर इनपुट थेट प्रिंट केल्यास ब्राउझरमध्ये घातक स्क्रिप्ट्स रन होऊ शकतात. उपाय: आउटपुट
htmlspecialchars()मध्ये गुंडाळा (wrap).हेडर्स आधीच पाठवले गेले (Headers Already Sent) जर तुम्ही आधीच ब्राउझरला काही टेक्स्ट पाठवले असेल, तर तुम्ही युजरला रिडायरेक्ट (redirect) करू शकत नाही. अगदी एक स्पेस देखील हा एरर आणू शकते. उपाय:
header()कॉल्स अगदी सुरुवातीला ठेवा. रिडायरेक्ट नंतर नेहमीexit()वापरा.अनडिफाइन्ड ॲरे कीज (Undefined Array Keys) अस्तित्वात नसलेली फॉर्म की ॲक्सेस केल्यास वॉर्निंग्स (warnings) येतात. उपाय: सर्व
$_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