我目前正在制作一个我认为是个好主意的程序(至少我当然希望它是这样).对于我正在构建的程序,我正在使用(经过一段很长时间的考虑)ColdFusion - Flex - Adobe Air.但是,我必须学习ColdFusion才能做到这一点.
我是一名独立开发人员,大部分使用PHP来构建我的客户端网站.由于我计划学习ColdFusion来构建这个程序,你们对我如何在其他地方使用ColdFusion有任何建议吗?认为我只是为了一件事学习这门语言并不是很令人兴奋.
我不打算很快建立可口可乐最新的最好的网站,但我(出于某种奇怪的原因)喜欢编码,只是想知道你们是否有任何关于任何可以追求的小时间路径的建议?
任何建议将不胜感激!:)
Cliff指出:我是一名独立的PHP开发人员,为客户学习ColdFusion.学习一门我永远不会再使用的语言并不令人兴奋.我将来在哪里可以申请ColdFusion?
嘿,我有一个关于正则表达式的相当基本的问题.我想只返回body(包括)body标签中的文本,我知道以下是不对的,因为它也会匹配开始body标签之前的所有字符.我想知道你怎么去跳过那些?
x = re.match('(.*<body).*?(</body>)', fileString)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个用ColdFusion编写的网站,其中包含通常的交互式网页和通过CF调度程序运行的一些任务.目录布局是
/
/app
/scheduledTasks
Run Code Online (Sandbox Code Playgroud)
我希望这些任务能够使用/ app中application.cfc中创建的所有相同设置等,所以我想将整个/ scheduledTasks目录移动到/ app.问题是application.cfc使用cflogin机制和我自己的登录表单.CF调度程序仅允许您为HTTP基本身份验证提供用户名和密码.计划的任务永远不会过去.我该如何解决这个问题,还是有更好的方法开始?
我想知道在我的application.cfc的OnRequestStart中查看一些CGI变量,例如用户代理,远程IP和/或URL参数中的魔术值,如果一切都在那里,绕过安全,因为我"知道"它的CF的调度程序在另一端.这不是很好的安全性,但可能是可以接受的.
我也想知道在我的root中创建一个新的application.cfc,/ app中的application.cfc继承自.我将任务保留在原来的位置,并在那里放置一个新的application.cfc,它从根目录继承了常见的东西.这会增加复杂性,但在尝试从/ scheduledTasks访问/ app/cfcs中的CFC时遇到了问题.
有谁有类似的问题并解决了吗?
我正在尝试学习新的cfscript语法,以及使用cflogin.我猜我不能在cfscript中混用cf标签,而且我没有看到与cflogin,cflogout,cfloginuser等效的脚本.
我应该调用用CF8语法编写的组件才能使用cflogin吗?
public void function onRequest(required string Page) output="true" {
if (StructKeyExists(url,"logout")) {
<cflogout>
}
<cflogin>
local.qryUsr = new Components.Usr.Login(form);
if (local.qryUsr.Recordcount) {
<cfloginuser name="#form.UsrName#" password="#form.UsrPassword#" roles="#local.qryUsr.Roles#">
} else {
request.errorMessage = "Incorrect login";
include login/login.cfm;
return;
}
</cflogin>
include arguments.Page;
}
Run Code Online (Sandbox Code Playgroud) 针对SQL注入漏洞的典型控制是使用绑定变量(cfqueryparam标记),字符串数据验证以及转向实际SQL层的存储过程.这很好,我同意,但如果该网站是遗留的,它具有很多动态查询.然后,重写所有查询是一项艰巨的任务,需要进行大量的回归和性能测试.我正在考虑使用动态SQL过滤器并在调用cfquery之前调用它以进行实际执行.
我在CFLib.org(http://www.cflib.org/udf/sqlSafe)中找到了一个过滤器:
<cfscript>
/**
* Cleans string of potential sql injection.
*
* @param string String to modify. (Required)
* @return Returns a string.
* @author Bryan Murphy (bryan@guardianlogic.com)
* @version 1, May 26, 2005
*/
function metaguardSQLSafe(string) {
var sqlList = "-- ,'";
var replacementList = "#chr(38)##chr(35)##chr(52)##chr(53)##chr(59)##chr(38)##chr(35)##chr(52)##chr(53)##chr(59)# , #chr(38)##chr(35)##chr(51)##chr(57)##chr(59)#";
return trim(replaceList( string , sqlList , replacementList ));
}
</cfscript>
Run Code Online (Sandbox Code Playgroud)
这似乎是一个非常简单的过滤器,我想知道是否有办法改进它或提出更好的解决方案?
我应该如何使用 Coldbox 框架向应用程序添加 cfschedule 任务?
我是不是该:
a.) 编写一个执行任务的事件,并使用 Coldbox 将 cfschedule 指向该 URL?
b.) 在 Coldbox 之外写一个简单的 .cfm?
这个比那个好吗?
谢谢。
这是我的查询.
<cfquery name="qryname" datasource="dsn">
UPDATE ticketlist
SET status = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="Expired">
WHERE expdatetime <
<cfqueryparam value = "#yourDate#" cfsqltype = "CF_SQL_DATE" maxLength = "19">
</cfquery>
Run Code Online (Sandbox Code Playgroud)
它能够给我所有结果,他们的expdatetime小于#yourdate#,唯一的问题是它只显示结果谁的差异是一整天,但不是那些差异在最小.因此,expdatetime的差异小于#thertime#by min's将不会显示在结果中,除非差异至少为一天.
如何针对最小精度优化此查询?
我知道两个可能有用的函数,DateDiff和DateCompare,但我不知道如何在查询中应用它们.
DateDiff("datepart","date1","date2")
DateCompare("date1","date2"[,"datePart"])
DatePart精确度
* s Precise to the second
* n Precise to the minute
* h Precise to the hour
* d Precise to the day
* m Precise to the month
* yyyy Precise to the year
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我正在尝试使用正则表达式来匹配java中的数字,例如:
Pattern p = Pattern.compile("(\d+) / (\d+)");
String myRunway = "12 / 1234";
Matcher m = p.matcher(myRunway);
int nrGroups = m.groupCount();
String rwData = m.group(1); //should have 12
String rwLen = m.group(2); //should have 1234
Run Code Online (Sandbox Code Playgroud)
编译器不喜欢\d(对于任何数字),它说唯一有效的转义是\b \t \n \f \r \" \' \\
只是为了yucks然后我尝试(\\d+) / (\\d+)并且它编译,但是不匹配.但是,nrGroups是2,如果没有匹配则没有意义.如何解析java中的数字组?在搜索论坛时,我发现只有C#帖子.
实际上,我最终希望能够匹配"12R/1234"使用(\d+).* / (\d+)"12"和"1234"作为两组,但我简化了上述内容以试图让它工作.
谢谢!
CF8
我使用此行来获取查询列的MIN值.我刚刚注意到记录集中的空值会导致错误.是否有一种简单的方法可以告诉ArrayMin跳过空值而不必循环列并加载一个包含所有非空值的数组?
<cfset temp_data_min = #round(ArrayMin(query_x["some_field"]))#>
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在使用cffile创建新文件或更新现有文件,具体取决于用户请求的内容.请求来自前一个过程的表单,因此涉及cffile的代码如下所示:
<cfset thefile = "#form.dyn#">
<cfoutput>
<cfsavecontent variable = "testvar">
#form.editor1#
</cfsavecontent>
<cffile action = "write"
file = "/var/www/reports/#thefile#.cfm"
output = "#testvar#">
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
当我写完文件后,我想向用户确认发生这种情况.对于一个新文件,我可以使用IsDefined来检查它是否存在.但我想不出一种方法来检查已更新的现有文件.我考虑过cffile上的try/catch,但只有在看上去没有出错的情况下,catch才会运行.如果我没有收到错误,我可以假设一切都好吗?如果可能的话,我更愿意直接检查.有没有人有想法?