منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كيف ندمج استعلامين php
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
كود :
$salted_password = md5(md5($this->login_data['salt']).$password);
if($salted_password != $this->login_data['password'])
        {
            $this->invalid_combination(true);
            return false;
        }

كيف نضع او لنتحقق بناء على التشفير التالي

كود :
MD5(concat(MD5('<NEWPASSWORD>'), user.salt))
الذي اريده هو ان نعدل على شرط التحقق بحيث يسمح بالدخول سواء كان التشفير بطريقة mybb او بطريقة vbulletin
الكود الاخير هو بطريقة vbulletin
لو لم اوضح ممكن اكتب كود اجتهاد مني

للايضاح بشكل اكثر دعك من اول موضوعي
نسخت كلمة مرور ومعها salt من منتدى vbulletin الى منتدى mybb
منتدى vb لو حبيت استعلم بالطريقة هذه

كود :
$salted_passwordvb =MD5(concat(MD5('<NEWPASSWORD>'), user.salt))

والـ mybb بالطريقة هذي

كود :
$salted_passwordbb = md5(md5($this->login_data['salt']).$password);

والتحقق هكذا
كود :
if($salted_password != $this->login_data['password'])
كيف اعدل لكي اتحقق من النوعين بحيث ينجح الدخول
وبرضو احس اني ماوضحت
ياليت لو فيه غموض تقول

جربت التعديل التالي

كود :
$salted_passwordvb =MD5(concat(MD5('.$password.'), $this->login_data['salt']));
$salted_password = md5(md5($this->login_data['salt']).$password);
if($salted_password != $this->login_data['password'] || $salted_passwordvb != $this->login_data['password'] )
وصار خطا طلعت صفحا بيضا

على ان || بمعنى Or
.....

إتضح لي أن
vb يشفر PASSWORD أولا ثم يضيف إليه SALT ويشفرهم سوية ( طول SALT يساوي 30 )
bb يشفر SALT أولا ثم يضيف إليه PASSWORD ويشفرهم سوية ( طول SALT يساوي 8 )

هذا مثال توضيحي فقط
كود :
vbSaltedPassword: MD5( MD5(PASSWORD) + SALT )
bbSaltedPassword: MD5( MD5(SALT) + PASSWORD )

بالنسبة للكود الخاص بك، هذا تعديل بسيط
كود :
$salted_passwordvb = md5( md5($password) . $this->login_data['salt']  );
$salted_password   = md5( md5( $this->login_data['salt']) . $password );

if ( $salted_password   != $this->login_data['password'] ||
     $salted_passwordvb != $this->login_data['password']    )

.....
لم ينجح تسجيل الدخول
اظن توجد خطوة لم انتبه لها
على كل حال بارك الله فيك اخي vbnet ماقصرت كفيت ووفيت.
طيب اخي الكريم معلش اكثرت من الاسئلة
الكود لا يحوي على كلمة concat فهل هذا سبب عدم نجاح الدخول؟
.....

تم تسجيل الدخول  بنجاح في MyBB ببيانات عضو منسوخة من منتدى vBullien

قمت بتركيب vBulletin وMyBB
قمت بتعديل نوع العمود salt للجدول mybb_users من (varchar(10 إلى (varchar(30 وذلك قبل لصق البيانات من منتدى vBullien
قمت بتعديل الملف inc\datahandlers\login.php في منتدى MyBB كالتالي
كود :
$salted_password   = md5(md5($this->login_data['salt']).$password);
$salted_passwordvb = md5(md5($password).$this->login_data['salt']);

//if($salted_password != $this->login_data['password'])
//{
//    $this->invalid_combination(true);
//    return false;
//}
if( $salted_password   == $this->login_data['password'] ||
    $salted_passwordvb == $this->login_data['password']   )
{
    $this->invalid_combination(false);
    return true;
} else {
    $this->invalid_combination(true);
    return false;
}

بالنسبة لـ concat قامت عنه النقطة (.) فوظيفتها وصل النصوص مع بعض، وهي موجودة في VB.NET بالشكل التالي String.Concat.

.....
طيب عمود الـ loginkey الموجود في mybb هل يجب ان يتم افراغه لكي ننجح في الدخول؟
.....

الأعمدة التي اكتفيت بسخها فقط هي (مع تجاهل الباقي بما فيه loginkey) مع ملاحظة هامة وهي
تعديل نوع العمود salt للجدول mybb_users من (varchar(10 إلى (varchar(30 قبل هذا العمل
username
password
salt
usergroup (يفضل أن تجعلها 2 للجميع)

وقمت بإضافة موضوع جديد وأيضاً بالرد على موضوع وكلها تمت بنجاح والحمد لله

.....
التعديل سويته وعدلته من نفس install والى الان مافيه فايدة شي غريب ... Smile
.....

لقد قمت بالتعديل عن طريقة MySql ولا أعلم الطريقة التي استخدمتوها وخصوصاً أنك ذكرت install الذي لم استخدمه في التعديل.


اقتراح ليتضح لك الأمر وبعدها تستطيع العمل بشكل أفضل:

اعمل منتدى MyBB جديد وليكن المجلد MyBB2 مع قاعدة بيانات جديدة ولتكن MyBB2
اعمل منتدى vBulletin جديد وليكن المجلد vBulletin2 مع قاعدة بيانات جديدة ولتكن vBulletin2
عن طريق MySql عدل في قاعدة بيانات MyBB2 الجدول mybb_users العمود salt من الطول 10 إلى الطول 30
عدل في الملف inc\datahandlers\login.php عن طريق المفكرة أو أي محرر تستخدمه لذلك.
كود :
$salted_password   = md5(md5($this->login_data['salt']).$password);
$salted_passwordvb = md5(md5($password).$this->login_data['salt']);

//if($salted_password != $this->login_data['password'])
//{
//    $this->invalid_combination(true);
//    return false;
//}
if( $salted_password   == $this->login_data['password'] ||
    $salted_passwordvb == $this->login_data['password']   )
{
    $this->invalid_combination(false);
    return true;
} else {
    $this->invalid_combination(true);
    return false;
}

سجل عضو جديد في vBulletin

عن طريق MySql أستعرض قاعدة بيانات vBulletin2 الجدول user واستعرض بيانات العضو الذي قمت بتسجيله.
انسخ بيانات الأعمدة التالية (مع الحذر من التحديد بالنقر الثلاثي لأنها أحيانا تأخذ زيادة قد لا تلاحظها)
username
password
salt
usergroupid ويقابلة usergroup في قاعدة بيانات المنتدى MyBB

ثم عن طريق MySql أستعرض قاعدة بيانات MyBB2 الجدول mybb_users وأضف Insert عضو جديد
وألصق بيانات الأعمدة التي تم نسخها من قاعدة بيانات MyBB2

قم بتسجيل الدخول في المنتدى MyBB2 باسم العضو المنسوخ من المنتدى vBulletin2


رداً على سؤال سابق لك فإن الترميز (windows-1256) يقابله (cp1256_general_ci) في MySql

.....
الصفحات : 1 2