小编Kip*_*Kip的帖子

如何在ColdFusion中的cfloop over query中获取动态属性名称

cfloop在一个查询中.我想获得一个属性,但是直到运行时我才知道该属性是什么.使用#qryResult[MyAttr]#失败并显示错误"复杂对象类型无法转换为简单值".这样做的语法是什么?

这是一个简化的例子:

<cfquery datasource="TestSource" name="qryResult">
    SELECT * FROM MyTable
</cfquery>

<cfloop query="qryResult">
    <cfset MyAttr="autoid" />
    <cfoutput>
        Test 1: #qryResult.autoid# <br/>  <!--- succeeds --->
        Test 2: #qryResult[MyAttr]# <br/> <!--- fails --->
    </cfoutput>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

coldfusion cfloop

6
推荐指数
1
解决办法
4103
查看次数

从ColdFusion访问映射的网络驱动器

我在ColdFusion中访问映射驱动器时遇到问题.我已\\server\files\sharing映射到z:\.如果我运行此代码,它表示该目录存在完整路径但不存在映射的目录:

<cfscript>
  fullPath = "\\server\files\sharing\reports";
  mappedPath = "z:\reports";

  WriteOutput("fullPath exists: #DirectoryExists(fullPath)#<br/>"); //YES
  WriteOutput("mappedPath exists: #DirectoryExists(mappedPath)#");  //NO
</cfscript>
Run Code Online (Sandbox Code Playgroud)

我做了一些谷歌搜索并找到了一些有同样问题的人,但解决方案始终是使用完整路径.ColdFusion是否有理由无法查看或访问映射驱动器?如果是这样,是否有任何变通方法(可能是系统调用以获取映射驱动器的完整路径)?

windows coldfusion networking file

6
推荐指数
1
解决办法
4036
查看次数

使用cfhttp上传文件会附加换行符(即使在二进制文件上)

更新:我找到了解决方法.如果我提交一个虚拟表单字段和文件,它可以工作.这是一个ColdFusion错误,还是HTTP规范中有些内容表明表单必须包含至少一个非文件表单字段?

更新2:我确信这是一个ColdFusion cfhttp错误.这是基于Leigh的答案以及我使用下面的代码使用javascript 使用文件元素提交表单的事实,并且它工作正常:

<form enctype="multipart/form-data" action="<cfoutput>#CGI.PATH_INFO#</cfoutput>" method="POST" name="theForm">
  <input name="theFile" type="file" /><br/>
</form>
<a href="#" onclick="document.theForm.submit()">submit</a>
Run Code Online (Sandbox Code Playgroud)

我在将文件从ColdFusion服务器上传到另一个Web服务器时遇到了问题.似乎cfhttpparam type="file"是不加选择地在文件末尾添加换行符(回车符和换行符).这打破了二进制文件.这,当我手动上传通过表单字段的文件发生.我尝试过有和没有mimetype参数,我试过用各种二进制格式(exe,zip,jpg)说谎mimetype,但没有任何效果.是否有一些我缺少的参数,或者这是ColdFusion中的一个错误?(我在WinXP上运行CF 8.0.1.195765.)

下面是我正在使用的测试代码,它只是将文件上传到同一目录.手动上载有效,但基于服务器的上载最终会将CRLF附加到文件中.

<cfset MyDir = "C:\test" />
<cfset MyFile = "test.zip" />

<cfif IsDefined("Form.TheFile")>
  <cffile action="upload" fileField="theFile" destination="#MyDir#" nameConflict="MakeUnique" />
<cfelse>
  <cfhttp url="http://#CGI.SERVER_NAME##CGI.SCRIPT_NAME#" method="POST" throwOnError="Yes">
    <cfhttpparam type="file" name="theFile" file="#MyDir#\#MyFile#" />
  </cfhttp>
</cfif>

<html><body>
<h2>Manual upload</h2>
<form enctype="multipart/form-data" action="<cfoutput>#CGI.PATH_INFO#</cfoutput>" method="POST">
  <input name="theFile" type="file" /><br/>
  <input type="submit" value="Submit" />
</form>
</body></html>
Run Code Online (Sandbox Code Playgroud)

forms coldfusion file-upload

6
推荐指数
1
解决办法
2136
查看次数

Javascript 字符串插值与字符串连接给出不同的结果

我遇到过一种情况,Javascript 字符串插值没有给出与字符串连接相同的结果。

