Application.cfm中的这段代码(我知道它可能应该是.cfc,但这是一些可以追溯到MX的旧代码)用于用于CF8和CF9的cookies,但是我使用CF10 Developer版本将它移到了一个本地目录中,直到我注释掉该块之后,它才起作用。这是达到索引时的错误。
The system has attempted to use an undefined value, which usually indicates a programming error, either in your code or some system code.
Null Pointers are another name for undefined values.
The error occurred in C:/ColdFusion10/cfusion/wwwroot/TFT/Application.cfm: line 3
1 : <!--- APPLICATION settings --->
2 : <cfif IsDefined("cfid")>
3 : <cfcookie name="cfid" value="#cfid#" expires="NOW">
4 : <cfcookie name="cftoken" value="#cftoken#" expires="NOW">
5 : </cfif>这是Application.cfm中的当前代码:
<!--- APPLICATION settings --->
<!--- 5/1/13 removed cookies temporarily
<cfif IsDefined("cfid")>
<cfcookie name="cfid" value="#cfid#" expires="NOW">
<cfcookie name="cftoken" value="#cftoken#" expires="NOW">
</cfif>--->
<!--- Define the application parameters--->
<cfapplication name="TFTAdmin" clientmanagement="Yes"
sessionmanagement="Yes"
setclientcookies="No"
sessiontimeout="#CreateTimeSpan('0','4','0','0')#"
applicationtimeout="#CreateTimeSpan('0','4','0','0')#">
<!--- Create cookies that disappear when the browser closes as to increase security --->
<cflock scope="session" type="readonly" timeout="5">
<cfcookie name="cfid" value="#session.cfid#">
<cfcookie name="cftoken" value="#session.cftoken#">
</cflock>编辑:这个文件中还有更多的代码--但它似乎无关紧要。
发布于 2013-05-03 13:18:24
如果正确地调整变量的范围会发生什么?cfid可以在变量范围中定义为null值。
<cfif structKeyExists(session,"cfid")>
<cfcookie name="cfid" value="#session.cfid#" expires="NOW">
<cfcookie name="cftoken" value="#session.cftoken#" expires="NOW">
</cfif>发布于 2013-05-07 19:54:54
因为您是在一台新服务器上,所以我怀疑您成功地使cookie进入了一个没有有意义的值的状态。
无论如何,我不确定修复代码是否重要,因为它似乎在做一些荒谬的事情。但是,代码的一个快速修正就是这样做:
<cfif IsDefined("cfid")>
<cfcookie name="cfid" value="" expires="NOW">
<cfcookie name="cftoken" value="" expires="NOW">
</cfif>它仍然只对cfid进行测试,但没有设置cookie的值。值并不重要,因为代码将终止cookie。
我之所以说代码是荒谬的,是因为Cookie作用域是范围评价顺序的一部分。因此,整个代码所做的是:“如果cookies存在,请删除它们,然后用新值设置新cookie。”因此,用户将在每次刷新页面时获得一个新的会话。这与最初没有任何会话管理是一样的。因此,您最好设置sessionmanagement="false"并删除这两个cookie代码块。
这段代码之所以出现,可能是因为有人不允许通过URL/表单变量更改会话,从而限制了会话劫持,从而提供了一些额外的安全性。然而,它的实现方式也不能解决这个问题。
https://stackoverflow.com/questions/16359659
复制相似问题