C#不检查所有用户名和密码

时间:2015-04-10 16:47:29

标签: c# asp.net login

用户输入用户名和密码。当它运行时通过并读取文本文件并检查用户名和密码是否匹配,如果他们这样做,则表示欢迎。事情就是当我输入第一个用户名和密码(绿色和123)时,它会登录但是当我输入(蓝色123)时没有任何反应。是不是在阅读全文?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace BookStoreOnline
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Login_Click(object sender, EventArgs e)
        {
            string[] Val = System.IO.File.ReadAllLines(@"C:\......\......\...\.....\...\Login.txt");

            for (int i = 0; i < Val.Length/2; i += 2)
            {
                if (TextBox1.Text == Val[i])
                {
                    if (TextBox2.Text == Val[i + 1])
                    {                      
                        Session.Add("UserName", Val[i]);
                        string x = "HomePage";
                        Response.Redirect(x + ".aspx");
                    }

                    else
                        Label1.Text = "Incorrect Password.";
                }
            }
        }
    }
}

文本文件看起来像这样(可能是我的文本文件格式错误)?

Green
123

Blue
123

1 个答案:

答案 0 :(得分:4)

这是罪魁祸首:

i < Val.Length/2

正在检查文本文件的半行而不是所有行,因此它应该是:

i < Val.Length

现在它将遍历它的所有行。

更新

我重构了你的代码块

将您的代码更改为:

bool LoggedIn= false;
string x = null;
for (int i = 0; i < Val.Length/2; i += 2)
{
    if (TextBox1.Text == Val[i])
    {
        if (TextBox2.Text == Val[i + 1])
        {

            Session.Add("UserName", Val[i]);
            x = "HomePage";
            LoggedIn = true;
            break;
         }
         else
            LoggedIn = false;

    }


}
if(LoggedIn)
  Response.Redirect(x + ".aspx");
else
  Label1.Text = "Incorrect Password.";