𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 #𝟮𝟭 𝘁𝗼 #𝟯𝟬: 𝗖𝗼𝗺𝗺𝗼𝗻 𝗠𝗶𝘀𝘁𝗮𝗸𝗲𝘀
PHP آپ کو بغیر کسی وارننگ کے غلطیاں کرنے کی اجازت دیتا ہے۔ یہ اکثر چیزیں ناکام ہونے کے باوجود چلتا رہتا ہے۔ اس سے خاموشی سے ڈیٹا کی خرابی (data corruption) یا سیکیورٹی کے مسائل پیدا ہو سکتے ہیں۔
یہاں 10 اہم بگس (bugs) ہیں جن سے بچنا ضروری ہے:
Multibyte Text
strlen()بائٹس (bytes) گنتا ہے، حروف (characters) نہیں۔ اس سے ہندی یا ایموجی ٹیکسٹ خراب ہو جاتا ہے۔ اس کے بجائےmb_strlen()استعمال کریں۔Unvalidated API Calls
file_get_contents()خاموشی سے ناکام ہو سکتا ہے۔json_decode()نل (null) واپس کر سکتا ہے۔ ہمیشہ چیک کریں کہ کیا ریسپانسfalseہے اورjson_last_error()کی تصدیق کریں۔Temporary Cookies بغیر ایکسپائری ڈیٹ کے
setcookie()براؤزر بند ہونے پر کوکی کو ڈیلیٹ کر دیتا ہے۔ ایکسپائری ٹائم سیٹ کریں اور XSS حملوں سے بچنے کے لیےhttponlyفلیگ استعمال کریں۔Unsafe File Uploads صرف فائل ایکسٹینشن چیک کرنا کافی نہیں ہے۔ ہیکرز
shell.phpکا نام بدل کرshell.jpgرکھ دیتے ہیں۔ اصل MIME ٹائپ چیک کرنے کے لیےfinfo_file()استعمال کریں۔Math with Formatted Strings PHP کوما (comma) پر نمبر پڑھنا روک دیتا ہے۔ "1,299.00" بن جاتا ہے 1۔ حساب کتاب کرنے سے پہلے
str_replace()کے ذریعے کوما ہٹا دیں۔ اپنے ڈیٹا بیس میں خام نمبر (raw numbers) اسٹور کریں۔Shared Static Properties اسٹیٹک پراپرٹیز کلاس سے تعلق رکھتی ہیں، آبجیکٹ سے نہیں۔ ہر انسٹنس (instance) ایک ہی ڈیٹا شیئر کرتا ہے۔ صارف کے مخصوص ڈیٹا کے لیے عام پبلک پراپرٹیز استعمال کریں۔
Redirects Without Exit
header("Location: ...")صرف براؤزر کو ایک ہدایت بھیجتا ہے۔ سرور اسکرپٹ کو چلانا جاری رکھتا ہے۔ ری ڈائریکٹ کے بعد ہمیشہexit()کال کریں۔SQL Injection ویری ایبلز کو براہ راست کوئری اسٹرنگز میں ڈالنے سے ہیکرز آپ کے ڈیٹا بیس کو کنٹرول کر سکتے ہیں۔ PDO کے ساتھ prepared statements استعمال کریں۔
Memory Crashes
file_get_contents()پوری فائلوں کو RAM میں لوڈ کرتا ہے۔ بڑی فائلوں پر یہ آپ کے سرور کو کریش کر دیتا ہے۔ فائلوں کو لائن بہ لائن پڑھنے کے لیےfopen()اورfgets()استعمال کریں۔Silent Database Errors PDO ڈیفالٹ طور پر خام رہتا ہے۔ ایررز exceptions پھینکنے کے بجائے
falseواپس کرتے ہیں۔PDO::ATTR_ERRMODEکوPDO::ERRMODE_EXCEPTIONپر سیٹ کریں۔
حل سادہ ہے: واضح رہیں۔ ہر ریٹرن ویلیو کو چیک کریں۔ ہر ان پٹ کی تصدیق کریں۔ کبھی یہ فرض نہ کریں کہ کوئی فنکشن کام کر گیا ہے۔
مکمل آرٹیکل: https://dev.to/bikkisingh/php-bugs-21-to-30-common-mistakes-every-php-developer-must-knowpublished-5hbp