Обновление: я не знаю, почему разница во времени, когда менее 180 секунд все еще добавляет 10 в столбце рейтинга пользователя - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть система регистрации и входа в систему, которая изначально устанавливает первую дату и время регистрации.Каждый раз, когда пользователь входит в систему, у меня есть запрос, который проверяет разницу во времени между зарегистрированным временем и текущим временем.если разница во времени больше или равна 180 секундам, добавьте 10 к столбцу рейтинга этого пользователя и сбросьте текущее время входа в систему как новую дату / зарегистрированное время, затем перенаправьте пользователя на страницу индекса.

Еслиразница во времени составляет менее 180 секунд, просто перенаправьте пользователя на индексную страницу, не добавляя номер в таблицу рейтинга.

Я пробовал много кодов, которые исследовали, как заставить это работать, все, что я вижу, это работа cron.я не хочу делать это с помощью cron.

должен быть способ, пожалуйста, помогите.ребята, вы должны спасти меня.Это то, что я сделал

<?php
// This is part of the code

          //$_SESSION['id'] = $id;
             $_SESSION['email'] = $email;   

                date_default_timezone_set("Africa/Lagos");
                // getting the time query difference
                $sql1 = "SELECT TIMESTAMPDIFF(SECOND, date, NOW()) AS tdif FROM 
                          users WHERE email='$email'";  
                $result = $con->prepare($sql1);
                $result->execute();
                $result->bind_result($tdif);
                $result->fetch();

                //var_dump($tdif);

                if ($tdif >= 180) {  
          //following code suppose run once every 180seconds

        //update user's page rank
        $sql2 = "UPDATE users SET rating = rating + 10 WHERE email='$email'"; 
         $result2 = $con->query($sql2) or die("Unable to select and run query");

       //update last execution time
       $sql3 = "UPDATE users SET date = NOW() WHERE email='$email'";
       $result3 = $con->query($sql3) or die("Unable to select and run query");

         }


                    //login me in   
              redirectToIndexPage();

// This Outputs Unable to select and run query

?>

Этот код просто добавляет 10 к рейтингу, независимо от разницы во времени все время.другими словами, он продолжает добавлять 10 каждый раз, когда пользователь входит в систему, что, как предполагается, происходит только через 3 минуты (180 секунд) от последнего входа в систему или зарегистрированной даты и времени

Пожалуйста, помогите, я знаю, что что-то не так.

1 Ответ

0 голосов
/ 05 апреля 2019

Как указано в комментариях выше, вы не получите ни одного значения из вашего запроса, как ожидалось. Измененный код ниже выполнит тот же запрос и установит для вашей переменной $tdif одно значение, которое будет работать в вашем операторе if.

$sql1 = "SELECT TIMESTAMPDIFF(SECOND, date, NOW()) AS tdif FROM users WHERE email=?";
$result = $con->prepare($sql1);
$resylt->bind_param("s",$email);
$result->execute();
$result->bind_result($tdif);
$result->fetch();

if ($tdif >= 180) {
     //update user's page rank
    $sql2 = "UPDATE users SET rating = rating + 10 WHERE email='$email'";
    $result2 = $con->query($sql2) or die("Unable to select and run query");
   //update last execution time
    $sql3 = "UPDATE users SET date = NOW() WHERE email='$email'";
    $result3 = $con->query($sql3) or die("Unable to select and run query");
}
redirectToIndexPage();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...