标签: coldfusion-9

是否有必要在CFScript中使用var scope循环变量?

当使用CFML和CF9时,我通常会调整我的循环变量范围; 在这种情况下local.i,例如:

<cfloop list="#this.list#" index="local.i">
  <cfif Len(local.i) GT 10>
    // do something
  </cfif>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

我最近开始将一些东西转换为CFScript,并且(令我失望的是我发现没有办法在CFScript中循环遍历列表)我想知道我是否仍然应该调整我的循环变量范围,以及如何:

for (i = 1; LTE ListLen(this.list); i = i + 1 ) {
  if (Len(ListGetAt(this.list, i) GT 10)) {
    // do something
  }
}
Run Code Online (Sandbox Code Playgroud)

我应该做什么,local.i = 1local.i = local.i + 1不是我的例子中的示例代码?有必要吗?

编辑:我还应该问我的CFML循环的CFScript形式是否正确; 我问,因为我刚注意到我的CFML循环使用,(逗号和空格)delimiter参数,这似乎在CFScript版本的循环中不存在.

coldfusion coldfusion-9

7
推荐指数
2
解决办法
3049
查看次数

如何在coldfusion中将图像写入浏览器作为二进制流?

我在Coldfusion 9服务器上有一项服务,可以为我们动态创建图像横幅.一台单独的机器必须保存这些文件,例如:

wget http://myserver.com/services/local/bannerCreator/250x250-v3.cfm?prodID=3&percentSaving=19
Run Code Online (Sandbox Code Playgroud)

问题是我想不出如何在不使用临时文件的情况下让coldfusion写出二进制数据.在这一刻,图像只显示为这样的图像标签:

<cfimage action = "writeToBrowser" source="#banner#" width="#banner.width#" height="#banner.height#" />
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?或者我应该只使用临时文件?

coldfusion coldfusion-9

7
推荐指数
2
解决办法
9306
查看次数

如何为在同一服务器上运行的不同ColdFusion应用程序实现单点登录?

我有多个CF应用程序在相同的域名下运行在同一台服务器上.其中之一,我们称之为Portal,旨在成为其他应用程序的单点登录,让我们称之为AtlasP-Body.通常,您会在session范围中设置一些变量来处理登录信息:

function Login()
{
    session.auth = structNew();
    session.auth.isLoggedIn = true;
    session.auth.id = GetCurrentUserId();
}
Run Code Online (Sandbox Code Playgroud)

但会话范围仅在一个应用程序中共享,而不是在整个服务器中共享.这意味着登录Portal的任何用户都将保持登录状态,但如果他们尝试导航到AtlasP-Body,他们将不得不再次登录.

在这种情况下,我将如何"共享"会话范围,以便服务器上的所有应用程序都可以访问它?我能想到的唯一方法是使用客户端变量并设置数据存储,以便在应用程序之间共享.然后代码变成:

function Login()
{
    client.auth = structNew();
    client.auth.isLoggedIn = true;
    client.auth.id = GetCurrentUserId();
}

function Logout()
{
    structDelete(client, "auth");
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是,因为客户端变量在会话结束时没有被清除,所以我们必须在OnSessionEnd处理程序中手动清除它.

这是处理ColdFusion中单点登录的最佳方式吗?如果是这样,使用客户端变量有什么缺点,或者需要注意缺陷吗?

更新:我只是测试客户端变量法,它看起来像只hitcount,timecreated,lastvisit,和urltoken应用程序之间共享,所以我又回到了起点1.

authentication coldfusion session-variables single-sign-on coldfusion-9

7
推荐指数
1
解决办法
2833
查看次数

添加大型查询时,如何修复SpreadSheetAddRows函数崩溃?

编辑3:感谢@Leigh的帮助我将问题缩小到了查询中的日期列.使用原始代码集和POI时,当SpreadSheetAddRows()尝试添加包含类似日期的单元格的非常大的查询时,页面崩溃.我在这里做了一个错误报告:https://bugbase.adobe.com/index.cfm?event = bug &id = 3432184.


我有一个查询,我添加到一个spreadhseet对象,当查询具有非常多的行(在此示例中为18583)时似乎出错.确切的错误如下:

java.lang.ArrayIndexOutOfBoundsException: -32735
at java.util.ArrayList.get(ArrayList.java:324)
at org.apache.poi.hssf.model.WorkbookRecordList.get(WorkbookRecordList.j ava:50)
at org.apache.poi.hssf.model.Workbook.getExFormatAt(Workbook.java:787)
at org.apache.poi.hssf.usermodel.HSSFCell.getCellStyle(HSSFCell.java:901 )
at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java :1727)
at coldfusion.excel.Excel.autoResize(Excel.java:1246)
at coldfusion.excel.Excel.autoResize(Excel.java:1240)
at coldfusion.excel.Excel.addRows(Excel.java:1214)
at coldfusion.runtime.CFPage.SpreadSheetAddRows(CFPage.java:7089) at coldfusion.runtime.CFPage.SpreadSheetAddRows(CFPage.java:7076)
Run Code Online (Sandbox Code Playgroud)

