CF – connessioni multiple

Come limitare le connessioni simultanee da uno stesso ip ad un sito, integrando questo script nell’Application.cfm

 

<cfsilent>
<!— init —>
<cfset connectionLimit=3>
<cfset secondiRange = 5>
<cfset secondi = int(second(now()) / secondiRange) * secondiRange>
<cfset data="d" & dateFormat(now(),"YYMMDD") & timeFormat(now(),"HHMM") & secondi>
<cfset ip="ip" & replaceNoCase(cgi.REMOTE_ADDR,".","_","all")>
<cfset connectionIp="application.checkConnection.#ip#">
<cfset connectionIpData="application.checkConnection.#ip#.#data#">
<cfoutput>
<h3>dati init</h3>
<b>Connessioni permesse</b>: <i>#connectionLimit#</i> in <i>#secondiRange#</i><br />
<b>data</b>: #data#<br />
<b>connectionIp</b>: #connectionIp#<br />
<b>connectionIpData</b>: #connectionIpData#<br />
<br />
</cfoutput>

<cflock timeout="5" name="lk_checkConnection">
<!— creo la variabile di controllo —>
<cfif not isDefined("application.checkConnection")>
<cfset application.checkConnection = StructNew()>
</cfif>

<!— creo la variabile ip —>
<cfif not isDefined("#connectionIp#")>
<cfset "#connectionIp#" = StructNew()>
</cfif>

<!— creo la variabile ipData —>
<cfif not isDefined("#connectionIpData#")>
<cfset "#connectionIpData#" = 0 >
</cfif>

<h3>Risultati test</h3>
<!— utente in data esistente, controllo connessioni —>
<cfif evaluate(connectionIpData) gte connectionLimit>
<cfset checkConnection=false>
<cfelse>
<cfset checkConnection=true>
<cfset "#connectionIpData#"= evaluate(connectionIpData) + 1>
</cfif>
</cflock>

<!— test —>
<cfdump var="#application#">
</cfsilent>
<cfif not CheckConnection>
Superato il limite di connessioni contemporanee.<br />
Si prega di riprovare pi&ugrave; tardi.<br />
Si segnala altres&igrave; che lo scaricamento tramite particolari software dell’intero sito <br />
verr&agrave; segnalato alle autorit&agrave; competenti.<br />
</cfif>

Loading Facebook Comments ...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *