变量 CFUSION_ENCRYPT 未定义
Variable CFUSION_ENCRYPT is undefined
0 的 ColdFusion 经验在这里。
我的办公桌上丢了这个项目,它是 4 年前某人写的,此人已不在我公司工作了。
从实时托管网站获取日志,错误似乎存在于这一行。
第 196 行:
<p><a href="https://#$.siteConfig().getdomain()##$.createHREF(filename='accounts/verify-email')#?stub=#cfusion_encrypt(uu.username, application.encKey)#">Click here</a> to activate your account</p>
我认为这可能与 URL 存在于引号中并且参数未正确传递这一事实有关?但无论如何我都不确定。
我没有测试或调试它的代码库,只有实时部署的网站。
很高兴收到有关如何进行此操作的任何建议。
谢谢!
听起来您现在使用的 ColdFusion 服务器版本没有内置 cfusion_encrypt()
功能。
试试这个,改变
cfusion_encrypt(uu.username, application.encKey)
至
encrypt(uu.username, application.encKey,'CFMX_COMPAT','HEX')
希望对您有所帮助。
如果您的 CFML 代码托管在新的和 CF11 之前的 ColdFusion 服务器上,您可能需要使用用户定义的函数 (UDF) 来填补空白。我们在缓慢测试并将旧应用程序从 CF7 迁移到 2016 时使用了以下代码。(只需将这些功能添加到您的代码库并将现有的 "CFusion_" 标签重命名为 "Fusion_"。)
Barney Boisvert 于 2005 年 10 月 20 日发布:
http://www.barneyb.com/barneyblog/2005/10/28/cfusion_encryptcfusion_decrypt-udfs/
<cffunction name="fusion_encrypt" output="false" returntype="string">
<cfargument name="string" type="string" required="true" />
<cfargument name="key" type="string" required="true" />
<cfset var i = "" />
<cfset var result = "" />
<cfset key = repeatString(key, ceiling(len(string) / len(key))) />
<cfloop from="1" to="#len(string)#" index="i">
<cfset result = result & rJustify(formatBaseN(binaryXOR(asc(mid(string, i, 1)), asc(mid(key, i, 1))), 16), 2) />
</cfloop>
<cfreturn ucase(replace(result, " ", "0", "all")) />
</cffunction>
<cffunction name="fusion_decrypt" output="false" returntype="string">
<cfargument name="string" type="string" required="true" />
<cfargument name="key" type="string" required="true" />
<cfset var i = "" />
<cfset var result = "" />
<cfset key = repeatString(key, ceiling(len(string) / 2 / len(key))) />
<cfloop from="2" to="#len(string)#" index="i" step="2">
<cfset result = result & chr(binaryXOR(inputBaseN(mid(string, i - 1, 2), 16), asc(mid(key, i / 2, 1)))) />
</cfloop>
<cfreturn result />
</cffunction>
<cffunction name="binaryXOR" output="false" returntype="numeric">
<cfargument name="n1" type="numeric" required="true" />
<cfargument name="n2" type="numeric" required="true" />
<cfset n1 = formatBaseN(n1, 2) />
<cfset n2 = formatBaseN(n2, 2) />
<cfreturn inputBaseN(replace(n1 + n2, 2, 0, "all"), 2) />
</cffunction>
<h2>cfusion_encrypt Test</h2>
<cfset key = "test" />
<cfoutput>
<table>
<cfloop list="barney,is,damn cool!" index="i">
<tr>
<td>#i#</td>
<td>#cfusion_encrypt(i, key)#</td>
<td>#fusion_encrypt(i, key)#</td>
<td>#cfusion_decrypt(cfusion_encrypt(i, key), key)#</td>
<td>#fusion_decrypt(fusion_encrypt(i, key), key)#</td>
</tr>
</cfloop>
</table>
</cfoutput>
0 的 ColdFusion 经验在这里。
我的办公桌上丢了这个项目,它是 4 年前某人写的,此人已不在我公司工作了。
从实时托管网站获取日志,错误似乎存在于这一行。
第 196 行:
<p><a href="https://#$.siteConfig().getdomain()##$.createHREF(filename='accounts/verify-email')#?stub=#cfusion_encrypt(uu.username, application.encKey)#">Click here</a> to activate your account</p>
我认为这可能与 URL 存在于引号中并且参数未正确传递这一事实有关?但无论如何我都不确定。
我没有测试或调试它的代码库,只有实时部署的网站。
很高兴收到有关如何进行此操作的任何建议。 谢谢!
听起来您现在使用的 ColdFusion 服务器版本没有内置 cfusion_encrypt()
功能。
试试这个,改变
cfusion_encrypt(uu.username, application.encKey)
至
encrypt(uu.username, application.encKey,'CFMX_COMPAT','HEX')
希望对您有所帮助。
如果您的 CFML 代码托管在新的和 CF11 之前的 ColdFusion 服务器上,您可能需要使用用户定义的函数 (UDF) 来填补空白。我们在缓慢测试并将旧应用程序从 CF7 迁移到 2016 时使用了以下代码。(只需将这些功能添加到您的代码库并将现有的 "CFusion_" 标签重命名为 "Fusion_"。)
Barney Boisvert 于 2005 年 10 月 20 日发布: http://www.barneyb.com/barneyblog/2005/10/28/cfusion_encryptcfusion_decrypt-udfs/
<cffunction name="fusion_encrypt" output="false" returntype="string">
<cfargument name="string" type="string" required="true" />
<cfargument name="key" type="string" required="true" />
<cfset var i = "" />
<cfset var result = "" />
<cfset key = repeatString(key, ceiling(len(string) / len(key))) />
<cfloop from="1" to="#len(string)#" index="i">
<cfset result = result & rJustify(formatBaseN(binaryXOR(asc(mid(string, i, 1)), asc(mid(key, i, 1))), 16), 2) />
</cfloop>
<cfreturn ucase(replace(result, " ", "0", "all")) />
</cffunction>
<cffunction name="fusion_decrypt" output="false" returntype="string">
<cfargument name="string" type="string" required="true" />
<cfargument name="key" type="string" required="true" />
<cfset var i = "" />
<cfset var result = "" />
<cfset key = repeatString(key, ceiling(len(string) / 2 / len(key))) />
<cfloop from="2" to="#len(string)#" index="i" step="2">
<cfset result = result & chr(binaryXOR(inputBaseN(mid(string, i - 1, 2), 16), asc(mid(key, i / 2, 1)))) />
</cfloop>
<cfreturn result />
</cffunction>
<cffunction name="binaryXOR" output="false" returntype="numeric">
<cfargument name="n1" type="numeric" required="true" />
<cfargument name="n2" type="numeric" required="true" />
<cfset n1 = formatBaseN(n1, 2) />
<cfset n2 = formatBaseN(n2, 2) />
<cfreturn inputBaseN(replace(n1 + n2, 2, 0, "all"), 2) />
</cffunction>
<h2>cfusion_encrypt Test</h2>
<cfset key = "test" />
<cfoutput>
<table>
<cfloop list="barney,is,damn cool!" index="i">
<tr>
<td>#i#</td>
<td>#cfusion_encrypt(i, key)#</td>
<td>#fusion_encrypt(i, key)#</td>
<td>#cfusion_decrypt(cfusion_encrypt(i, key), key)#</td>
<td>#fusion_decrypt(fusion_encrypt(i, key), key)#</td>
</tr>
</cfloop>
</table>
</cfoutput>