PHP / MySQLを使用すると、ユーザーは毎日メンバーアカウントに単一の整数ポイントを付与されます。ポイントを付与する必要があるかどうかを判断するために使用するデータは、作成日(タイムスタンプ)と最終ログイン(UNIX時間)のmysqlフィールドです。
これらのポイントを付与する手順は、ユーザーがログインしたときに決定されます。私の質問は、最後のログインから何日が経過したかを判断する最も効率的な方法は何ですか?次に、ユーザーが毎日ログインしている場合、24時間が経過してポイントが付与されるかどうかを判断するにはどうすればよいですか?過去の日数は、与えられたポイント(1日あたり1)に相当します。
現在、私はこのコードを使用しています:
/*
** Updates Points based on days since last visit
*/
static function UpdatePoints($username)
{
$getlog = System::$mySQL->Select("lastLog, creation FROM users WHERE username='$username'");
$log = System::$mySQL->Fetch($getlog);
$offset = (TIME() - $log['lastLog']) / 86400; // 24hrs
$lastlog = round($offset); // in days
if($lastlog > 0)
{
System::$mySQL->Update("users SET points=points+".$lastlog." WHERE username='$username'");
}
}
マークアップはさておき、私のコードが近視眼的であることは明らかです。ユーザーが1日に1回ログインすると、ポイントは獲得できません。したがって、[作成日]フィールドを使用して、これを行うための正しい方法を決定する必要があります。今日は頭を包むことができません、何か提案はありますか?ありがとう。