ప్రతి ప్రారంభకుడి చేసే టాప్ 10 PHP బగ్స్
మీరు కోడ్ రాస్తారు. రిఫ్రెష్ చేస్తారు. కానీ మీకు ఖాళీ తెల్లటి స్క్రీన్ కనిపిస్తుంది.
PHP డిఫాల్ట్గా ఎర్రర్లను చూపించదు (fails silently), అందుకే ఇలా జరుగుతుంది. డెవలప్మెంట్ సమయంలో ఎర్రర్లను చూపించేలా మీరు తప్పనిసరిగా చేయాలి.
మీ ఫైల్స్ పైన ఈ లైన్లను జోడించండి:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
దీనిని ప్రొడక్షన్ (production) లో ఉపయోగించకండి. దానికి బదులుగా ఫైల్ లాగ్స్ (file logs) ఉపయోగించండి.
ఇక్కడ 10 సాధారణ తప్పులు మరియు వాటిని ఎలా సరిదిద్దాలో చూడండి:
సెమీకోలన్లు (Semicolons) మర్చిపోవడం మీరు సెమీకోలన్ మర్చిపోతే PHP పనిచేయడం ఆగిపోతుంది. ఇది తరచుగా ఎర్రర్ చూపించకుండానే ప్రోగ్రామ్ ఆగిపోయేలా చేస్తుంది. పరిష్కారం: ప్రతి స్టేట్మెంట్ చివర సెమీకోలన్ ఉండేలా చూసుకోండి.
లూస్ కంపారిజన్ (Loose Comparison) (== vs ===) డబుల్ ఈక్వల్ గుర్తు టైప్ కోర్షన్ (type coercion) చేస్తుంది. దీనివల్ల లాజిక్ ఎర్రర్స్ వస్తాయి. పరిష్కారం: ట్రిపుల్ ఈక్వల్ (===) ఉపయోగించండి. ఇది వాల్యూ మరియు టైప్ రెండింటినీ తనిఖీ చేస్తుంది.
అన్డిఫైన్డ్ వేరియబుల్స్ (Undefined Variables) వేరియబుల్కు విలువను కేటాయించకముందే దానిని ఉపయోగించడం వల్ల మీ లాజిక్ దెబ్బతింటుంది. పరిష్కారం: నల్ కోలేసింగ్ ఆపరేటర్ (null coalescing operator) ఉపయోగించండి. ఉదాహరణ:
$name = $_GET['name'] ?? 'Guest';గ్లోబల్ వేరియబుల్ స్కోప్ (Global Variable Scope) ఫంక్షన్ల బయట ఉన్న వేరియబుల్స్ను ఫంక్షన్లు చూడలేవు. పరిష్కారం: వేరియబుల్స్ను పారామీటర్లుగా ఫంక్షన్లలోకి పంపండి.
SQL ఇంజెక్షన్ (SQL Injection) యూజర్ ఇన్పుట్తో క్వెరీలను నిర్మించడం వల్ల హ్యాకర్లు డేటాను దొంగిలించే అవకాశం ఉంటుంది. పరిష్కారం: ప్లేస్హోల్డర్స్ (?) తో ప్రిపేర్డ్ స్టేట్మెంట్స్ (prepared statements) ఉపయోగించండి.
క్రాస్-సైట్ స్క్రిప్టింగ్ (XSS) యూజర్ ఇన్పుట్ను నేరుగా ప్రింట్ చేయడం వల్ల బ్రౌజర్లలో హానికరమైన స్క్రిప్ట్లు రన్ అయ్యే అవకాశం ఉంది. పరిష్కారం: అవుట్పుట్ను
htmlspecialchars()లో చుట్టండి (wrap).హెడర్స్ ఆల్రెడీ సెంట్ (Headers Already Sent) మీరు ఇప్పటికే బ్రౌజర్కు ఏదైనా టెక్స్ట్ను పంపి ఉంటే, యూజర్ను రీడైరెక్ట్ చేయలేరు. ఒక్క స్పేస్ ఉన్నా ఈ ఎర్రర్ వస్తుంది. పరిష్కారం:
header()కాల్స్ను ఫైల్ పైన ఉంచండి. రీడైరెక్ట్ చేసిన తర్వాత ఎల్లప్పుడూexit()ఉపయోగించండి.అన్డిఫైన్డ్ అర్రే కీస్ (Undefined Array Keys) లేని ఫామ్ కీని యాక్సెస్ చేయడం వల్ల వార్నింగ్స్ వస్తాయి. పరిష్కారం: అన్ని
$_POSTమరియు$_GETడేటా కోసం నల్ కోలేసింగ్ ఆపరేటర్ ఉపయోగించండి.Include vs 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