这是显示差异的代码的简化版本:

const mmt = moment();
console.log('concatenated: ' + mmt); // "concatenated: 1651070909974"
console.log(`interpolated: ${mmt}`); // "interpolated: Wed Apr 27 2022 10:48:29 GMT-0400"
console.log('mmt.valueOf(): ' + mmt.valueOf()); // "mmt.valueOf(): 1651070909974"
console.log('mmt.toString(): ' + mmt.toString()); // "mmt.toString(): Wed Apr 27 2022 10:48:29 GMT-0400"
Run Code Online (Sandbox Code Playgroud)

所以我的第一反应是,这是由于.toString()和的差异造成.valueOf()的,所以我做了一个小测试对象来验证:

const obj = {
  toString: () => 'toString',
  valueOf: () => 'valueOf',
};

console.log('concatenated: ' + obj); // "concatenated: valueOf"
console.log(`interpolated: ${obj}`); // "interpolated: toString"
console.log('obj.valueOf(): ' + obj.valueOf()); // "obj.valueOf(): valueOf" …
Run Code Online (Sandbox Code Playgroud)

javascript interpolation concatenation ecmascript-6

6
推荐指数
1
解决办法
473
查看次数

什么正则表达式将空格后的任何字母大写?

我正在寻找一个Perl正则表达式,它将使任何以空格开头的字符(或字符串中的第一个字符串)大写.

我很确定有一种简单的方法可以做到这一点,但我没有方便的Perl书,我不经常这样做,我记住它...

regex perl

5
推荐指数
3
解决办法
6573
查看次数

WAMP的CURL

我是PHP的新手,我正在尝试学习如何解析信息,我正在尝试使用CURL,但我无法在Windows Vista上的桌面WAMP上安装它.如何安装CURL?

curl wamp libcurl

5
推荐指数
1
解决办法
1万
查看次数

如何在ColdFusion中覆盖SQL清理

我有一个不幸的任务,清理一堆旧的ColdFusion代码.查询到处都是,我正在努力将它们全部转移到普通的CFC上以便于维护.

我遇到了一个问题,因为cfquery它会自动将单引号转换为双引号.我该如何覆盖这种行为?

更具体的信息如下.


所以这是我开始的查询:

<cfquery name="getObjectInfo" datasource="#BaseDS#">
  SELECT groupName AS lastname, '[Group]' AS firstname
  FROM   groups
  WHERE  groups.group_id = #objectreference_id#
</cfquery>
Run Code Online (Sandbox Code Playgroud)

这里奇怪的是文字被"选中",因为我们希望它被显示的方式(再次,我没有写这个,我只是想把它清理一下).所以在common函数中,select子句有一个可选参数:

  <cffunction name="fSelGroup" access="public" returntype="query"
              hint="Returns query selecting given group.">

    <cfargument name="intGroupID" type="numeric" required="true"
                hint="ID of group to be returned." />
    <cfargument name="strSelectAttributes" type="string" required="false"
                hint="Attributes to be selected in query"
                default="*" />

    <cfquery name="getObjectInfo" datasource="#Application.DataSource#">
      SELECT #Arguments.strSelectAttributes#
      FROM   Groups
      WHERE  Group_ID = #Arguments.intGroupID#
    </cfquery>

    <cfreturn getObjectInfo />

  </cffunction>
Run Code Online (Sandbox Code Playgroud)

这是问题:当我传入"GroupName AS LastName, '[Group]' AS FirstName" …

sql coldfusion sanitization cfquery

5
推荐指数
2
解决办法
2628
查看次数

在iframe中运行的javascript会影响主页吗?

部分代码:

我的下面的代码从我的数据库中提取查询,然后使用inner.HTML =来显示div中的数据.它在原始使用中工作正常....

但是,以下版本在iFrame中调用,因为它用于更新页面.

页面没有错误,然后JavaScript触发,但最后一行不起作用...

我刚刚意识到,可能因为它是在隐藏的iFrame中加载它试图在iFrame中设置div的innerHTML,当然这不会起作用.

这是发生了什么?它没有意义,因为我有另一个脚本以相同的方式在它的末尾调用JavaScript,它工作正常.

