每次用户登录时,我都会从他那里保存一个ID。为了限制程序的传播,我想允许每个用户最多拥有 3 台设备。此语句使用硬件 ID 填充数据库
.SQL:
UPDATE license SET
hardwareID3 = CASE WHEN hardwareID1 IS NOT NULL AND
hardwareID2 IS NOT NULL AND
hardwareID3 IS NULL
THEN $hwid
ELSE hardwareID3 END,
hardwareID2 = CASE WHEN hardwareID1 IS NOT NULL AND
hardwareID2 IS NULL
THEN $hwid
ELSE hardwareID2 END,
hardwareID1 = CASE WHEN hardwareID1 IS NULL
THEN $hwid
ELSE hardwareID1 END
WHERE code = $lic AND $hwid NOT IN (COALESCE(hardwareID1,hardwareID2,hardwareID3, 0))
.PHP:
$checkhwid = $VBPHP -> uphwid($hwid, $lic);
有2个问题:
当用户使用第二个 ID(对于 Exampl "2")登录 2 次时,值"2"也会写入硬件 ID3 列中。
我想捕获用户是否尝试使用第 4 个 ID 登录并返回错误。可悲的是,我无法使用"真或假"ifs,因为当用户使用第一个ID登录时,我会得到"true"结果,如果他使用ID 1多次登录,我会得到false,因为该语句没有改变任何东西(什么是正确的)。
我的想法快用完了。提前谢谢。
下面您可以返回错误消息并捕获失败的登录计数
UPDATE license SET
errormessage = CASE WHEN hardwareID1 IS NOT NULL AND
hardwareID2 IS NOT NULL AND
hardwareID3 IS not NULL
and )$hwid!=hardwareID1 or $hwid!=hardwareID2 or $hwid!=hardwareID2)
then 'errormessage' else 'allok' end,
failedlogins = CASE WHEN hardwareID1 IS NOT NULL AND
hardwareID2 IS NOT NULL AND
hardwareID3 IS not NULL
and $hwid!=hardwareID1 and $hwid!=hardwareID2 and $hwid!=hardwareID2
then failedlogins+1 else failedlogins end,
hardwareID3 = CASE WHEN hardwareID1 IS NOT NULL AND
hardwareID2 IS NOT NULL AND
hardwareID3 IS NULL
and ($hwid!=hardwareID1 or $hwid!=hardwareID2 )
THEN $hwid
ELSE hardwareID3 END,
hardwareID2 = CASE WHEN hardwareID1 IS NOT NULL AND
hardwareID2 IS NULL
and $hwid!=hardwareID1
THEN $hwid
ELSE hardwareID2 END,
hardwareID1 = CASE WHEN hardwareID1 IS NULL
THEN $hwid
ELSE hardwareID1 END
WHERE code = $lic AND $hwid NOT IN (COALESCE(hardwareID1,hardwareID2,hardwareID3, 0))