这是相关的代码:

<cfset xls = spreadsheetNew()>
<cfset spreadsheetAddRow(xls, arrayToList( qryTest.getMeta().getColumnLabels() ))>
<cfset SpreadsheetFormatRow(xls, {bold=true,fgcolor="brown",color="white"}, 1)>
<cfset SpreadsheetAddRows(xls, qryTest)>
<cfheader name="Content-Disposition" value="attachment; filename=#filename#">
<cfcontent variable="#spreadsheetReadBinary(xls)#" reset="yes" type="application/vnd.ms-excel">
Run Code Online (Sandbox Code Playgroud)

编辑:我之前成功使用过cfspreadsheet,但它没有生成带有标题的电子表格(并且它还有需要创建临时文件以供服务的缺点.)


EDIT2:关注@Leigh建议我更新了CF9/lib文件夹中的POI.现在错误已更改为以下内容:

<cfset SpreadsheetFormatRow(xls, {bold=true,fgcolor="brown",color="white"}, 1)> 给出以下消息:org.apache.poi.hssf.util.HSSFColor.getIndexHash()Ljava/util/Hashtable;

错误代码:

java.lang.NoSuchMethodError:
org.apache.poi.hssf.util.HSSFColor.getIndexHash()Ljava/util/Hashtable;
at coldfusion.excel.Excel.getHSSFColor(Excel.java:2094)
at coldfusion.excel.Excel.findFont(Excel.java:2237)
at coldfusion.excel.Excel.getCellStyle(Excel.java:2318)
at coldfusion.excel.Excel.formatRow(Excel.java:2948)
at …
Run Code Online (Sandbox Code Playgroud)

java arrays coldfusion apache-poi coldfusion-9

7
推荐指数
1
解决办法
7211
查看次数

Coldfusion Query循环适用于cf10但不适用于9

为什么以下工作在CF10而不是CF9?

<cfset out="">
<cfif isQuery( arguments.values ) >
    <cfloop query="#arguments.values#" >            
        <cfset out = '#out#<option value="#value#">#label#</option>'>
    </cfloop>
</cfif>
Run Code Online (Sandbox Code Playgroud)

CF9声明"复杂对象类型无法转换为简单值".对于包含cfloop的行.我正在使用Coldbox框架,它的调试器信息显示arguments.values是一个带有Label&Value列的查询.

coldfusion coldfusion-9 coldfusion-10

7
推荐指数
1
解决办法
587
查看次数

我可以获取被黑的Coldfusion模板的来源吗?

我们最近有一个黑客访问我们的系统.他们抛弃了一些Coldfusion模板,并将它们包含在我们网站上的随机页面中.

他们转储的文件开头,Allaire Cold Fusion Template然后包含看似"垃圾"的东西,但我相信这是某种预编译的Coldfusion代码.

我们已经清除了黑客攻击,但我保存了文件,因为我希望有一些方法可以对它们进行反编译,也许可以对它们有所了解.虽然我认为黑客已被处理,但我有点担心这段代码在做什么.(当我查看包含此代码的页面的源代码时,它没有创建输出,因此必须在后台进行某些操作.)

如果没有办法,那很酷,我只是想我至少会调查看看这些文件在做什么的可能性.在此先感谢您的帮助.

coldfusion coldfusion-9

7
推荐指数
2
解决办法
2445
查看次数

实现onCFCRequest()时,公共函数可以远程访问

一些背景:

我正在使用onCFCRequest()与常规CFM页面请求分开处理远程CFC调用.这允许我捕获错误并为所有远程请求干净地设置MIME类型.

问题:

我不小心设置了一些远程CFC功能,public而不是remote在远程调用时意识到它们仍在工作.

正如您在下面所看到的,我的实现onCFCRequest()为我的整个应用程序创建了一个巨大的安全漏洞,其中HTTP请求可用于public在任何HTTP可访问的CFC上调用任何方法.

