قسم الأرشيف والمواضيع المحذوفة قسم خاص بجميع المواضيع المحذوفة و المُكررة والتي لاتنطبق على الشروط والقوانين والتي لا شأن لها في أي قسم من أقسام المُنتدى |
#1
|
||||
|
||||
[Product] : تحديد الآيبي الحقيقي فعلاً - طريقة خاصة بي ومضمونة بإذن الله -مدمن نت
السلام عليكم ورحمة الله وبركاته
الكلام أدناه فقط للمطورين : ) وللمبتدئين عليكم بآخر الموضوع جميعنا يعلم في نسخة 3.7 ولا أعلم عن 3.6 .. أن طريقة تحديد الآيبي تعتمد على تعريف IPADDRESS عن طريق ملف class_core.php لو نبحث جيداً داخل هذا الملف وبحثنا عن: رمز PHP: function fetch_ip() { return $_SERVER['REMOTE_ADDR']; } لوجدنا أنه يعيد قيمة بروتوكول الإنترنت البعيد REMOTE_ADDR فقط أما لو بحثنا في نفس الملف عن: رمز PHP: function fetch_alt_ip() { $alt_ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_CLIENT_IP'])) { $alt_ip = $_SERVER['HTTP_CLIENT_IP']; } else if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) { // make sure we dont pick up an internal IP defined by RFC1918 foreach ($matches[0] AS $ip) { if (!preg_match('#^(10|172\.16|192\.168)\.#', $ip)) { $alt_ip = $ip; break; } } } else if (isset($_SERVER['HTTP_FROM'])) { $alt_ip = $_SERVER['HTTP_FROM']; } return $alt_ip; } لوجدنا أنه يعطي قيمة بروتوكول الإنترنت البعيد REMOTE_ADDR في البداية ثم بعدها يتحقق من متغيرات لإيجاد الآيبي الحقيقي الخاص بالزائر .. فإن كانت لها قيمة فسوف تسند إلى متغير $alt_ip وهو أدق من fetch_ip وحدها أي أنه بكل الأحوال .. لو لم يكن هناك قيم للـ: رمز PHP: $_SERVER['HTTP_CLIENT_IP'] $_SERVER['HTTP_X_FORWARDED_FOR'] $_SERVER['HTTP_FROM'] لأعاد قيمة REMOTE_ADDR .. أي أنه أصبح نفس عمل fetch_ip السابق ولو أن هناك قيم أخرى المذكورة أعلاه لأصبح الآيبي الحقيقي غير عن REMOTE_ADDR فيسند قيمة الآيبي الحقيقي إلى $alt_ip دعونا نعود للبحث عما بداخل الملف مرة أخرى عن: رمز PHP: // fetch client IP address $registry->ipaddress = $this->fetch_ip(); define('IPADDRESS', $registry->ipaddress); // attempt to fetch IP address from behind proxies - useful, but don't rely on it... $registry->alt_ip = $this->fetch_alt_ip(); define('ALT_IP', $registry->alt_ip); إذاً ALT_IP هو من يحمل قيمة الآيبي الحقيقي لكن مشكلة أن أغلب ملفات vbulletin تستخدم IPADDRESS وليس ALT_IP الحل الوحيد لهذا المشكلة بدل التعديل على الملفات واستبدال IPADDRESS إلى ALT_IP هو إسناد قيمة IPADDRESS إلى ALT_IP ويكمن ذلك في الـ plug-in الخاص بـ init_startup حيث نقوم بإنشاءه مرتين وتحديد قيمة 1 عند خانة ترتيب التنفيذ Execution Order في أول إنشاء وقيمة 999 في ثاني إنشاء ومن ثم وضع الكود التالي في كلا الإنشائين: كود PHP: define('IPADDRESS', ALT_IP); والسر في وضع رقم 1 ورقم 999 مع أن كلاهما يحمل نفس الكود هو للإحتياط فقط حيث ربما يوجد منتجات products تستخدم plugin init_startup يحوي على الـ IPADDRESS الغير الحقيقي في وسطها .. لهذا وضعت رقم 1 أما رقم 999 فهو للحماية من التعديل على قيمة IPADDRESS من قبل أية منتج آخر لا أكثر ولا أقل قد يسأل سائل، لماذا لم تقم شركة vBulletin بالقيام بهذا الطريقة ونرتاح ؟ الجواب لأن قيمة REMOTE_ADDR يحتوي على الآيبي الحقيقي لديهم وفي الدول الغربية كذلك لذا هم ليسوا بحاجة إلى تعيين بدائل Alternative للـ REMOTE_ADDR لمن لديه إعتراض على طريقتي أعلاه في تحديد الآيبي الحقيقي فليتفضل مشكوراً --------------------------------------- زبدة الهرج هذا كله ارفع الملف التالي الموجود بالمرفق على هذا الرابط: http://www.yourwebsite.com/vb/adminc...n.php?do=files وقم باستعراضه بعد فك الضغط عنه وتمتع بالآيبيات الحقيقية وشكراً لكم تذكير: الهاك والموضوع للمبرمج المبدع: مدمن نت المصدر: سوالف سوفت .. الملفات المرفقة product-realip.zip (524 بايت) |
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
|
المواضيع المتشابهه للموضوع [Product] : تحديد الآيبي الحقيقي فعلاً - طريقة خاصة بي ومضمونة بإذن الله -مدمن نت: | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
إجعل غذاءك دواءك ... بإذن الله | Hitman | قسم الأرشيف والمواضيع المحذوفة | 2 | 01-18-2010 05:18 PM |
الله أكبر ..لن تفوتك صلاة بإذن الله..برنامج إلا صلاتي في أبهى الحلل.. رابط مباشر | العاشق 2005 | أرشيف قسم البرامج | 0 | 08-28-2009 02:10 AM |
الله أكبر ..لن تفوتك صلاة بإذن الله..برنامج إلا صلاتي في أبهى الحلل.. رابط مباشر | العاشق 2005 | أرشيف قسم البرامج | 0 | 07-19-2009 01:10 PM |
شرح حرق ملفات mdf و mds على ديفيدي بنجاح بإذن الله .. ^^ | العاشق 2005 | أرشيف قسم الألعاب الإلكترونية | 0 | 05-31-2009 01:30 AM |
[Product] : تحديد الآيبي الحقيقي فعلاً - طريقة خاصة بي ومضمونة بإذن الله | العاشق 2005 | قسم الأرشيف والمواضيع المحذوفة | 0 | 12-10-2008 07:31 PM |