پی ایچ پی میں سافٹ ویئرز کے سیریل نمبرز تیار کریں

پروگرامنگ کے دوران String concatenation یعنی ڈیٹا کے مختلف ٹکڑوں کو جوڑ کر ایک بڑی اسٹرنگ تیار کرنے کی ضرورت پیش آتی رہتی ہے۔ خاص طور پر ویب ڈیویلپمنٹ میں اس کے بغیر کام نہیں چلتا۔ ویب پروگرامنگ میں ڈیٹابیس سے ریکارڈز حاصل کر کے انہیں HTML ٹیگز کے ساتھ مکس کر کے ویب پیج بنانا معمول کی بات ہے۔ لیکن اسٹرنگ کانکیٹینیشن کا استعمال صرف اسی تک محدود نہیں ہے۔ ایپلی کیشن کی نوعیت اور ضرورت کے مطابق اس کے کئی طرح کے استعمالات ہو سکتے ہیں۔ میں اس ٹٹوریل میں اسٹرنگ کانکیٹینیشن کا ایک استعمال پیش کر رہا ہوں، امید ہے یہ آپ کے ذہن میں مزید آئیڈیاز پیدا کرنے میں معاون ثابت ہوگا۔


جب کوئی سافٹ ویئر انسٹال کیا جاتا ہے تو اس کی Activation کے لیے ایک سیریل نمبر (License key) مہیا کیا جاتا ہے۔ یہ نمبرز اور لیٹرز پر مشتمل ہوتا ہے جس میں عام طور پر ہر چار حروف کے بعد ایک ڈیش ہوتی ہے۔ اسی طرح کا ایک سیریل نمبر میں نے PHP کوڈ کی مدد سے تیار کیا ہے۔ درج ذیل تصویر دیکھیں، جب بھی آپ یہ ویب پیج ریفریش کریں گے، ایک نئی اسٹرنگ سامنے آئے گی:

ہربار ویب پیج ریفریش کرنے سے ایک نیا سیریل نمبر سامنے آئے گا


کوڈ کی وضاحت

درج ذیل کوڈ میں کامنٹس کی لائنوں میں جو نمبر دیے گئے ہیں، ان نمبروں کے اعتبار سے وضاحت دیکھیں:

  1. character$ ویری ایبل میں وہ تمام حروف مہیا کیے گئے ہیں جن کی مدد سے یہ سیریل نمبر تیار کیا جائے گا۔
    dash_after$ ویری ایبل کی مدد سے بتایا گیا ہے کہ سیریل نمبر میں کتنے حروف کے بعد ڈیش شامل کی جائے۔
    key_length$ ویری ایبل کی مدد سے بتایا گیا ہے کہ یہ سیریل نمبر (ڈیشز کے علاوہ) کتنے حروف پر مشتمل ہو۔
    key$ ویری ایبل اس وقت خالی رکھا گیا ہے۔ لیکن اگلے مرحلے میں لوپ کی مدد سے اس میں حروف اور ڈیشز شامل کی جائیں گی۔
  2. اس کے بعد for لوپ ہے جو key_length$ کی تعداد میں یعنی 24 چکر کاٹے گا تاکہ سیریل نمبر میں اتنے ہی نمبرز اور حروف جوڑے جا سکیں۔
  3. لوپ کے اندر PHP کے ()rand فنکشن کی مدد سے n$ ویری ایبل میں ایک Random نمبر حاصل کیا گیا ہے۔ یہ فنکشن اس طرح سے کام کرتا ہے کہ مثلاً‌ (12 ,8)rand آپ کو آٹھ اور بارہ کے درمیان کوئی بھی نمبر فراہم کر دے گا۔ یہ نمبر آٹھ بھی ہو سکتا ہے، نو بھی، دس بھی، گیارہ بھی اور بارہ بھی۔ ()strlen فنکشن کو کوئی بھی اسٹرنگ دی جائے تو یہ اس میں موجود حروف کی تعداد مہیا کرتا ہے۔
    یہاں یہ بھی کیا جا سکتا ہے کہ لوپ کے ہر چکر پر ()strlen فنکشن کال کرنے کی بجائے خود ہی کل نمبروں کی تعداد مہیا کر دی جائے۔ لیکن اگر آپ characters$ ویری ایبل میں کوئی تبدیلی کریں گے تو پھر ہر دفعہ یہ تعداد آپ کو خود سے مہیا کرنی پڑے گی۔
  4. پھر PHP کے ()substr فنکشن کی مدد سے characters$ ویری ایبل میں سے ایک Random حرف حاصل کیا گیا ہے۔ اور پھر یہ حرف key$ ویری ایبل کے ساتھ جوڑا گیا ہے۔ ()substr فنکشن اس طرح سے کام کرتا ہے کہ substr($characters, 10, 3) آپ کو ABC مہیا کر دے گا، یعنی یہ ویری ایبل میں گیارہویں پوزیشن سے شروع ہو کر تین حروف حاصل کرے گا۔ گیارہویں پوزیشن اس لیے کہ یہ فنکشن صفر سے گنتی شروع کرتا ہے۔
  5. اس کے بعد If-statement کے ذریعے یہ چیک کیا گیا ہے کہ اگر key$ ویری ایبل میں چار حروف اکٹھے ہوگئے ہیں تو اس ویری ایبل میں ایک Dash بھی شامل کر دی جائے۔ ($i % $dash_after == 0) کا مطلب یہ ہے کہ لوپ جس چکر پر ہے، اگر وہ نمبر 4 پر تقسیم کر کے جواب 0 آئے تو اس کا مطلب یہ ہے کہ لوپ اس وقت چوتھی، آٹھویں، بارہویں، سولہویں یا بیسویں پوزیشن پر موجود ہے۔ یہی وہ جگہیں جن کے آگے ہم ڈیش شامل کرنا چاہتے ہیں۔
    اسی طرح If-statement میں یہ بھی چیک کیا گیا ہے کہ لوپ کا یہ چکر key_length$ یعنی 24 سے کم ہو تب ڈیش شامل کی جائے ورنہ نہیں۔ اس لیے کہ ہم سیریل نمبر کے بالکل آخر میں ڈیش شامل نہیں کرنا چاہتے۔
  6. لوپ کے مکمل ہونے پر آخر میں key$ ویری ایبل پرنٹ کیا جا رہا ہے جس میں تیار کیا گیا سیریل نمبر موجود ہے۔

<?php
    
// 1
    
$characters "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
$dash_after 4;
    
$key_length 24;
    
$key "";

    
// 2
    
for ($i 1$i <= $key_length$i++) {
        
// 3
        
$n rand(0strlen($characters));
        
// 4
        
$key $key substr($characters$n-11);
        
//5 
        
if ( ($i $dash_after == 0) && ($i $key_length) ) {
                
$key $key "-";
        }
    }
    
    
// 6
    
print $key;
?>

Categories: