проблема двойного переполнения в php - PullRequest
0 голосов
/ 03 декабря 2010

Я уверен, что это довольно просто, но я не могу найти ответ.

Я передаю double на страницу PHP и извлекаю ее с кодом:

$timestamp = $_POST['timestamp'];

Передаваемый номер (1291328282) заменяется на -1456872199 скриптом PHP. Код:

$timestamp = (float) $_POST['timestamp'];

имеет тот же результат.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

Нет никакой разницы в PHP. 'float', 'double' или 'real' - это один и тот же тип данных.

$_POST['timestamp']; Если значение 1291328282 не является двойным, а int, похоже, что UNIX_TIMESTAMP не следует путать с EPOCH.

Я не уверен, чего вы хотите достичь, но я думаю, что вы хотите:

$timestamp = (int)$_POST['timestamp'];

Маленькие дополнительные знания:

При преобразовании из числа с плавающей точкой в ​​конце строки нули будут сбрасываться.

Пример (5.3. ^)

echo (string)5.00500; // outputs 5.005
echo (string)30.0000; // outputs 30

То, что вы хотите сделать, это:

$timestamp = abs((int)$_POST['timestamp']);
0 голосов
/ 03 декабря 2010

Как вы обрабатываете данные после объявления переменной? Все, что отправлено через форму, является строкой. PHP помещает данные в $ _POST в виде строк (за исключением массивов). $ timestamp должен иметь правильное значение при объявлении , потому что строки не ограничены, как целое число. То, что вы делаете с $ timestamp после объявления о том, что это, вероятно, заставляет PHP зависать.

...