قد يتسائل البعض عن الوسيلة المثلى لتخزين رقم الـ ip لمستخدم ما في قاعدة البيانات ، الحل يكمن في دالتي mysql ..
الدالة inet_aton تقوم بتحويل الـ ip الى رقم مكون من 10 خانات ، بمعنى ان حقل الـ ip في قاعدة البيانات سيكون من النوع int او النوع الرقمي ويبلغ حجمه 10 ارقام ..كود PHP:
inet_aton() and inet_ntoa()
حسناً الدالة inet_ntoa تقوم بعكس عمل الدالة الاولى ، بمعنى انها تقوم بتحويل الرقم المكون من عشرة خانات الى ip ..كود:int(10)
الآن ستكون طرق الاستعلام كالتالي ..
- عند اضافة سجل جديد نقوم بتخزين رقم الـ ip كالتالي ..
حيث ان المتغير ip يحوي قيمة مثل 127.0.0.1 ..كود PHP:
insert into `table_name` ( `ip` ) values ( inet_aton($ip) );
- عند الاستعلام عن سجل ما نستخدم الدالة inet_ntoa ..
حيث ان الحقل ip يحتوي على قيم مثل 3520061480 ( 10 خانات ) ..كود PHP:
select inet_ntoa(`ip`) from `table_name`
بذلك نكون قد وفرنا قليلاً من المساحة بالاضافة لزيادة سرعة البرنامج وتحسين أداءه ..
بالمناسبة توجد دالتين في php تقومان بنفس العمل ، يمكنك استخدام الدالتين ip2long و long2ip لنفس الاستخدام .. ، لكن لماذا استخدام php بينما mysql تؤدي الغرض ؟
يمكنك القراءة عن inet_aton و inet_ntoa في المرجع الخاص بـ mysql للاستزادة ..