ユーザーと管理者が同じフォームを使用してログインできるClassic ASPを使用して作成したシンプルなログインフォームです。その他の条件が実行されていない場合は、ネストされた従来のASP
データベースの「ユーザー」テーブルで、「ステータス」という名前のフィールドをBIT(つまり「0」または「1」)というDATA TYPEという値のフィールドを作成しました。デフォルトでは、登録された新規ユーザーごとに値が「0」になります。
ステータスが「0」の場合、特定のUserまたはAdminをAuthentication.aspページにリダイレクトして、質問に回答し、SUBMITのonclickを使用してデータベースのステータス値を設定するクエリに合格しました「1」に設定する。 "1"は、ユーザーまたは管理者が認証フォームに入力したことを示し、そのユーザーを[認証]ページにリダイレクトせずに目的のページにリダイレクトできます。 If-elseif-elseステートメントを使用しています。私はそれを何度も再チェックしました。私のif-elseステートメントでは欠けているものはないようです。しかし、私は手動でデータベースのステータス列のステータスとして "1"を入力したとしても、常に認証ページにリダイレクトされます。ここに私のコードです。 "&" は、以下を使用し
Session("Username")=request.form("user_name")
if request.Form("sub_but") <> "" then
sql = "SELECT * FROM Users WHERE UserName='"&request.form("user_name")&"' AND Password='"&request.form("pwd")&"'"
rs.open sql, con, 1, 2
if rs.EOF then
response.Write("<script language='javascript'>{attention_emp();}</script>")
else
if(rs("status")=1 & rs("login_type")="admin") then
Response.Redirect ("admin.asp")
elseif(rs("status")=1 & rs("login_type")="emp") then
response.Redirect("leave.asp")
else
response.Redirect("auth.asp")
end if
end if
rs.close
end if
パブリックサイト(または本当に悪意のある内部ユーザーがいる)の場合は、SQLインジェクション攻撃の投稿されたフォーム変数を確認してください(少なくとも何もない場合は一重引用符を置き換えてください)。 – Mirko