1
這段代碼正在生產中,以根據使用情況阻止IP。觸發了一封電子郵件,並執行了一個插入,其IP地址滿足cfif條件。但是,當我在SQL編輯器中執行查詢時,對於相同的IP,它將計數返回爲0(即getNineHundredCnt.maxDownload)。CFQUERY和CFIF比較的意外結果
這發生只有一個用戶。對於其他用戶來說,它工作得很好,幾乎有1L用戶每天都可以訪問應用程序。任何人都可以幫助解釋爲什麼發生?
<cfquery name="getExcessiveUsageConfig" DATASOURCE="#arguments.datasrc#">
SELECT * FROM ExcessiveUsageConfig
</cfquery>
<cfset usageLimitStruct.maxFifMinDownload = getExcessiveUsageConfig.MAXFIFMINDOWNLOAD >
<!---- This value is 900 and not changed --->
<cfquery name="getNineHundredCnt" DATASOURCE="#arguments.datasrc#">
SELECT
(select count(9)
from downloads
where download_time > dateadd(minute,-15,getdate())
and USER_IP = <cfqueryparam value="#remoteAddress#" cfsqltype="CF_SQL_VARCHAR">
) as maxDownload,
(select TOP 1 DATEDIFF(second, DOWNLOAD_TIME, GETDATE())
from CAPTCHA
WHERE USER_IP = <cfqueryparam value="#remoteAddress#" cfsqltype="CF_SQL_VARCHAR">
and Erights_sessionId = <cfqueryparam value="#arguments.erightsCookie#" cfsqltype="CF_SQL_VARCHAR">
order by DOWNLOAD_TIME DESC
) as Ccheck
</cfquery>
<cfif getNineHundredCnt.maxDownload gte usageLimitStruct.maxFifMinDownload>
<cfquery name="checkToBlockIpExcessUsage" DATASOURCE="#arguments.dataAuthentication#">
INSERT INTO DisabledIPs(IP,TIMEDISABLED)
VALUES (<cfqueryparam value="#remoteAddress#" cfsqltype="CF_SQL_VARCHAR">,GETDATE())
</cfquery>
<cfmail from="[email protected]" to="[email protected]" subject="IP Blocked" type="text">
IP : #remoteAddress#
Time : #currentTime#
The IP has been blacklisted
</cfmail>
</cfif>
如果查詢超時,是否有機會返回0作爲sql查詢的值? –
ExcessiveUsageConfig中有多少行? –
它的唯一一行,並且列MAXFIFMINDOWNLOAD的值是900 –