尝试使用StreamWriter和StreamReader创建登录系统,但它没有';不起作用

本文关键字:不起作用 系统 StreamWriter 登录 创建 StreamReader | 更新日期: 2023-09-27 18:14:32

即使Log.txt文件包含我试图登录的用户名和密码,以下仍然不起作用。

这是我的REMADE登录代码:

public void button1_Click(object sender, EventArgs e)
    {
        bool loggedin = false;
        Form2 form2 = new Form2();
        Form1 form1 = new Form1();
        var contents = File.ReadAllLines(@"C:'log.txt");
        if (contents.Contains(Username.Text))
                {
                    loggedin = true;
                    MessageBox.Show("Login sucessfully", "Program", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    form1.Hide();
                    form2.Show();
                }
                else
                {
                    if (loggedin == false)
                    {

                        MessageBox.Show("Invalid username or password.", "Program", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
        }

这是我的注册码:

    {
        using (System.IO.StreamWriter writer = new System.IO.StreamWriter("C:''log.txt", true))
        {
            writer.WriteLine("'r" + "Username : " + textBox1.Text);
            writer.WriteLine("Password : " + textBox2.Text);
            writer.WriteLine("Age : " + textBox4.Text);
        }
        Form5 form5 = new Form5();
        Form1 form1 = new Form1();
        form1.Show();
        this.Hide();
    }

有什么想法吗?

尝试使用StreamWriter和StreamReader创建登录系统,但它没有';不起作用

  1. 您的代码不起作用,因为仅仅查看字符串"log.txt"是否包含用户名实际上并不能打开文件并检查内容。

  2. 不需要使用StreamReader/StreamWriter来读取文件的文本。你只需要打开文件,阅读内容,然后对照以下内容进行检查:

    contents = File.ReadAllLines(@"C:'Path'To'File'log.txt");
    if(contents.Contains(Username.Text))
    // ...
    
  3. 我真诚地希望你不要期望这个系统一点也不安全将所有用户名/密码组合存储在一个纯文本文件中非常糟糕。任何人都可以打开它,阅读它,并看到文件中的每一个组合。此外,我所要做的就是在你的文件中猜测一些随机字符串。我最好猜一个字母。我将有1/26的机会,该字符存在于你的文件中,我将被授予访问权限。

您的代码没有做您认为它正在做的事情。

if ("log.txt".Contains(Username.Text))

这只是检查"log.txt"(作为字符串,而不是文件(是否包含username字段中包含的文本。

假设你只想检查用户名是否存在,你可以这样做:

using System.Linq;
// ...
var usernames = File.ReadAllLines(@"C:'log.txt");
if (usernames.Contains("Username : " + Username.Text)) {
    // Username exists

请注意,上面的代码并不关心任何类型的密码,而且肯定还没有准备好生产。你根本不应该使用文本文件来存储你的凭据,应该考虑使用数据库,并对密码进行适当的哈希处理。在尝试将其应用到您的应用程序之前,我会考虑了解更多关于此做法的信息,因为这是相当基本的。

与您的问题相关的第一个指示应该是,您实际上并没有在任何地方使用StreamReaderStreamWriter

if("log.txt".Contains(Username.Text)

这是在检查实际字符串"log.txt"是否包含用户名,并且没有靠近任何文件。

您正在使用"Log.txt"作为字符串。您需要在文件中搜索实际值。