Функция PHP ведет себя по-разному на сервере и локальном хосте - PullRequest
0 голосов
/ 11 декабря 2011

Я создал класс для системы входа в систему.Я использую функцию для генерации солт-ключа на 128 бит.Но когда я запускаю эту функцию на сервере (GoDaddy Servers), он говорит мне, что thr round () имеет неверное количество аргументов.Хотя я проверил это несколько раз на локальном хосте, и все в порядке.

Не могли бы вы взглянуть на это и сказать, что с ним не так?

function encrypt($str, $len=null) {
 return (!empty($len)) ?
    hash('sha512', str_pad($str, (strlen($str) + $len),substr(hash('sha512', $str),round(strlen($str)/3, 0,PHP_ROUND_HALF_UP),($len - strlen($str))),STR_PAD_BOTH)) :
    hash('sha512', substr($str,round(strlen($str)/3, 0,PHP_ROUND_HALF_UP), 16));
}

1 Ответ

6 голосов
/ 11 декабря 2011

Они, вероятно, используют более старую версию php.Третий параметр round() не был добавлен до php 5.3.0.

http://php.net/manual/en/function.round.php

Редактировать:

if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
    round($number, 0, PHP_ROUND_HALF_UP);
}else{
    if($number % 1 == 0.5){
        $number+=0.1;
    }
    round($number, 0);
}
...