2

我有表单,用于用户登录网站。它适用于 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>
4

2 回答 2

1

当我运行它时,我看不出上面的代码有任何问题,我在表单范围内正确地使用了用户名字段。您使用的是哪个版本的 Internet Explorer?

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

  • 查看第一页的来源,看看那里是否有什么奇怪的地方。
  • 安装 Fiddler2 ( http://www.fiddler2.com/ ) 然后使用它来查看发布到 login.cfm 的确切内容。

其他需要注意的事项:您是否使用了可能会干扰事物的 javascript 或 CF 框架?

于 2013-02-19T12:30:00.200 回答
0

我也没有看到您的代码有任何明显错误。你也在 Firefox 中尝试过吗?有时您可以在那里获得更好的调试信息。可能是一个实际的错误消息。IE 和 Chrome 在隐藏页面上的错误方面做得有点“好”。

我的建议也是使用纯格式标签。不要使用 cfform 标签。这里不需要他们太多。他们并没有真正帮助你。您可以对这些字段进行自己的验证,并确切地知道您正在验证的是什么。你也可以这样测试你的领域。只需将该 cfinput 更改为输入,然后查看该字段是否在您的帖子中可用。这将很快让您知道您的 CFFORM 标签的实现存在问题。

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

于 2013-02-19T18:54:03.533 回答