തുടക്കക്കാർ സാധാരണയായി വരുത്തുന്ന ടോപ്പ് 10 PHP ബഗുകൾ

നിങ്ങൾ കോഡ് എഴുതുന്നു. പേജ് റിഫ്രഷ് ചെയ്യുന്നു. പക്ഷേ കാണുന്നത് ഒരു വെളുത്ത സ്ക്രീൻ മാത്രമാണ്.

PHP ഡിഫോൾട്ട് ആയി എററുകൾ കാണിക്കാത്തതുകൊണ്ടാണ് ഇങ്ങനെ സംഭവിക്കുന്നത്. എററുകൾ കാണുന്നില്ലെങ്കിൽ അവ പരിഹരിക്കാൻ നിങ്ങൾക്ക് കഴിയില്ല.

നിങ്ങളുടെ ഫയലിന്റെ മുകളിൽ ഈ വരികൾ ചേർത്ത് ഡെവലപ്‌മെന്റ് ആരംഭിക്കുക:

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

ഇത് എവിടെയാണ് തെറ്റുകൾ ഉള്ളതെന്ന് കാണിക്കാൻ PHP-യെ നിർബന്ധിക്കുന്നു. ഇത് പ്രൊഡക്ഷൻ (production) എൻവയോൺമെന്റുകളിൽ ഉപയോഗിക്കരുത്.

സാധാരണയായി കണ്ടുവരുന്ന 10 ബഗുകളും അവ എങ്ങനെ പരിഹരിക്കാം എന്നതും താഴെ നൽകുന്നു.

  1. Missing Semicolons (സെമികോളനുകൾ വിട്ടുപോവുക) ഒരു സ്റ്റേറ്റ്‌മെന്റ് അവസാനിപ്പിക്കാൻ PHP-ക്ക് ഒരു സെമികോളൺ ആവശ്യമാണ്. അത് വിട്ടുപോയാൽ സ്ക്രിപ്റ്റ് പ്രവർത്തിക്കുന്നത് നിൽക്കും. പരിഹാരം: എപ്പോഴും വരികൾ ഒരു സെമികോളൺ ഉപയോഗിച്ച് അവസാനിപ്പിക്കുക.

  2. Loose Comparison (ലൂസ് കമ്പാരിസൺ) == ഓപ്പറേറ്റർ താരതമ്യം ചെയ്യുന്നതിന് മുമ്പ് ഡാറ്റാ ടൈപ്പുകൾ മാറ്റുന്നു. ഇത് തെറ്റായ ഫലങ്ങളിലേക്ക് നയിച്ചേക്കാം. പരിഹാരം: === ഉപയോഗിക്കുക. ഇത് വാല്യൂവും (value) ടൈപ്പും (type) പരിശോധിക്കുന്നു.

  3. Undefined Variables (നിർവചിക്കാത്ത വേരിയബിളുകൾ) നിങ്ങൾ നിർവചിക്കാത്ത ഒരു വേരിയബിൾ ഉപയോഗിക്കുന്നത് ലോജിക് എററുകൾക്ക് കാരണമാകും. പരിഹാരം: null coalescing operator ഉപയോഗിക്കുക. $name = $_GET['name'] ?? 'Guest';

  4. Global Variable Scope (ഗ്ലോബൽ വേരിയബിൾ സ്കോപ്പ്) ഫങ്ക്ഷനുകൾക്ക് പുറത്തുള്ള വേരിയബിളുകളെ അവയ്ക്ക് കാണാൻ കഴിയില്ല. പരിഹാരം: വേരിയബിളുകളെ പാരാമീറ്ററുകളായി ഫങ്ക്ഷനുകളിലേക്ക് പാസ്സ് ചെയ്യുക.

  5. SQL Injection യൂസർ ഇൻപുട്ട് നേരിട്ട് ഒരു ക്വറിയിൽ (query) ഉൾപ്പെടുത്തുന്നത് അപകടകരമാണ്. അറ്റാക്കർമാർക്ക് നിങ്ങളുടെ ഡാറ്റ മോഷ്ടിക്കാൻ ഇതിലൂടെ സാധിക്കും. പരിഹാരം: പ്ലേസ്‌ഹോൾഡറുകൾ (placeholders) ഉപയോഗിച്ച് prepared statements ഉപയോഗിക്കുക.

  6. Cross-Site Scripting (XSS) യൂസറുടെ ഇൻപുട്ട് നേരിട്ട് സ്ക്രീനിൽ പ്രിന്റ് ചെയ്യുന്നത് ബ്രൗസറുകളിൽ മാലീഷ്യസ് സ്ക്രിപ്റ്റുകൾ (malicious scripts) പ്രവർത്തിക്കാൻ കാരണമാകും. പരിഹാരം: എല്ലാ ഔട്ട്‌പുട്ടിലും htmlspecialchars() ഉപയോഗിക്കുക.

  7. Header Errors (ഹെഡർ എററുകൾ) ബ്രൗസറിലേക്ക് ഏതെങ്കിലും ടെക്സ്റ്റോ സ്പേസോ അയച്ചതിന് ശേഷം നിങ്ങൾക്ക് ഹെഡർ (header) അയക്കാൻ കഴിയില്ല. പരിഹാരം: header() കോളുകൾ ഫയലിന്റെ ഏറ്റവും മുകളിൽ നൽകുക. ഒരു റീഡയറക്റ്റിന് (redirect) ശേഷം എപ്പോഴും exit() ഉപയോഗിക്കുക.

  8. Missing Form Keys (ഫോം കീകൾ വിട്ടുപോവുക) നിലവിലില്ലാത്ത ഒരു ഫോം കീ ആക്സസ് ചെയ്യുന്നത് എററുകൾക്ക് കാരണമാകും. പരിഹാരം: ഒരു ഡിഫോൾട്ട് വാല്യൂ നൽകാൻ null coalescing operator ഉപയോഗിക്കുക.

  9. Include vs Require ഒരു ഫയൽ കാണാതിരുന്നാൽ include കമാൻഡ് ഒരു വാർണിംഗ് (warning) മാത്രമേ നൽകുന്നുള്ളൂ. സ്ക്രിപ്റ്റ് തുടർന്നും പ്രവർത്തിക്കുകയും പിന്നീട് ക്രാഷ് ആകുകയും ചെയ്യും. പരിഹാരം: ഡാറ്റാബേസ് കണക്ഷനുകൾ പോലുള്ള നിർണ്ണായക ഫയലുകൾക്കായി require_once ഉപയോഗിക്കുക.

  10. 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