Перейти к содержанию
Форум поддержки пользователей VamShop

Проблемы перехода с E-Commerce на VAMShop (криптование паролей)


Рекомендуемые сообщения

Уважаемый Александр! У нас возникла проблема, которую не возможно решить предложенным вам методом (просто написать всем письма чтобы люди перерегистрировались) без потери клиентов. Мы работает 3-й год, за это время у нас порядка 500 клиентов. Если сейчас ни один из них не сможет войти, то часть из них конечно сообразит запросить пароль по-новой, но тот код что вы выводите на экран такое качество дает что даже я на новейшем Flatron его далеко не всегда могу прочесть. Я не нашла где можно отключить или хотя бы отстроить этот код. Это делается как-то через настройки? Если нет, где это сделать на уровне кода? Кстати, тут на форуме у вас намного более приличный код подтверждения выводится, с таким вариантом я бы согласилась - это можно пройти не с 10 попыток. Посетитель магазина, который не может зайти в него, развернется и уйдет в другое место с большой вероятность. Я бы лично сделала именно так если бы вот так вот были созданы все условия для того чтобы меня из него выгнать - сначала убит пароль, потом выведен нечитаемый код. Потом дан пароль, но и по нему я зашла не с любого места, тот вход что вами предлагается на правой части панели, например, не сработал.

Следующий вопрос про само криптование. Я понимаю, что пароли невозможно перекодировать, раз уж они закодированы. Но функция криптования изменена имено вами:

  function vam_validate_password($plain, $encrypted) {

    if (vam_not_null(MASTER_PASS) && $plain == MASTER_PASS) { return true; }

    if (vam_not_null($plain) && vam_not_null($encrypted)) {

      // split apart the hash / salt

      if ($encrypted!= md5($plain)){

            return false;

      } else {

             return true;

      }

    }

    return false;

  }

Это старая:

// This funstion validates a plain text password with an

// encrpyted password

  function tep_validate_password($plain, $encrypted) {

    if (tep_not_null($plain) && tep_not_null($encrypted)) {

// split apart the hash / salt

      $stack = explode(':', $encrypted);

      if (sizeof($stack) != 2) return false;

      if (md5($stack[1] . $plain) == $stack[0]) {

        return true;

      }

    }

    return false;

  }

Если мы в вашу новую функцию вносим изменения относительно старой, все равно ничего не работает. Где мы еще должны внести изменения, подскажите, плиз. Потому что сейчас у нас с утра весь почтовый ящих был завален письмами: не могу зайти под новым паролем, нам в итоге пришлось откатиться на старую версию. Я не верю что проблема не решаема если изменения в функцию криптования внесли именно вы. Кстати, по мне так если вы хотели изменить криптовку, так надо было в настройках дать возможность переключения - использовать старый вариант или новый, улучшенный. Потому что люди РЕАЛЬНО будут терять клиентов при переходе на новый магазин. Не знаю кто как я мы не можем вот так просто перечеркнуть наши труды по набору постоянных клиентов. Магазин он все-таки должен быть ориентирован на удобство клиента, а не на наше с вами. Поэтому я вас очень прошу войти в наше положение и помочь нам разобраться с этой проблемой - мы хотим сохранить старые пароли, что и где нам нужно для этого поменять?

Еще одна проблема которая у нас всплыла: при импорте данных вы неверно проставляете в orders_products - при перекачке вы каким-то образом проставляете в products_price не цену из аналогичной перекачиваемой базы, а из products. В итоге данные когда эта цена перебивалась для кого-то индивидуально, были потеряны. На наше счастье вы внесли final_price все-таки корректно. Поэтому мы попросту поделили его на к-во и перезаполнили products_price SQL запросом.

Ссылка на сообщение
Поделиться на другие сайты

Я не знаю, что делать кроме как советовать клиентам запросить новый пароль, не знаю как сделать что б пароли из osCommerce работали в VaM Shop.

По-разному кодируются, поэтому и не будет заходить со старыми паролями, я вот недавно как раз пробовал менять функцию /inc/vam_validate_password.inc.php (пробовал брать код этой функции из osCommerce из файла /includes/funstions/password_funcs.php), но у меня так и не получилось сделать, что б пароли из osCommerce работали в VaM Shop после переноса.

Наверное кроме как найти просто человека который решит Вашу проблему, например на weblancer.net, предложить ничего не могу.

Данные для orders_products берётся всё из той же таблицы orders_products.

Как и что у Вас было исправлено я ж не знаю.

Вы поймите просто одну вещь: скрипт vam-export бесплатный и никаких гарантий я никому не даю и никаких доработок бесплатно (да и платно вобщем-то тоже) не делаю, я лишь говорю о том, что он делает и всё, а решение пользователь всегда принимает сам.

Решение переходить или не переходить на новый движок Вы принимаете сами и Вы должны понимать всё возможные проблемы связанные с таким не лёгким делом как переход с одного движка на другой.

Я вобщем-то всех обычно предупреждаю, что если у Вас магазин работает и отлажен на osCommerce, по большому счёту нет смысла менять на VaM Shop, зачем мешать, если всё и так работает.

Ссылка на сообщение
Поделиться на другие сайты

Этого точно не достаточно. Например, на вводе пароля он обрабатывается еще дополнительно в предыдущей версии и в новой версии обработки меньше чем это было раньше, разница вот в этой функции, которая раньше накладывалась на обработку а теперь ее нет.

  function tep_sanitize_string($string) {

    $string = ereg_replace(' +', ' ', trim($string));

    return preg_replace("/[<>]/", '_', $string);

  }

То, что это технически реально сделать, нет никакого сомнения, другой вопрос, сколько это займет времени. Просто вам как человеку, знающему код, на мой взгляд намного проще сказать где все те места которые нужно исправить. Ну или как минимум, если вы эту позицию (password)экспортируете, предупредить надо было что она не будет работать в новой версии. Мы просто этой проблемы не ожидали, разумеется, мы были готовы к проблемам перехода, но это не просто мелкая проблема, это совершенно четко приведет к массовой потере клиентов. Если бы я знала заранее что такая проблема есть, я бы как минимум отложила переход пока она не решена.

У нас особого выхода не было - нам нужно было закрыть часть товаров для незалогиненых пользователей, я вам писала об этом. Так что, нам надо было переходить.

Ссылка на сообщение
Поделиться на другие сайты

Давайте я завтра ещё раз попробую.

Ещё раз покопаюсь, может получится сделать что б заходило под паролями из osCommerce.

Есть две функции:

/inc/vam_validate_password.inc.php

Эта функция проверяет введённый при входе пароль.

/inc/vam_encrypt_password.inc.php

Эта функция шифрует пароль, указанный на странице регистрации create_account.php

Вот это два основных файла для шифровки и проверки пароля.

Вобщем, я завтра ещё одну попытку предприму и отпишусь, получилось или нет.

Ничего не обещаю, само собой, но попробую разобраться.

Ссылка на сообщение
Поделиться на другие сайты

Что б заходил в магазин с паролями из osCommerce (но нужно понимать, что новые пользователи, зарегистрированные в VaM Shop не смогу зайти с паролями своими) нужно просто в /inc/vam_validates_password.inc.php заменить:


  function vam_validate_password($plain, $encrypted) {
    if (vam_not_null(MASTER_PASS) && $plain == MASTER_PASS) { return true; }
    if (vam_not_null($plain) && vam_not_null($encrypted)) {
      // split apart the hash / salt
      if ($encrypted!= md5($plain)){
            return false;
      } else {
            return true;
      }

    }

    return false;
  }
[/code] на:
[code]
  function vam_validate_password($plain, $encrypted) {
    if (vam_not_null(MASTER_PASS) && $plain == MASTER_PASS) { return true; }
    if (vam_not_null($plain) && vam_not_null($encrypted)) {
// split apart the hash / salt
      $stack = explode(':', $encrypted);

      if (sizeof($stack) != 2) return false;

      if (md5($stack[1] . $plain) == $stack[0]) {
        return true;
      }
    }

    return false;
  }

А вот что б после регистрации пароли генерировались также как и в osCommerce, сейчас смотрю.

Ссылка на сообщение
Поделиться на другие сайты

А что пароли новых клиентов генерировались также как в osCommerce, нужно в /inc/vam_encrypt_password.inc.php заменить:


  function vam_encrypt_password($plain) {
    $password=md5($plain);

    return $password;
  }
[/code] на:
[code]
  function vam_encrypt_password($plain) {
    $password = '';

    for ($i=0; $i<10; $i++) {
      $password .= vam_rand();
    }

    $salt = substr(md5($password), 0, 2);

    $password = md5($salt . $plain) . ':' . $salt;

    return $password;
  }

Я проверил, вроде бы нормально.

Сдела экспорт данных скриптом vam-export.php

Нормально заходит с паролями, а также затем попробовать зарегистировать нового клиента через create_account.php

Тоже нормально заходит.

Только опять же учитывайте, что данное изменение поможет войти "старым" покупателям из vam-export.sql файла, но возникнет проблем с "новыми" покупателями, которые регистрировались уже в VaM Shop.

Из двух зол выбрали меньшее, а именно дать возможность заходить "старым" покупателям без запроса нового пароля, но в тоже время "новым" клиентам приёдтся запрашивать новые пароли.

Ссылка на сообщение
Поделиться на другие сайты

Все заработало! И старые пароли, и функция восстановления.

Новая регистрация была одна, ей и пришлось сделать восставновление. Но нам это не критично.

Большое спасибо!

Ссылка на сообщение
Поделиться на другие сайты
  • 11 years later...

Себе на память, так работуют и старые пароли с salt и новые одновременно.   


  function vam_validate_password($plain, $encrypted) {
    if (vam_not_null(MASTER_PASS) && $plain == MASTER_PASS) { return true; }
    if (vam_not_null($plain) && vam_not_null($encrypted)) {
// split apart the hash / salt
      
      if ($encrypted === md5($plain)){
             return true;
       } else {
          $stack = explode(':', $encrypted);

      if (sizeof($stack) != 2) return false;

      if (md5($stack[1] . $plain) == $stack[0]) {
        return true;
      }
      }
      
    }

    return false;
  }

Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Роман_DD сказал:

Себе на память, так работуют и старые пароли с salt и новые одновременно.   


  function vam_validate_password($plain, $encrypted) {
    if (vam_not_null(MASTER_PASS) && $plain == MASTER_PASS) { return true; }
    if (vam_not_null($plain) && vam_not_null($encrypted)) {
// split apart the hash / salt
      
      if ($encrypted === md5($plain)){
             return true;
       } else {
          $stack = explode(':', $encrypted);

      if (sizeof($stack) != 2) return false;

      if (md5($stack[1] . $plain) == $stack[0]) {
        return true;
      }
      }
      
    }

    return false;
  }

Спасибо, добавил эту правку в статью про перенос данных - 

 

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...