<?php
    while ($row = mysql_fetch_array($result))
    {
        $p = $p.'<div id="left"><img src="http://www.sharingizcaring.com/bleepV2/images/thumbs/'.$row[image].'" /></div>';
        $p = $p.'<div id="right"><h2>'.$row[artist].' - '.$row['title'].'</h2><br>'.$row['message'].'<br>';
        $p = $p.'<a href="http://www.sharingizcaring.com/bleepV2/'.$row[username].'">'.$row[username].'</a> '.$row[date].'</div>';
        $p = $p.'<div style="clear: both;"></div>';
        $p = $p.'<div id="dotted-line"></div>';
    }


    $p = addslashes($p);
?>

<script>

        alert('posts are firing? ');

        document.getElementById('posts').innerHTML = 'why doth this faileth?';
</script>
Run Code Online (Sandbox Code Playgroud)

javascript iframe

5
推荐指数
1
解决办法
7240
查看次数

有选择地禁用ColdFusion的内置表单验证的方法吗?

我正在使用一些旧代码.它使用内置的ColdFusion表单验证(即_required隐藏字段).我想在表单中添加一个取消按钮.取消按钮必须实际处理一些业务逻辑(所以我不能让它将location.href设置为其他页面).问题是,因为取消按钮是提交按钮,它会触发内置验证,并且用户会收到该字段所需的错误.

有没有办法禁用该特定提交按钮的验证?我宁愿不尝试修改构建表单的底层代码,因为它在一堆地方使用.这是我的代码的大大简化版本:

<cfif IsDefined("Form.OK")>
  You clicked OK!
<cfelseif IsDefined("Form.Cancel")>
  You clicked Cancel!
</cfif>

<cfoutput>
  <form action="#CGI.Path_Info#" method="POST">
    Enter Name: <input type="text" name="Name" value="" /><br/>
    <input type="hidden" name="Name_required" value="" />
    <input type="submit" name="OK" value="OK" />
    <input type="submit" name="Cancel" value="Cancel" />
  </form>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

我想到的一件事是让取消按钮的onclick删除DOM中任何隐藏的"_required"字段.这有效,但感觉非常hacky.这是我用于该方法的Javascript:

<script type="text/javascript">
  function removeRequiredFields() {
    var els = document.getElementsByTagName('input');
    for(var i = 0; i <= els.length; i++) {
      if(els[i].type == 'hidden' && els[i].name.endsWith('_required'))
        els[i].parentNode.removeChild(els[i]);
    }
  }
</script>
Run Code Online (Sandbox Code Playgroud)

validation coldfusion

5
推荐指数
1
解决办法
883
查看次数

如何确保文件路径在给定的子目录中?

我想确保通过查询字符串设置的文件路径不会超出所需的子目录.现在,我正在检查:

  1. 路径不以" /" 开头,以防止用户给出绝对路径.
  2. 该路径不包含" ..",以防止用户提供所需子目录之外的路径.
  3. 该路径不包含" :",以防止使用URL(即" http://"," ftp://"等).我是否应该在Windows服务器上运行此脚本(不太可能),这也将阻止以驱动器说明符(即" C:\")开头的绝对路径.注意:我知道冒号是Unix文件名中的有效字符,但我永远不会在文件名中使用它.
  4. 路径不以" \" 开头.为了防止我改变主意在Windows服务器上运行,这可以防止指定Windows网络路径(即" \\someserver\someshare").同样,我知道反斜杠是一个有效的Unix文件名字符,但我也不会在任何文件名中使用它.

这些检查是否足够?

背景

我有一个PHP脚本,它(通过查询字符串)获取要显示给用户的示例源文件的路径.所以我可能会给他们一个像" view_sample.php?path=accounting_app/report_view.php"或" view_sample.php?path=ajax_demo/get_info.js" 这样的链接.

脚本看起来基本上是这样的:

$path = $_GET['path'];
if(path_is_valid($path) && is_file("sample/$path"))
{
  header('Content-Type: text/plain');
  readfile("sample/$path");
}
Run Code Online (Sandbox Code Playgroud)

我担心的是,恶意用户会看到该网址,并尝试执行类似" view_sample.php?path=../../database/connection_info.php"的操作,并获取对不在 "sample"目录中的文件的访问权限.

我在上面定义的四个检查(将在path_is_valid()功能中实现)是否足以锁定恶意用户?(另外,我认为支票1,3和4基本上是无关紧要的,因为我在前面设置相对路径,但是如果我不这样做,那么检查是否足够?)

php security sanitization

4
推荐指数
2
解决办法
4952
查看次数