தொடக்கநிலை மாணவர்கள் செய்யும் டாப் 10 PHP பிழைகள்
நீங்கள் குறியீடு (code) எழுதுகிறீர்கள். பக்கத்தைப் புதுப்பிக்கிறீர்கள் (refresh). ஆனால் ஒரு வெற்று வெள்ளைத் திரையை மட்டுமே பார்க்கிறீர்கள்.
PHP இயல்பாகவே பிழைகளைத் தெரிவிக்காமல் அமைக்கப்பட்டிருப்பதால் இது நிகழ்கிறது. மேம்பாட்டுப் பணியின் (development) போது பிழைகளைக் காண்பிக்க நீங்கள் கட்டாயப்படுத்த வேண்டும்.
உங்கள் கோப்புகளின் உச்சியில் இந்த வரிகளைச் சேர்க்கவும்:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
இதைத் தயாரிப்புச் சூழலில் (production) பயன்படுத்த வேண்டாம். அதற்குப் பதிலாக ஃபைல் லாக்ஸ்களை (file logs) பயன்படுத்தவும்.
இதோ 10 பொதுவான தவறுகளும் அவற்றைச் சரிசெய்யும் முறைகளும்:
Missing Semicolons நீங்கள் செமிகோலனை மறந்தால் PHP வேலை செய்யாது. இது பெரும்பாலும் பிழையைக் காட்டாமல் செயலிழக்கச் செய்யும். சரிசெய்ய: ஒவ்வொரு கூற்றும் (statement) செமிகோலனுடன் முடிவடைவதை உறுதி செய்யவும்.
Loose Comparison (== vs ===) இரட்டைச் சமக்குறி (double equals sign) தரவு வகையை மாற்றியமைக்கும் (type coercion). இது தர்க்கப் பிழைகளுக்கு (logic errors) வழிவகுக்கும். சரிசெய்ய: மூன்று சமக்குறிகளை (===) பயன்படுத்தவும். இது மதிப்பு (value) மற்றும் தரவு வகை (type) இரண்டையும் சரிபார்க்கும்.
Undefined Variables ஒரு மாறிக்கு (variable) மதிப்பளிப்பதற்கு முன்பே அதைப் பயன்படுத்துவது உங்கள் தர்க்கத்தைச் சிதைக்கும். சரிசெய்ய: null coalescing operator-ஐப் பயன்படுத்தவும். உதாரணம்:
$name = $_GET['name'] ?? 'Guest';Global Variable Scope செயல்பாடுகளால் (functions) அவற்றிற்கு வெளியே உள்ள மாறிகளைக் காண முடியாது. சரிசெய்ய: மாறிகளை அளவுருக்களாக (parameters) செயல்பாடுகளுக்குள் அனுப்பவும்.
SQL Injection பயனர் உள்ளீட்டைப் (user input) பயன்படுத்தி வினவல்களை (queries) உருவாக்குவது ஹேக்கர்கள் தரவைத் திருட வழிவகுக்கும். சரிசெய்ய: பிளேஸ்ஹோல்டர்களுடன் (placeholders - ?) prepared statements-ஐப் பயன்படுத்தவும்.
Cross-Site Scripting (XSS) பயனர் உள்ளீட்டை நேரடியாக அச்சிடுவது, தீங்கிழைக்கும் ஸ்கிரிப்ட்கள் உலாவிகளில் (browsers) இயங்க அனுமதிக்கும். சரிசெய்ய: வெளியீட்டை
htmlspecialchars()மூலம் சுற்றவும்.Headers Already Sent நீங்கள் ஏற்கனவே உலாவியில் உரையை அனுப்பிவிட்டால், பயனரைத் திருப்பி அனுப்ப (redirect) முடியாது. ஒரு சிறிய இடைவெளி (space) கூட இந்தத் தவறை ஏற்படுத்தும். சரிசெய்ய:
header()அழைப்புகளை மிக உச்சியில் வைக்கவும். ஒரு redirect-க்கு பிறகு எப்போதும்exit()பயன்படுத்தவும்.Undefined Array Keys இல்லாத ஒரு ஃபார்ம் விசையை (form key) அணுகுவது எச்சரிக்கைகளை (warnings) ஏற்படுத்தும். சரிசெய்ய: அனைத்து
$_POSTமற்றும்$_GETதரவுகளுக்கும் null coalescing operator-ஐப் பயன்படுத்தவும்.Include vs Require ஒரு கோப்பு விடுபட்டிருந்தால், Include ஒரு எச்சரிக்கையை மட்டுமே காட்டும். ஸ்கிரிப்ட் தொடர்ந்து இயங்கி பின்னர் செயலிழக்கும். சரிசெய்ய: தரவுத்தள இணைப்புகள் (database connections) போன்ற முக்கியமான கோப்புகளுக்கு
require_onceபயன்படுத்தவும்.Unchecked Return Values பல PHP செயல்பாடுகள் தோல்வியடையும் போது
falseஎன்பதைத் திரும்பத் தரும். அந்த முடிவை நீங்கள் உடனடியாகப் பயன்படுத்தினால், மேலும் பிழைகள் ஏற்படும். சரிசெய்ய: முடிவைப் பயன்படுத்துவதற்கு முன்பு அதுfalseதானா என்று சரிபார்க்கவும்.
வெற்றிக்கான சுருக்கம்:
- மேம்பாட்டுப் பணியின் போது பிழை அறிக்கையிடலை (error reporting) இயக்கவும்.
- அனைத்து ஒப்பீடுகளுக்கும் === பயன்படுத்தவும்.
- அனைத்து பயனர் உள்ளீடுகளையும் சுத்திகரிக்கவும் (Sanitize).
- திரும்பப் பெறும் மதிப்புகளைச் சரிபார்க்கவும்.
Source: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh