tep_create_random_value($length, 'digits'); функция не работает

Эта функция generate_cart_id() не работает. Oscommerce после обновления PHP версии 5.6 до 7.2.

Файл: catalog/includes/classes/shopping_cart.php

function generate_cart_id($length = 5) {
  return tep_create_random_value($length, 'digits');
}

person Harendra Singh    schedule 25.12.2019    source источник
comment
Не могли бы вы поделиться, какую ошибку вы ловите?   -  person Kamran    schedule 25.12.2019
comment
эти методы не могут генерировать случайное число и возвращать пустое значение.   -  person Harendra Singh    schedule 25.12.2019
comment
Убедитесь, что расширение bcmath PHP установлено. (как проверить)   -  person Kamran    schedule 25.12.2019


Ответы (1)


попробуйте эту функцию, мы используем ее для наших шаблонов oscoommerce на php 5.4 - 7.4 :

function tep_create_random_value($length, $type='mixed') {
if (($type!='mixed') && ($type!='chars') && ($type!='digits'))
    return false;

$rand_value='';
while (strlen($rand_value) < $length) {
    if ($type=='digits') {
        $char=tep_rand(0, 9);
    }else {
        $char=chr(tep_rand(0, 255));
    }
    if ($type=='mixed') {
        if (preg_match('/^[a-z0-9]$/i', $char))
            $rand_value.=$char;
    }elseif ($type=='chars') {
        if (preg_match('/^[a-z]$/i', $char))
            $rand_value.=$char;
    }elseif ($type=='digits') {
        if (preg_match('/^[0-9]$/', $char))
            $rand_value.=$char;
    }
}

return $rand_value;

}

person Sergey Nezabudkin    schedule 13.05.2020