𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 𝗘𝘃𝗲𝗿𝘆 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝗠𝗮𝗸𝗲𝘀
நீங்கள் குறியீடு (code) எழுதுகிறீர்கள். பக்கத்தைப் புதுப்பிக்கிறீர்கள் (refresh). ஆனால் ஒரு வெற்று வெள்ளைத் திரையை மட்டுமே பார்க்கிறீர்கள்.
PHP இயல்பாகவே பிழைகளைத் தெரிவிக்காமல் (fails silently) இருப்பதால் இது நிகழ்கிறது. பிழைகளை நீங்கள் பார்க்கவில்லை என்றால், அவற்றைச் சரிசெய்ய முடியாது.
உங்கள் கோப்பின் (file) தொடக்கத்தில் இந்த வரிகளைச் சேர்ப்பதன் மூலம் உங்கள் மேம்பாட்டைத் (development) தொடங்குங்கள்:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
இது என்ன தவறு என்பதை PHP உங்களுக்குக் காட்டத் தூண்டும். இதைத் தயாரிப்புச் சூழலில் (production) பயன்படுத்த வேண்டாம்.
இதோ 10 பொதுவான பிழைகளும் அவற்றைச் சரிசெய்யும் முறைகளும்.
செமிகோலன்கள் (Semicolons) விடுபடுதல் ஒரு கூற்றை (statement) முடிக்க PHP-க்கு செமிகோலன் தேவை. ஒன்றை நீங்கள் தவறவிட்டால், ஸ்கிரிப்ட் நின்றுவிடும். சரிசெய்ய: எப்போதும் உங்கள் வரிகளை ஒரு செமிகோலனுடன் முடிக்கவும்.
தளர்வான ஒப்பீடு (Loose Comparison)
==ஆபரேட்டர் ஒப்பிடுவதற்கு முன் தரவு வகைகளை (types) மாற்றுகிறது. இது தவறான முடிவுகளுக்கு வழிவகுக்கும். சரிசெய்ய:===ஐப் பயன்படுத்தவும். இது மதிப்பு (value) மற்றும் வகை (type) ஆகிய இரண்டையும் சரிபார்க்கும்.வரையறுக்கப்படாத மாறிகள் (Undefined Variables) நீங்கள் உருவாக்காத ஒரு மாறியைப் (variable) பயன்படுத்துவது தர்க்கப் பிழைகளை (logic errors) ஏற்படுத்தும். சரிசெய்ய: null coalescing ஆபரேட்டரைப் பயன்படுத்தவும்.
$name = $_GET['name'] ?? 'Guest';உலகளாவிய மாறி வரம்பு (Global Variable Scope) செயல்பாடுகளால் (functions) அவற்றிற்கு வெளியே உள்ள மாறிகளைப் பார்க்க முடியாது. சரிசெய்ய: மாறிகளை அளவுருக்களாக (parameters) செயல்பாடுகளுக்குள் அனுப்பவும்.
SQL Injection பயனர் உள்ளீட்டை (user input) நேரடியாக ஒரு வினவலில் (query) சேர்ப்பது ஆபத்தானது. தாக்குபவர்கள் உங்கள் தரவைத் திருடக்கூடும். சரிசெய்ய: பிளேஸ்ஹோல்டர்களுடன் (placeholders) prepared statements ஐப் பயன்படுத்தவும்.
Cross-Site Scripting (XSS) பயனர் உள்ளீட்டை அப்படியே திரையில் அச்சிடுவது, உலாவிகளில் (browsers) தீங்கிழைக்கும் ஸ்கிரிப்ட்கள் இயங்க வழிவகுக்கும். சரிசெய்ய: அனைத்து வெளியீடுகளிலும்
htmlspecialchars()ஐப் பயன்படுத்தவும்.ஹெடர் பிழைகள் (Header Errors) உலாவியில் ஏதேனும் உரை அல்லது இடைவெளிகளை (spaces) அனுப்பிய பிறகு, நீங்கள் ஹெடரை (header) அனுப்ப முடியாது. சரிசெய்ய:
header()அழைப்புகளை மிகத் தொடக்கத்திலேயே வைக்கவும். ஒரு ரீடைரெக்ட் (redirect) செய்த பிறகு எப்போதும்exit()ஐப் பயன்படுத்தவும்.விடுபட்ட படிவத் திறவுகோல்கள் (Missing Form Keys) இல்லாத ஒரு படிவத் திறவுகோலை (form key) அணுகுவது பிழைகளை ஏற்படுத்தும். சரிசெய்ய: இயல்பு மதிப்பை (default value) வழங்க null coalescing ஆபரேட்டரைப் பயன்படுத்தவும்.
Include vs Require ஒரு கோப்பு விடுபட்டிருந்தால்
includeகட்டளை எச்சரிக்கையை (warning) மட்டுமே வழங்கும். ஸ்கிரிப்ட் தொடர்ந்து இயங்கி பின்னர் செயலிழந்துவிடும் (crash). சரிசெய்ய: தரவுத்தள இணைப்புகள் (database connections) போன்ற முக்கியமான கோப்புகளுக்குrequire_onceஐப் பயன்படுத்தவும்.சரிபார்க்கப்படாத திரும்பப் பெறும் மதிப்புகள் (Unchecked Return Values) பல PHP செயல்பாடுகள் தோல்வியடைந்தால்
falseஎன்பதைத் திரும்பத் தரும். அந்தfalseமதிப்பை அடுத்த கட்டத்தில் பயன்படுத்துவது செயலிழப்பை ஏற்படுத்தும். சரிசெய்ய: முடிவைப் பயன்படுத்துவதற்கு முன், செயல்பாடுfalseஎன்பதைத் திரும்பத் தந்ததா என்று சரிபார்க்கவும்.
சிறந்த குறியீட்டிற்கான சுருக்கம்:
• மேம்பாட்டு நிலையில் (development) பிழை அறிக்கையிடலை (error reporting) இயக்கவும்.
• == க்குப் பதிலாக === ஐப் பயன்படுத்தவும்.
• திரும்பப் பெறும் மதிப்புகளைச் (return values) சரிபார்க்கவும்.
• அனைத்து பயனர் உள்ளீடுகளையும் சுத்திகரிக்கவும் (Sanitize).
ஆதாரம்: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh