1

Topic: Интеграция форума PunBB

Здравствуйте, решил я сделал интеграцию форума с DLE. Сейчас сменил метод хеширования с sha1 на двойной MD5 (как на DLE). Проблема в том, что он авторизируется нормально, но не сохраняет куки.  Т.е. после ввода логина и пароля он пишет: что нужно включить куки в браузере.

Часть кода login.php где я менял на двойной md5:

// Login
if (isset($_POST['form_sent']) && empty($action))
{
  $form_username = forum_trim($_POST['req_username']);
  $form_password = forum_trim($_POST['req_password']);
  $save_pass = isset($_POST['save_pass']);

  ($hook = get_hook('li_login_form_submitted')) ? eval($hook) : null;

  // Get user info matching login attempt
  $query = array(
    'SELECT'  => 'u.id, u.group_id, u.password',
    'FROM'    => 'users AS u'
  );

  if ($db_type == 'mysql' || $db_type == 'mysqli')
    $query['WHERE'] = 'username=\''.$forum_db->escape($form_username).'\'';
  else
    $query['WHERE'] = 'LOWER(username)=LOWER(\''.$forum_db->escape($form_username).'\')';

  ($hook = get_hook('li_login_qr_get_login_data')) ? eval($hook) : null;
  $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
  list($user_id, $group_id, $db_password_hash) = $forum_db->fetch_row($result);

  $authorized = false;
  if (!empty($db_password_hash))
  {

    if ($db_password_hash == $form_password_hash)
      $authorized = true;
    else if ((!$db_password_hash == md5($form_password)) || ($db_password_hash == md5(md5($form_password))))
    {
      $authorized = true;

      $salt = random_key(12);
      $form_password_hash = forum_hash($form_password);

      // There's an old MD5 hash or an unsalted SHA1 hash in the database, so we replace it
      // with a randomly generated salt and a new, salted SHA1 hash
    //  $query = array(
    //    'UPDATE'  => 'users',
    //    'SET'    => 'password=\''.$form_password_hash.'\', salt=\''.$forum_db->escape($salt).'\'',
    //    'WHERE'    => 'id='.$user_id
    //  );

      ($hook = get_hook('li_login_qr_update_user_hash')) ? eval($hook) : null;
      $forum_db->query_build($query) or error(__FILE__, __LINE__);
    }
  }

  ($hook = get_hook('li_login_pre_auth_message')) ? eval($hook) : null;

  if (!$authorized)
    $errors[] = sprintf($lang_login['Wrong user/pass']);

  // Did everything go according to plan?
  if (empty($errors))
  {
    // Update the status if this is the first time the user logged in
    if ($group_id == FORUM_UNVERIFIED)
    {
      $query = array(
        'UPDATE'  => 'users',
        'SET'    => 'group_id='.$forum_config['o_default_user_group'],
        'WHERE'    => 'id='.$user_id
      );

      ($hook = get_hook('li_login_qr_update_user_group')) ? eval($hook) : null;
      $forum_db->query_build($query) or error(__FILE__, __LINE__);
    }

    // Remove this user's guest entry from the online list
    $query = array(
      'DELETE'  => 'online',
      'WHERE'    => 'ident=\''.$forum_db->escape(get_remote_address()).'\''
    );

    ($hook = get_hook('li_login_qr_delete_online_user')) ? eval($hook) : null;
    $forum_db->query_build($query) or error(__FILE__, __LINE__);

    $expire = ($save_pass) ? time() + 1209600 : time() + $forum_config['o_timeout_visit'];
    forum_setcookie($cookie_name, base64_encode($user_id.'|'.$form_password_hash.'|'.$expire.'|'.md5($form_password)), $expire);  
    
    ($hook = get_hook('li_login_pre_redirect')) ? eval($hook) : null;

    redirect(forum_htmlencode($_POST['redirect_url']).((substr_count($_POST['redirect_url'], '?') == 1) ? '&' : '?').'login=1', $lang_login['Login redirect']);
  }
}

В русском сообществе punbb, написано что нужно делать правки в /include/functions.php. Нашёл там кусок кода отвечающий за cookie, но так и не понял. Пожалуйста помогите!

2

Re: Интеграция форума PunBB

navi_slide wrote:

решил я сделал интеграцию форума с DLE. Сейчас сменил метод хеширования с sha1 на двойной MD5 (как на DLE).

DLE какой версии собираешься подключить?

3

Re: Интеграция форума PunBB

PunBB wrote:
navi_slide wrote:

решил я сделал интеграцию форума с DLE. Сейчас сменил метод хеширования с sha1 на двойной MD5 (как на DLE).

DLE какой версии собираешься подключить?

DLE 10.2

4

Re: Интеграция форума PunBB

navi_slide wrote:

Проблема в том, что он авторизируется нормально, но не сохраняет куки

проблема в том что движок не бесплатный, а в демо версии все зашифровано. Вряд ли кто возьмется бесплатно изучать   структуру DLE и писать скрипт авторизации.

5 (edited by PunBB 2020.02.26 08:37)

Re: Интеграция форума PunBB

Xakker{id=296} wrote:

navi_slide пишет:Проблема в том, что он авторизируется нормально, но не сохраняет кукипроблема в том что движок не бесплатный, а в демо версии все зашифровано. Вряд ли кто возьмется бесплатно изучать   структуру DLE и писать скрипт авторизации.

Можно скачать dle оригинал без ключа,  $matches[2]

Я поменял метод хеширования с sha1 на двойной MD5, проблема в том, что он авторизируется нормально, но не сохраняет куки.  Т.е. после ввода логина и пароля он пишет: что нужно включить куки в браузере. Не нужно там копаться в dle, нужно просто в /include/functions.php  поправить файлы. Вот такая же тема на  ссылка