领导要求
进入页面JS弹出“输入对话框”当作密码框来登陆,验证密码直接写在代码里。
但是不能在查看源文件下显示出来。
例如不能这样:
1 <script language="javascript">
2 function login()
3 {
4 var pwd="123"; //缺点是在 源代码中可以查看到此密码!
5 var loginPwd = window.prompt("请输入密码:","");
6 if (loginPwd==pwd)
7 {
8 alert("密码正确!重定向到ok.asp");
9 location.href="ok.asp";
10 }
11 else
12 {
13 alert("您输入的密码不对!");
14 }
15 }
16 </script>
17 <body onload="login();">
18 </body>
19
密码直接就可以看到。。不行。。
然后是在ASP声明密码,但是代码在解释时是先把ASP代码段解释为HTML输出了。所以在JS代码块里得不到ASP变量的密码了。
具体可以看下面代码,用了一个隐藏表单来接收变量转换并触发。
1 <%
2 dim action,pwd
3 action=trim(request("action"))
4 pwd=trim(request("pwd"))
5
6 if action="login" then
7 call login()
8 end if
9
10 sub login()
11 if pwd="123" then '此处修改登陆密码
12 session("loginPwd")="ok"
13 response.redirect "ok.asp"
14 else
15 'response.write "<br /><br />密码错误,请重新输入!"
16 response.write "<script language='javascript'>alert('密码错误!');</script>"
17 end if
18 end sub
19 %>
20
21 <html>
22 <head>
23 <title>登陆验证</title>
24
25 <form name="form1" action="?action=login" method="post">
26 <input type="hidden" name="pwd" onpropertychange="document.getElementById('form1').submit();">
27 </form>
28
29 <script language="javascript">
30 var loginPwd=window.prompt("请输入密码:","");
31
32 if (loginPwd!=null)
33 {
34 document.form1.pwd.value=loginPwd;
35 }
36 else
37 {
38 window.close();
39 }
40 </script>
41
42 </head>
43
44 <body>
45 </body>
46 </html>
47
之前ASP一直得不到JS传递过来的变量,因为ASP代码已经先一步解释为HTML代码了。