وہ 10 اہم PHP بگ (Bugs) جو ہر مبتدی کرتا ہے
آپ کوڈ لکھتے ہیں۔ آپ پیج کو ریفریش کرتے ہیں۔ آپ کو ایک خالی سفید اسکرین نظر آتی ہے۔
ایسا اس لیے ہوتا ہے کیونکہ PHP ڈیفالٹ کے طور پر خاموشی سے فیل ہو جاتا ہے۔ اگر آپ کو غلطیاں (errors) نظر نہیں آئیں گی، تو آپ انہیں ٹھیک نہیں کر سکیں گے۔
اپنی ڈویلپمنٹ کا آغاز اپنی فائل کے اوپری حصے میں یہ لائنیں شامل کر کے کریں:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
یہ PHP کو مجبور کرتا ہے کہ وہ آپ کو دکھائے کہ کیا غلط ہے۔ اسے پروڈکشن (production) میں استعمال نہ کریں۔
یہاں 10 عام بگ (bugs) اور انہیں ٹھیک کرنے کے طریقے دیے گئے ہیں۔
سمیکولن (Semicolons) کا نہ ہونا PHP کو ایک سٹیٹمنٹ ختم کرنے کے لیے سمیکولن کی ضرورت ہوتی ہے۔ اگر آپ ایک بھی بھول جائیں، تو اسکرپٹ رک جاتا ہے۔ حل: ہمیشہ اپنی لائنوں کو سمیکولن کے ساتھ ختم کریں۔
لووز کمپیرسن (Loose Comparison)
==آپریٹر موازنہ کرنے سے پہلے ٹائپس (types) کو تبدیل کر دیتا ہے۔ اس سے غلط نتائج نکل سکتے ہیں۔ حل:===استعمال کریں۔ یہ ویلیو (value) اور ٹائپ (type) دونوں کو چیک کرتا ہے۔غیر متعین ویری ایبلز (Undefined Variables) ایسا ویری ایبل استعمال کرنا جو آپ نے بنایا ہی نہ ہو، منطقی غلطیاں (logic errors) پیدا کرتا ہے۔ حل: نل کوالسیسنگ آپریٹر (null coalescing operator) استعمال کریں۔
$name = $_GET['name'] ?? 'Guest';گلوبل ویری ایبل اسکوپ (Global Variable Scope) فنکشنز اپنے باہر موجود ویری ایبلز کو نہیں دیکھ سکتے۔ حل: ویری ایبلز کو پیرامیٹرز (parameters) کے طور پر فنکشنز میں پاس کریں۔
SQL انجیکشن (SQL Injection) یوزر ان پٹ کو براہ راست کوئری (query) میں ڈالنا خطرناک ہے۔ حملہ آور آپ کا ڈیٹا چوری کر سکتے ہیں۔ حل: پلیس ہولڈرز (placeholders) کے ساتھ پریپیرڈ سٹیٹمنٹس (prepared statements) استعمال کریں۔
کراس سائٹ اسکرپٹنگ (XSS) خام یوزر ان پٹ کو اسکرین پر پرنٹ کرنے سے براؤزر میں نقصان دہ اسکرپٹس چل سکتے ہیں۔ حل: تمام آؤٹ پٹ پر
htmlspecialchars()استعمال کریں۔ہیڈر ایررز (Header Errors) آپ براؤزر کو کوئی بھی ٹیکسٹ یا سپیس بھیجنے کے بعد ہیڈر نہیں بھیج سکتے۔ حل:
header()کالز کو بالکل شروع میں رکھیں۔ ری ڈائریکٹ (redirect) کے بعد ہمیشہexit()استعمال کریں۔فارم کیز کا نہ ہونا (Missing Form Keys) ایسی فارم کی (key) تک رسائی حاصل کرنا جو موجود نہ ہو، غلطیاں پیدا کرتی ہے۔ حل: ڈیفالٹ ویلیو فراہم کرنے کے لیے نل کوالسیسنگ آپریٹر استعمال کریں۔
Include بمقابلہ 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