PHP پروگرامر کے لیے جن امور کا جاننا ضروری ہے ان میں سے ایک یہ بھی ہے کہ Server پر اپ لوڈ ہونے والی فائل کیسے ہینڈل کی جاتی ہے۔ ویب سرور پر اپ لوڈ ہونے والی فائل ایک عارضی فولڈر میں محفوظ کی جاتی ہے۔ PHP اس فائل کے متعلق مختلف نوعیت کی معلومات فراہم کرتی ہے جن کی مدد سے آپ اپنی ایپلی کیشن میں یہ فیصلہ کر سکتے ہیں کہ یہ فائل قابل قبول ہے یا نہیں۔ اگر فائل آپ کی طے کردہ شرائط پر پورا نہ اترے تو پھر اسے کچھ عرصہ کے بعد عارضی فولڈر سے ڈیلیٹ کر دیا جاتا ہے۔ اور اگر یہ فائل طے کردہ شرائط کے مطابق ہے تو آپ بذریعہ کوڈ اسے عارضی فولڈر سے اپنی مرضی کے فولڈر میں منتقل کر لیتے ہیں۔
فائل اپ لوڈ ہونے کا عمل
درج ذیل اسکرین شاٹ کے اوپر والے حصے میں وہ فام نظر آرہا ہے جس کی مدد سے فائل اپ لوڈ کی جا سکتی ہے۔ اس فارم میں موجود Choose File بٹن کی مدد سے ڈسک سے فائل منتخب کی گئی ہے، اور پھر Upload بٹن کی مدد سے فائل ویب سرور کی طرف بھیج دی گئی ہے۔ جبکہ نچلے حصے میں آپ دیکھ سکتے ہیں کہ فائل اپ لوڈ ہونے کے بعد مطلوبہ فولڈر میں پہنچ چکی ہے۔
ویب سرور پر چلنے والا PHP کوڈ
صارف جب Upload بٹن پر کلک کر کے فائل اپ لوڈ کرے گا تو ویب سرور پر موجود درج ذیل PHP کوڈ اسے ہینڈل کرے گا۔ آئیں کوڈ کی وضاحت دیکھیں:
- لائن نمبر 2 پر چیک کیا گیا ہے کہ اگر صارف نے فائل اپ لوڈ کرنے والا فارم پوسٹ کیا ہے تو پھر If-statement کے بلاک کے اندر موجود کوڈ پر عمل کیا جائے۔
- لائن 4 سے 8 تک سیٹنگز کے ویری ایبلز ہیں جو بعد کے کوڈ میں استعمال ہوں گے۔ مثلاً اپ لوڈ ہونے والی فائل کس فولڈر میں محفوظ کی جائے، کونسی فائل ایکسٹینشن اپ لوڈ کرنے کی اجازت ہے، اپ لوڈ ہونے والی فائل کا زیادہ سے زیادہ سائز کیا ہو، اور اس فائل کے مکمل پاتھ پر مشتمل ویری ایبل جسے آپ HTML میں امیج دکھانے کے لیے استعمال کر سکتے ہیں۔
- لائن 10 سے لے کر 13 تک اپ لوڈ ہونے والی فائل کی پراپرٹیز حاصل کی گئی ہیں۔ اس مقصد کے لیے If-statement کی بجائے Ternary operators کا طریقہ استعمال کیا گیا ہے تاکہ کوڈ مختصر رکھا جا سکے۔ لائن 14 تا 16 اپ لوڈ ہونے والی فائل کی ایکسٹینشن حاصل کی گئی ہے تاکہ یہ دیکھا جا سکے کہ یہ امیج فائل ہے یا نہیں۔ لائن 17 پر success$ ویری ایبل کی ویلیو 1 رکھی گئی ہے۔ یعنی پہلے یہ فرض کیا گیا ہے کہ فائل بالکل ٹھیک اپ لوڈ ہوگئی ہے، لیکن اگر صارف نے غلط فائل اپ لوڈ کی تو بعد والے کوڈ میں یہ ویلیو 0 کر دی جائے گی، جس کا مطلب یہ ہوگا کہ یہ فائل اصل فولڈر میں محفوظ نہ کی جائے۔
- لائن 20 پر یہ دیکھا گیا ہے کہ PHP کو اپ لوڈ کے دوران کسی ایرر کا سامنا تو نہیں کرنا پڑا۔ ایرر کی صورت میں اگلی لائن پر success$ ویری ایبل کی ویلیو 0 کر دی جائے گی۔ کوڈ کی ٹیسٹنگ کے دوران اگر آپ یہ دیکھنا چاہیں کہ کس قسم کا ایرر موصول ہوا تھا تو اس کے لیے درج ذیل ویلیو پرنٹ کر کے دیکھیں:
$_FILES["image_file"]["error"] - لائن نمبر 23 اور 34 کے درمیان موجود کوڈ پر اس صورت میں عمل ہوگا جب PHP کو فائل اپ لوڈنگ کے متعلق کسی ایرر کا سامنا نہیں کرنا پڑا۔ لائن 24 سے 28 تک یہ دیکھا گیا ہے کہ صارف نے حد سے بڑی فائل تو اپ لوڈ نہیں کر دی۔ اور لائن 29 سے 33 تک یہ دیکھا گیا ہے کہ صارف نے امیج کے علاوہ تو کوئی فائل اپ لوڈ نہیں کر دی۔
- اگر پچھلے مرحلے پر سب کچھ ٹھیک رہا ہے تو پھر لائن 37 سے لے کر 48 تک کوڈ پر عمل کیا جائے گا۔ اس کوڈ میں تاریخ، وقت اور خودکار نمبر کی مدد سے فائل کا منفرد نام تیار کیا گیا ہے۔ اور پھر ()move_uploaded_file فنکشن کی مدد سے اس فائل کو عارضی فولڈر سے اصل فولڈر میں منتقل کر دیا گیا ہے۔ PHP کے ذریعے جو فائل اپ لوڈ کی جاتی ہے وہ ایک tmp یعنی عارضی فولڈر میں رکھی جاتی ہے، اگر آپ اسے اپنی مرضی کے فولڈر میں منتقل نہیں کرتے تو پھر یہ کچھ عرصہ کے بعد خود بخود عارضی فولڈر سے ڈیلیٹ ہو جاتی ہے۔ لائن 42 پر یہ چیک کیا گیا ہے کہ یہ فائل مطلوبہ فولڈر میں کامیابی سے منتقل ہوگئی ہے یا نہیں۔ اگر ہوگئی ہے تو پھر کامیابی کے پیغام پر مشتمل ویری ایبل بنایا گیا ہے۔
صارف کے براؤزر پر چلنے والا HTML اور Javascript کوڈ
درج ذیل ویب پیج کا کوڈ ہے جو صارف کے براؤزر پر چلے گا۔ آئیں اس کی وضاحت دیکھتے ہیں:
- لائن 57 سے لے کر 64 تک ایک مختصر سا Javascript کوڈ ہے جس کے ذریعے اپ لوڈ ہونے والی فائل کا سائز چیک کیا گیا ہے۔ اگرچہ ویب سرور پر PHP کوڈ کے ذریعے یہ تسلی کی گئی ہے کہ صارف غلط فائل اپ لوڈ نہ کر سکے۔ لیکن ویب سرور پر PHP کوڈ تبھی فائل کے متعلق جانچ پڑتال کر سکتا ہے جب فائل اپ لوڈ ہو جائے۔ اگر کوڈ کو ٹھیک فائل موصول ہوتی ہے تو وہ اسے رکھ لیتا ہے ورنہ ضائع کر دیتا ہے۔ چنانچہ ہم یہ چاہتے ہیں کہ تھوڑی سی جانچ پڑتال صارف کے براؤزر پر ہی ہو جائے تاکہ وہ غلطی میں ضرورت سے بڑی فائل اپ لوڈ نہ کرنا شروع کر دے۔ ایسا کرنے کا مقصد صارف اور سرور دونوں کا وقت بچانا ہے۔ لیکن PHP کے ذریعے پڑتال کرنا لازمی ہے، اس لیے کہ کوئی ہیکر قسم کا صارف اپنے براؤزر پر چلنے والا کوڈ تبدیل بھی کر سکتا ہے۔
- لائن نمبر 68 سے 70 تک وہ پیغام دکھایا گیا ہے جو PHP کوڈ کی طرف سے تیار کیا گیا ہے۔ یہ پیغام صورت حال کے مطابق کامیابی کا بھی ہو سکتا ہے اور ناکامی کا بھی۔
- لائن 72 سے لے کر 77 تک وہ فارم موجود ہے جس کے ذریعے صارف مطلوبہ فائل اپ لوڈ کر سکتا ہے۔ فارم کے enctype ایٹری بیوٹ کی مدد سے بتایا گیا ہے کہ یہ فارم فائل اپ لوڈ کرنے کے لیے ہے۔ action ایٹری بیوٹ کی مدد سے بتایا گیا ہے کہ اپ لوڈ ہونے والی فائل کو ویب سرور پر کونسی اسکرپٹنگ فائل ہینڈل کرے گی۔ اس مثال میں یہ فائل یہی ہے جس میں یہ فارم موجود ہے۔ اس فائل کا PHP کوڈ ویب سرور پر چلے گا، جبکہ HTML اور Javascript کوڈ صارف کے براؤزر پر چلے گا۔
فارم کے اندر پہلی input فیلڈ فائل اپ لوڈ کے لیے ہے۔ جب فارم پوسٹ کیا جائے گا تو PHP کوڈ اس فیلڈ کے name ایٹری بیوٹ کی ویلیو image_file کے ساتھ یہ فائل وصول کرے گا۔ فیلڈ کی ٹائپ file ہے جو ویب پیج پر دو بٹن مہیا کرتی ہے، ایک Choose File بٹن اور دوسرا Upload بٹن۔ فیلڈ میں onchange ایٹری بیوٹ کی مدد سے جاوا اسکرپٹ کا فنکشن کال کیا گیا ہے جو ڈسک سے فائل منتخب کرنے پر اس کا سائز چیک کرے گا۔
Modified: Fri, 03/30/2018 - 19:22