تحديث آخر نسخة 1.8.37

تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[جاهز للتحميل]فكرة دمج منتدى من نوع vbulletin الى منتدى mybb
#31
The password was correct, so use MyBB's method the next time (even if the captcha was wrong we can update the password)
هذه الكلام يعني ان كلمة المرور صحيحة لان التشفير عادي.

كل شي اتضح الا التحويل لم اتمكن من فهمه.
اظن كود التحويل ليس هذا

كود :
// The password was correct, so use MyBB's method the next time (even if the captcha was wrong we can update the password)
            $salt = generate_salt();
            $update = array(
                "salt"                    => $salt,
                "password"                => salt_password(md5($login->data['password']), $salt),
                "loginkey"                => generate_loginkey(),
                "passwordconverttype"    => "",
                "passwordconvert"        => "",
                "passwordconvertsalt"    => "",
            );
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :
#32
الكلمة هذي مامعناها
if(!isset
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :
#33
هذه isset داله تقوم بالتأكد من ان كان المتغيير موجود وليه قيمه ام لا

ومادام اضف ! قبلها اذا يقول ان لم تكن لها قيمه

بالنسبه لداله التحويل سوف اقم بالبحث مره لعلي وعسي نخرج بشي جديد فاعذرني هذه الفتره لدي ضغط كبير
الرد
شكر من طرف :
#34
الله يبارك فيك ويجزاك عنا كل خير
لا تتعب نفسك نهائيا كفيت ووفيت.
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :
#35
الدالة بشكل كامل


كود :
function loginconvert_convert(&$login)
{
    global $mybb, $valid_login_types, $db, $settings;

    $options = array(
        "fields" => array('username', "password", "salt", 'loginkey', 'coppauser', 'usergroup', "passwordconvert", "passwordconverttype", "passwordconvertsalt"),
        "username_method" => (int)$settings['username_method']
    );

    if($login->username_method !== null)
    {
        $options['username_method'] = (int)$login->username_method;
    }

    $user = get_user_by_username($login->data['username'], $options);

    // There's nothing to check for, let MyBB do everything
    // This fails also when no user was found above, so no need for an extra check
    if(!isset($user['passwordconvert']) || $user['passwordconvert'] == '')
    {
        return;
    }

    if(!array_key_exists($user['passwordconverttype'], $valid_login_types))
    {
        // TODO: Is there an easy way to make the error translatable without adding a new language file?
        redirect($mybb->settings['bburl']."/member.php?action=lostpw", "We're sorry but we couldn't convert your old password. Please select a new one", "", true);
    }
    else
    {
        $function = "check_".$valid_login_types[$user['passwordconverttype']];
        $check = $function($login->data['password'], $user);

        if(!$check)
        {
            // Yeah, that function is called later too, but we need to know whether the captcha is right
            // If we wouldn't call that function the error would always be shown
            $login->verify_attempts($mybb->settings['captchaimage']);

            $login->invalid_combination(true);
        }
        else
        {
            // The password was correct, so use MyBB's method the next time (even if the captcha was wrong we can update the password)
            $salt = generate_salt();
            $update = array(
                "salt"                    => $salt,
                "password"                => salt_password(md5($login->data['password']), $salt),
                "loginkey"                => generate_loginkey(),
                "passwordconverttype"    => "",
                "passwordconvert"        => "",
                "passwordconvertsalt"    => "",
            );

            $db->update_query("users", $update, "uid='{$user['uid']}'");

            // Make sure the password isn't tested again
            unset($login->data['password']);

            // Also make sure all data is available when creating the session (otherwise SQL errors -.-)
            $login->login_data = array_merge($user, $update);
        }
    }
}

// Password functions

function check_vb($password, $user)
{
    if(md5(md5($password).$user['passwordconvertsalt']) == $user['passwordconvert'] || md5($password.$user['passwordconvertsalt']) == $user['passwordconvert'])
    {
        return true;
    }

    return false;
}

ودي اشرح النقاط اللي انا فهمتها خصوصا بعد عرفت معنى ! ومعنى isset

اول سطر يصرح بشكل عمومي
كود :
global $mybb, $valid_login_types, $db, $settings;
السطر هذا فهمت جزء ولم افهم الاخر
كود :
$options = array(
        "fields" => array('username', "password", "salt", 'loginkey', 'coppauser', 'usergroup', "passwordconvert", "passwordconverttype", "passwordconvertsalt"),
        "username_method" => (int)$settings['username_method']
    );
اللي فهمت انه عمل مصفوفة باسم options وضع بها الحقول المعروفة من الجدول الخاص بالاعضاء
الجزء الاخر وهو
كود :
"username_method" => (int)$settings['username_method']
علامة يساوي واكبر من مامعناها
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :
#36
حصلت عدة مصطلحات  لا ينتبه لها من هو جديد وهي
كود :
->
=>
=
==
=!
علامة التعجيب عرفت معناها النفي
والباقي؟
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :
#37
اظني عرفت متى يحول كلمة المرور
بعدما تعيد الدالة التالية false يحول

كود :
function check_vb($password, $user)
{
    if(md5(md5($password).$user['passwordconvertsalt']) == $user['passwordconvert'] || md5($password.$user['passwordconvertsalt']) == $user['passwordconvert'])
    {
        return true;
    }

    return false;
}
والدليل هذه الجملة او الكلمة في الدالة
كود :
$function = "check_".$valid_login_types[$user['passwordconverttype']];
        $check = $function($login->data['password'], $user);

        if(!$check)
        {
            // Yeah, that function is called later too, but we need to know whether the captcha is right
            // If we wouldn't call that function the error would always be shown
            $login->verify_attempts($mybb->settings['captchaimage']);

            $login->invalid_combination(true);
        }
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :
#38
(2014-09-26, 02:21 PM)mrsaud كتب : حصلت عدة مصطلحات  لا ينتبه لها من هو جديد وهي

كود :
->
=>
=
==
=!
علامة التعجيب عرفت معناها النفي
والباقي؟


 دي ضمن برمجه البي اتش بي يسبقها متغيير وتستخدم لاعطاء القيمه->
 علامه رقميه بمعني اصغر من او تساوي القيمه اللي بعدها=>
=
علامه رقميه بمعني تساوي القميه التي بعدها==
  علامه رقميه بمعني لا تساوي القيمه التي بعدها=!

كلامك في الرد الاخير صحيح بنسبه كبيره واعتقد اوشكت علي الاقتراب من هدفك
الرد
شكر من طرف :
#39
طيب فيه غموض بانسبة للدالة check_vb
كود :
function check_vb($password, $user)

الاشتراط ليس مثل ماهو موجود باسم الدالة
كود :
if(md5(md5($password).$user['passwordconvertsalt'])

يعني لو جت كذا
كود :
if(md5(md5($password),$user['passwordconvertsalt'])
بحيث نضع فاصلة بدل النقطة استطيع ان افهمها
اقصد النقطة هنا
كود :
.$user
قبل
كود :
$user
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :
#40
شي غريب بصراحة ان عادت دالة check_vb بقيمة false انظر تعليق المبرمج وانظر ماهو الكود الذي كتبه؟!!
كود :
if(!$check)
        {
            // Yeah, that function is called later too, but we need to know whether the captcha is right
            // If we wouldn't call that function the error would always be shown
            $login->verify_attempts($mybb->settings['captchaimage']);

            $login->invalid_combination(true);
        }
آخر شرط بالدالة اللي هو الاسناد لكن لا يحول شيء هذه الجزئية فقط ان لم اوفق لفهمها فهذا يعني ضياع عقليSad
[صورة: avatar_229590.gif?dateline=1412525966]
الرد
شكر من طرف :


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم