領導要求
進入頁面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變量的密碼了。
具體可以看下面代碼,用了一個隱藏表單來接收變量轉換并觸發(fā)。
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代碼已經(jīng)先一步解釋為HTML代碼了。