2010-12-02 3 views
0

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

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

$timestamp = $_POST['timestamp']; 

число передается (1291328282) получает переоделся в -1456872199 в PHP скрипт. Код:

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

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

+0

Что `var_dump ($ _ POST [ 'Отметка времени'])` дать? Это должна быть строка. – Matthew 2010-12-02 22:22:53

+0

Я могу поспорить с его строкой отметки времени unix. – RobertPitt 2010-12-02 22:28:55

+1

fyi, я передаю значение, полученное из java: double timestamp = (double) (System.currentTimeMillis()/1000); – TomBomb 2010-12-02 22:35:48

ответ

0

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

$_POST['timestamp']; если имеет значение 1291328282 не двойной, но int, это выглядит как UNIX_TIMESTAMP не запутаться с ЭПОХИ.

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

$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

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

Смежные вопросы