【发布时间】:2012-04-17 05:32:29
【问题描述】:
这是一个我似乎无法解决的非常奇怪的问题。在 WordPress 网站上,我通过短代码在网站上输出了几种表单(登录、注册和其他)。当表单提交时,它们的数据会通过监听 $_POST 数据的“init”钩子进行处理。
请注意,该网站正在运行 WordPress,但我认为这不是 WordPress 问题,这就是我在此发布的原因。
在 IE 9 中提交表单时,单击提交时会清除所有字段的值。例如,假设有一个名为“username”的输入字段,该字段的值设置为“johndoe”;通过IE 9以外的任何浏览器(包括7和8)提交表单时,数据如下:
$_POST['username'] = 'johndoe'
完全符合预期。
但是,当使用 IE9 提交表单时,它是这样的:
$_POST['username'] = ''
据我所知,网站上的每个表单都会出现这种情况。
例如,我构建的自定义登录表单如下所示:
<form id="re_login_form" class="re_login_form" action="" method="post">
<fieldset>
<label for="re_user_Login"><?php _e('Username', 're'); ?></label>
<input name="re_user_login" id="re_user_login" class="required" type="text" title="<?php _e('Username', 're'); ?>"/>
</fieldset>
<fieldset>
<label for="re_user_pass"><?php _e('Password', 're'); ?></label>
<input name="re_user_pass" id="re_user_pass" class="password required" type="password"/>
</fieldset>
<fieldset class="form-action">
<input type="hidden" name="refalf_redirect" value="<?php echo $redirect; ?>"/>
<input type="hidden" name="re_login_nonce" value="<?php echo wp_create_nonce('re-login-nonce'); ?>"/>
<input id="re_login_submit" type="submit" class="button re_submit" value="<?php _e('Log In', 're'); ?>"/>
<p class="forgot-password"><a href="<?php echo wp_lostpassword_url( get_permalink() ); ?>" title="<?php _e('Lost Password', 're'); ?>"><?php _e('Lost Password?', 're'); ?></a></p>
</fieldset>
</form>
其中一件特别有趣的事情是,在 IE9 中单击提交时,这些字段的值会被明显清除。就好像提交按钮在 IE9 中触发了清除字段的操作。
有人有什么想法吗?
【问题讨论】:
-
这不是安全功能吗?假设您登录 facebook,然后注销,您是否真的希望将密码存储在该框中,以便下一个使用您的 PC 的人注入 javascript(只需在地址栏中输入)以获取您的实际密码(纯文本)?我很确定大多数最新的浏览器不再存储表单数据(我的 FF 3.6.3 也没有)
-
与安全无关。在提交之前清除所有表单字段,这意味着在字段中输入的数据甚至没有被提交。
标签: forms internet-explorer internet-explorer-9