𝗧𝗲𝗹𝘂𝗴𝘂: ప్రతి ప్రారంభకుడి చేసే టాప్ 10 PHP బగ్స్
మీరు కోడ్ రాస్తారు. పేజీని రిఫ్రెష్ చేస్తారు. మీకు ఖాళీ తెల్లటి స్క్రీన్ కనిపిస్తుంది.
ఇది PHP డిఫాల్ట్గా ఎర్రర్లను చూపించకపోవడం వల్ల జరుగుతుంది. మీకు ఎర్రర్లు కనిపించకపోతే, మీరు వాటిని సరిచేయలేరు.
మీ ఫైల్ పైన ఈ లైన్లను జోడించడం ద్వారా మీ డెవలప్మెంట్ను ప్రారంభించండి:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
ఇది PHP లో ఏది తప్పుగా ఉందో మీకు చూపించమని బలవంతం చేస్తుంది. దీనిని ప్రొడక్షన్ (production) లో ఉపయోగించవద్దు.
ఇక్కడ 10 సాధారణ బగ్స్ మరియు వాటిని ఎలా సరిచేయాలో చూడండి.
సెమీకోలన్లు (Semicolons) మిస్ అవ్వడం PHP స్టేట్మెంట్ను ముగించడానికి సెమీకోలన్ అవసరం. మీరు దానిని మర్చిపోతే, స్క్రిప్ట్ ఆగిపోతుంది. పరిష్కారం: ఎల్లప్పుడూ మీ లైన్లను సెమీకోలన్తో ముగించండి.
లూస్ కంపారిజన్ (Loose Comparison)
==ఆపరేటర్ పోల్చడానికి ముందు డేటా టైప్స్ను మారుస్తుంది. ఇది తప్పుడు ఫలితాలకు దారితీస్తుంది. పరిష్కారం:===ఉపయోగించండి. ఇది విలువ (value) మరియు టైప్ (type) రెండింటినీ తనిఖీ చేస్తుంది.అన్డిఫైన్డ్ వేరియబుల్స్ (Undefined Variables) మీరు సృష్టించని వేరియబుల్ను ఉపయోగించడం వల్ల లాజిక్ ఎర్రర్లు వస్తాయి. పరిష్కారం: null coalescing ఆపరేటర్ను ఉపయోగించండి.
$name = $_GET['name'] ?? 'Guest';గ్లోబల్ వేరియబుల్ స్కోప్ (Global Variable Scope) ఫంక్షన్లు వాటి వెలుపల ఉన్న వేరియబుల్స్ను చూడలేవు. పరిష్కారం: వేరియబుల్స్ను పారామీటర్లుగా ఫంక్షన్లలోకి పంపండి.
SQL ఇంజెక్షన్ (SQL Injection) యూజర్ ఇన్పుట్ను నేరుగా క్వరీలోకి పంపడం ప్రమాదకరం. అటాకర్లు మీ డేటాను దొంగిలించవచ్చు. పరిష్కారం: ప్లేస్హోల్డర్లతో (placeholders) ప్రిపేర్డ్ స్టేట్మెంట్లను (prepared statements) ఉపయోగించండి.
క్రాస్-సైట్ స్క్రిప్టింగ్ (XSS) యూజర్ ఇన్పుట్ను నేరుగా స్క్రీన్పై ప్రింట్ చేయడం వల్ల బ్రౌజర్లలో మాలీషియస్ స్క్రిప్ట్లు రన్ అయ్యే అవకాశం ఉంది. పరిష్కారం: అన్ని అవుట్పుట్లపై
htmlspecialchars()ఉపయోగించండి.హెడర్ ఎర్రర్స్ (Header Errors) బ్రౌజర్కు ఏదైనా టెక్స్ట్ లేదా స్పేస్లను పంపిన తర్వాత మీరు హెడర్ను పంపలేరు. పరిష్కారం:
header()కాల్స్ను ఫైల్ పైన ఉంచండి. రీడైరెక్ట్ (redirect) తర్వాత ఎల్లప్పుడూexit()ఉపయోగించండి.ఫామ్ కీలు మిస్ అవ్వడం (Missing Form Keys) లేని ఫామ్ కీని యాక్సెస్ చేయడం వల్ల ఎర్రర్లు వస్తాయి. పరిష్కారం: డిఫాల్ట్ విలువను అందించడానికి null coalescing ఆపరేటర్ను ఉపయోగించండి.
Include vs Require ఫైల్ లేనప్పుడు
includeకమాండ్ కేవలం వార్నింగ్ మాత్రమే ఇస్తుంది. స్క్రిప్ట్ రన్ అవుతూనే ఉంటుంది మరియు తర్వాత క్రాష్ అవుతుంది. పరిష్కారం: డేటాబేస్ కనెక్షన్ల వంటి ముఖ్యమైన ఫైళ్ల కోసం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