2012-09-25 64 views
1

我需要一些幫助。我得到了這個簡單的用戶名/密碼腳本來啓用登錄頁面。它基本上是一個表單,要求輸入用戶名/密碼並與代碼中的某些信息進行比較。經典的asp請求表單和變量

If Request.Form("FormUsername") = "username" AND Request.Form("FormPassword") = "password" Then 

我想什麼做的是比較用戶/從一些變量傳遞信息,就像使用變量第二個文件:

<% 
'Username Variables 
Dim PCUser, PCPass 

PCUser = "username" 
PCPass = "password" 
%> 

則包括文件到登錄頁面:

<!--#include file="Users.inc"--> 

然後能夠讀取上的request.form變量:

If Request.Form("FormUsername") = "& PCUser &" AND Request.Form("FormPassword") = "& PCPass &" Then 

這就是我到目前爲止的嘗試,並沒有工作:( 任何人都可以幫我找出原因?

如果我在頁面的最後做的Response.Write它會告訴我的變量值:

<% 
Response.Write("user= " & PCUser & "<br />") 
Response.Write("pass= " & PCPass & "<br />") 
%> 

在此先感謝

PC

+0

''&PCUser&「'應該只是'PCUser'。你的HTML表單看起來像什麼? – bfavaretto

回答

2

嘗試

If Request.Form("FormUsername") = PCUser 
     AND Request.Form("FormPassword") = PCPass Then 

第二次嘗試:

response.write "FormUsername: " & Request.Form("FormUsername") 
response.write "PCUser: " & PCUser 
response.write "Equals: " & (Request.Form("FormUsername") = PCUser) 

請在主頁面和包含文件中使用上述內容進行檢查。

+0

什麼都沒有:( 爲記錄我把包括之前,如果request.form,所以它應該能夠讀取變量就像我在頁面末尾的代碼,對嗎??? – pcapelo

+0

我把你的建議在我的頁面末尾,我得到了這樣的迴應:FormUsername:usernamePCUser:usernameEquals:True但如果我把正確的前如果Request.form它會給我一個虛假的聲明:FormUsername:usernamePCUser:Equals:False – pcapelo

0

更簡單的方法可能是把用戶名和密碼在應用程序中的變量,在Global.asa在您的網站的根目錄:

<script language=vbscript runat=server> 
    SUB Application_OnStart 
      Application.contents("username") = "username" 
      Application.contents("password") = "password" 
    END SUB 
</script> 

這使得提供用戶名和密碼在整個應用程序。在您的網頁,你可以檢查它像這樣(無需一個包括):

If Request.Form("FormUsername") = Application.contents("username") AND Request.Form("FormPassword") = Application.contents("password") Then 
    ... 
End if 

Ofcourse,順便繼續從那裏將是使一個登錄頁面,只要用戶登錄時使用的正確的用戶名和密碼,設置會話變量(即每用戶),並且只檢查會話變量,看看是否有人登錄:

GLOBAL.ASA:

<script language=vbscript runat=server> 
    ' run when the application is started for the first time or re-started 
    SUB Application_OnStart 
      Application.contents("username") = "username" 
      Application.contents("password") = "password" 
    END SUB 

    ' run for each user when he or she first visits the site 
    SUB Session_OnStart 
      Session.Contents("loggedIn") = False 
    END SUB 
</script> 

你的登錄頁面可以當用戶成功登錄時,將會話設置爲TRUE:

If Request.Form("FormUsername") = Application.contents("username") AND Request.Form("FormPassword") = Application.contents("password") Then 
    Session("loggedIn") = True 
End if 

在要保護每一個頁面的頂部,然後你可以這樣做:

If NOT Session("loggedIn") Then 
    Response.redirect("/login.asp") ' redirect to your login page 
End If 

的代碼,這最後一塊可以被放置在一個包含文件,並添加到所有的頂部您想要保護的網頁。

請注意,這是一個非常殘酷的安全系統,代碼未經測試。

希望這會有幫助

+0

謝謝爲了您的建議,我想在這裏實現的是弄清楚它爲什麼不能使用變量,如果我直接在request.fprm上寫用戶名和密碼,它會工作,但我想使用變量,因爲這會改變/更新到用戶名/密碼更容易的人不知道asp和編程。在這一點上,它將只有一個用戶。

關於你的代碼的結束,關於cookie會話,我已經這樣做:) – pcapelo