PHP Примечание: обнаружено неверное числовое значение c m - Устаревший код? - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь оживить свой старый сайт и обнаружил, что мой код довольно устарел. Я до сих пор много обновлял без особой головной боли, но я не могу избавиться от этой ошибки. (Прошло некоторое время с тех пор, как я написал любое PHP.)

Ошибка:

PHP Примечание: обнаружено некорректное числовое значение c

Код:

if(strtotime('-1 day', date('Y-m-d')) == $lastVisit) {

    $consecutive = $consecutive + 1;
    $mysqli->query("UPDATE login SET log_in_time=NOW(),consecutive='".$mysqli->real_escape_string($consecutive)."' WHERE name='".$mysqli->real_escape_string($name)."'");

}

Кажется, это самая первая строка, но я не могу ее понять.

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Как упоминалось ранее, strtotime() ожидает целое число в качестве второго аргумента.

Вот альтернатива:

$lastVisitDate = (new \DateTime($lastVisit))->format('Y-m-d');
$thisDate = date('Y-m-d', time() - 60 * 60 * 24);

if ($lastVisitDate === $thisDate) {
…
}

Изменить: добавлена ​​метка времени в date().

1 голос
/ 11 июля 2020

Как указывает PHP документация , strtotime() ожидает, что второй параметр будет ìnt.

strtotime ( string $time [, int $now = time() ] ) : int

в вашем коде, вы даете строку потому что date () имеет тип возврата string.

См. этот пример о том, как проверить, было ли задано $lastVisit вчера:

<?php
$lastVisit = '2020-07-11 14:48:16'; // example value

$lastVisitTimestamp = strtotime($lastVisit); // convert timestamp to int
$lastVisitDate = date("Ymd", $lastVisitTimestamp); // convert $lastVisit to Ymd-String representing 
$yesterdayDate = date("Ymd", strtotime('-1 day', time())); // remove one day from current time and convert it to comparable string

// compares two strings f.e "20207010 === 20200711" to check if $lastVisit was yesterday
if($yesterdayDate === $lastVisitDate) {
    echo "yeah! last visit was yesterday :)";
} else {
    echo "no :(";
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...