REPRO CODE:

在Application.cfc中:

    public any function onCFCRequest(string cfc, string method, struct args){
        cfc = createObject('component', cfc);
        return evaluate('cfc.#method#(argumentCollection=args)');
    }
Run Code Online (Sandbox Code Playgroud)

在远程调用的CFC中:

    public any function publicFunction(){
        return 'Public function called remotely!';
    }
Run Code Online (Sandbox Code Playgroud)

题:

我知道我可以在调用方法之前检查组件的元数据,以验证它是否允许远程访问,但还有其他方法可以解决这个问题吗?

coldfusion coldfusion-9

7
推荐指数
1
解决办法
649
查看次数

coldfusion对象v10与v9

这段代码适用于CF10,但不适用于CF9.任何人都可以告诉我为什么?

CF9错误如下:

Invalid CFML construct found on line 2 at column 18.
ColdFusion was looking at the following text:
{
Run Code Online (Sandbox Code Playgroud)

代码:

<cfscript>
CompanyobjData = {
  'CustomerID' : 'a',
  'CUSTOMERNAME1' : 'b',
  'CUSTOMERADDRESS1' : 'c',
  'CUSTOMERADDRESS2' : 'd',
  'CITY' : 'e',
  'ST' : 'f',
  'ZIP' : 'g',
  'PHONE' : 'h',
  'DEFAULTTERM' : 'i'
};
</cfscript>
<cfdump var="#CompanyobjData#" >
Run Code Online (Sandbox Code Playgroud)

coldfusion coldfusion-9 coldfusion-10

7
推荐指数
1
解决办法
108
查看次数

ColdFusion电子表格内存问题

我使用ColdFusion导出相当少的行(大约1000)但是大量的列(大约300)到Excel.它是一个多页Excel文件,其中至少有两个页面具有大量列.使用cfspreadsheet抛出Java堆错误.更新JVM设置值没有显示任何改进.在不导致Java堆错误的情况下导出到Excel的最佳方法是什么?

编辑:我已经尝试了几种方法来解决程序中的问题.我正在使用cfsavecontent中的xml工作簿来构建多个工作表并使用cfcontent呈现结果.在这种情况下,cfcontent可能会使用大量内存,从而导致堆空间错误.

<cfsavecontent variables="REQUEST.xmlData">
<cfoutput>
<xml version="1.0"?>
<?mso-application progid="Excel.sheet"?>
<Workbook>
   ...other contents
</Workbook>
</cfoutput>
</cfsavecontent>
Run Code Online (Sandbox Code Playgroud)

对于第二种解决方法,我使用querynew来构建内容并使用在Excel中转​​储最终结果<Cfspreadsheet action="write">.对于后续的工作表,我正在使用<cfspreadsheet action="update">.最终目标是使用excel <cflocation url="excelPath">,但在这种情况下,cfspreadsheet更新将永远丢失内存错误.

如果更新jvm不是一个选项,那么您建议采用哪些其他方法来克服内存问题.

coldfusion excel coldfusion-9 cfspreadsheet

7
推荐指数
1
解决办法
491
查看次数

虽然安装了所有证书,但使用HTTPS的Coldfusion cfhttp无法正常工作

我知道这个问题已经被问了很多,但是虽然我现在一直在寻找几天,但我找不到合适的答案.

我们使用JDK 1.7运行Coldfusion 9 Standard.我正在尝试使用cfhttp执行请求,代码如下:

 <cfhttp url="Https://subdomain.example.com" method="get"  result="result" username="#myUsername#" password="#myPassword#" />
Run Code Online (Sandbox Code Playgroud)

转出结果时我得到以下内容:

[1]

我已经将证书链中的所有证书导入到正确的密钥库中.CA是Let的加密.有趣的是,我们有另一个网站,我们要求网络服务,也有来自Let's Encrypt的证书,它正在运行.从同一Coldfusion服务器访问.

我还尝试在Application.cfc中使用onApplicationStart中的代码,但是没有用:

<cfif NOT isDefined("Application.sslfix")>
    <cfset objSecurity = createObject("java", "java.security.Security") />
    <cfset objSecurity.removeProvider("JsafeJCE") />
    <cfset Application.sslfix = true />
</cfif> 
Run Code Online (Sandbox Code Playgroud)

coldfusion https coldfusion-9

7
推荐指数
1
解决办法
624
查看次数