Forms CFFORM数据在IE9中不可读

Forms CFFORM数据在IE9中不可读,forms,internet-explorer,coldfusion,Forms,Internet Explorer,Coldfusion,我有一个表单,供用户登录到该站点。它可以在Chrome中工作,但由于某些原因不能在IE 9中工作。 表格如下: <cfform name="loginform" action="login.cfm" method="post"> <div class="span12"> <div class="span2"> User Name: </div> <div class="span2">

我有一个表单,供用户登录到该站点。它可以在Chrome中工作,但由于某些原因不能在IE 9中工作。 表格如下:

<cfform name="loginform" action="login.cfm" method="post">
<div class="span12">
    <div class="span2">
        User Name:
    </div>
    <div class="span2">
        <cfinput type="text" name="username" required="yes">
    </div>
</div>
<div class="span12">
    <div class="span2">
        Password:
    </div>
    <div class="span2">
        <cfinput type="password" name="password" required="yes">
    </div>
</div>
<div class="span12">
    <div class="span2">
        <cfinput name="submit" class="btn btn-primary" value="login" type="submit">
    </div>
</div>
</cfform>

用户名:
密码:
我通常以#form.username#的形式访问变量,但如果在IE中使用,则该变量为空

此处的简化用法:

<cfif isdefined("FORM.submit")>
   username: #form.username#
</cfif>

用户名:#form.username#

当我运行上面的代码时,我看不出您的代码有任何错误。我在表单范围中正确地使用了用户名字段。您使用的是什么版本的Internet Explorer

为了更好地进行调试,我建议如下:

  • 看看第一页的来源,看看有没有什么 真奇怪
  • 安装Fiddler2(),然后使用此选项查看 登录到login.cfm的确切内容
其他需要注意的事项:
您使用的javascript或CF框架可能会干扰某些事情吗?

我也看不出您的代码有任何明显的错误。你在Firefox中也尝试过吗?有时,您可以在那里获得更好的调试信息。可能有实际的错误信息。IE和Chrome在掩盖页面错误方面都有点太“好”了

我的建议也是使用普通表单标签。不要使用cfform标记。这里不太需要它们。他们帮不了你多少忙。您可以对这些字段进行自己的验证,并确切地知道要验证的内容。你也可以用这种方式测试你的领域。只需将cfinput更改为输入,然后查看该字段是否在您的帖子中可用。这将很快让您知道CFFORM标记的实现存在问题


现在有点麻烦了,别忘了修剪输入并将其包装成XMLFormat(),并将cfqueryparams添加到SQL查找中,以最大限度地减少脚本和注入攻击。您还可以使用CF的scriptProtect或在IIS中重写URL来提供帮助。允许在没有任何验证的情况下以自由形式进入表单或URL是非常危险的

当我为#表单执行CFDUMP时,字段用户名为[空字符串]。其他一切都在那里。为什么?当我重命名字段时,它没有任何区别。如果我重命名它并在密码字段后移动,它仍然是空的。当我将用户名类型更改为密码时,它可以工作。出于某种原因,它会忽略type=“text”字段。除非您需要使用cftextarea或任何其他客户端“表单”功能,否则不要使用cfform。对于这样一个简单的表单,真的没有必要。与问题无关,但是如果您的cfinput标签上没有包含message属性,那么required=“yes”将无法正常工作。如果正确使用cfform,这是cfform的优点之一。如果cfinput标记上没有包含message属性,required=“yes”将无法正常工作,“message”属性是可选的。如果忽略该字段,CF仍会验证该字段,但会显示锅炉板错误消息。