我已经创建了这个代码打击工作,并做了我想要它做的事情,但我想知道是否有更好的更聪明的方法来做到这一点.这是代码:
<cfset myList = ValueList(qSeminarWisReg.SeminarWisTitle,",")>
<cfif ListLen(myList,",") lte 1>
<cfquery datasource="#APPLICATION.dataSource#" name="qSeminarWisRegTwo">
SELECT * FROM SeminarWis
WHERE SeminarWisID = <cfqueryparam value="#myList#" cfsqltype="cf_sql_integer">
</cfquery>
<cfelse>
<cfquery datasource="#APPLICATION.dataSource#" name="qSeminarWisRegTwo">
SELECT * FROM SeminarWis
WHERE 0 = 0
AND (SeminarWisID = <cfqueryparam value="100000000" cfsqltype="cf_sql_integer">
<cfloop index = "x" list = "#myList#" delimiters = ","> OR SeminarWisID = #x#</cfloop>)
</cfquery>
</cfif>
Run Code Online (Sandbox Code Playgroud)
基本上我有一个动态生成的列表,其中包含数字,用逗号分隔.现在这些数字对应于表中的唯一键,因此我只是动态地抓取用户想要的所有行.
就像我说的,这有效,但如果有人有任何关于如何使这更好的提示让我知道!困扰我的部分是我必须使用"1000000"值(一个不存在的值)才能进入OR语句.
我正在通过我的应用程序试图尽可能地保护它,它让我思考.我总是验证我的用户的输入,我总是擦除输入,所以例如,如果我有一个"生日"字段,我确保它是一个有效的日期,然后将其放入数据库.但我的数据库中也有"passwordresettoken"字段,如果用户请求,我的代码会生成此字段.
现在在我的普通用户个人资料页面上,我显然没有名为"passwordresettoken"的字段,所以我不验证或擦除它,因为它不应该存在于将要传递的表单中.事实上,它永远不应该被传递,因为它不是用户会输入的东西.
所以我的问题是,是否可以欺骗输入字段?他们可以编辑我页面上的HTML以包含一个passwordresettoken字段,然后在表单传递时做一些损坏吗?
这是我的代码:
<cfif (CFFILE.FileSize GT (4194304))>
Delete File
<cfelseif CFFILE.serverFileExt neq "png" >
Delete File
<cfelse>
It's ok
</cfif>
Run Code Online (Sandbox Code Playgroud)
我想添加"jpg"和"jpeg"作为允许的文件类型.我试过了,这个没有成功.
<cfif (CFFILE.FileSize GT (4194304))>
Delete File
<cfelseif ( ( CFFILE.serverFileExt neq "png" ) OR ( CFFILE.serverFileExt neq "jpg" ) OR ( CFFILE.serverFileExt neq "jpeg" ) ) >
Delete File
<cfelse>
It's ok
</cfif>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
解:
我的OR语句需要是一个AND,谢谢Miguel-F,并且随着Busches的改进,这是最终的结果:
<cfif (CFFILE.FileSize GT (4194304))>
Delete File
<cfelseif NOT ListFindNoCase("jpg,jpeg,png", CFFILE.serverFileExt)>
Delete File
<cfelse>
It's ok
</cfif>
Run Code Online (Sandbox Code Playgroud)
多谢你们!
基本的想法是这样的:我有一个动态生成表单字段的表单,所以假设有5个人可以注册(它们都花费10美元)然后将显示这5个evens.像这样:
<tr>
<th><label>#SeminarWisTitle#</label></th>
<td>
<label><input type="checkbox" name="#SeminarWisID#" value="10.00" onclick="CheckChoice(this);" onfocus="startCalc();" onblur="stopCalc();" class="checkbox" /> Individual Webinar ($119)</label>
</tr>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
现在因为Javascript,所有这些事件的值都是10.00,但表单字段的名称将是唯一的,这就是我实际上想要存储在数据库中的内容.
这是我写的代码:
<cfparam name="seminarBulkSignUp_List" default="">
<cfoutput query="qSeminarWisTwo">
<cfparam name="FORM.#SeminarWisID#" default="">
<cfif #FORM[#SeminarWisID#]# neq "">
<cfset seminarBulkSignUp_List = ListAppend(seminarBulkSignUp_List, #FORM[#SeminarWisID#]#)>
</cfif>
</cfoutput>
<cfset FORM.SeminarWisTitle = #seminarBulkSignUp_List#>
Run Code Online (Sandbox Code Playgroud)
因此,使用此代码,我对所有可能的事件运行查询,然后只检查已提交的表单,以查看哪些是"空白",如未选中,以及我想要添加的选择要存储在数据库中的列表.
现在这可以让我知道哪些事件被选中,哪些没有,但我希望列表编译实际的FORM FIELD名称而不是他们拥有的值.我该怎么办?
我得到一个类型'数字'的参数不可分配...当我在我的代码中使用parseFloat时出错.我尝试键入differenceBetweenDates as string | number和as any,以及unitDateValue as string | number和any,但错误仍然存在.
这特别令人困惑,因为错误说不能分配,并且当我没有在代码中设置变量时,给我变量differenceBetweenDates.differenceBetweenDates下划线为错误,但我实际上是在分配unitDateValue ;
这是有问题的功能:
export default function processDate(): void {
let endDateValue: any = 10;
let startDateValue: any = 20
let unitDateValue: any;
let unit = 'day';
let differenceBetweenDates: any;
// diff() will return a number
differenceBetweenDates = endDateValue.diff(startDateValue);
if(differenceBetweenDates > 0) {
switch (unit) {
case 'day': {
// ERROR: Argument of type 'number' is not assignable to parameter of type 'string'; …Run Code Online (Sandbox Code Playgroud) coldfusion ×3
cfml ×1
forms ×1
logic ×1
loops ×1
security ×1
sql-server ×1
typescript ×1
variables ×1