尝试使用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();
}
有什么想法吗?
-
您的代码不起作用,因为仅仅查看字符串"log.txt"是否包含用户名实际上并不能打开文件并检查内容。
-
不需要使用
StreamReader
/StreamWriter
来读取文件的文本。你只需要打开文件,阅读内容,然后对照以下内容进行检查:contents = File.ReadAllLines(@"C:'Path'To'File'log.txt"); if(contents.Contains(Username.Text)) // ...
-
我真诚地希望你不要期望这个系统一点也不安全将所有用户名/密码组合存储在一个纯文本文件中非常糟糕。任何人都可以打开它,阅读它,并看到文件中的每一个组合。此外,我所要做的就是在你的文件中猜测一些随机字符串。我最好猜一个字母。我将有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
请注意,上面的代码并不关心任何类型的密码,而且肯定还没有准备好生产。你根本不应该使用文本文件来存储你的凭据,应该考虑使用数据库,并对密码进行适当的哈希处理。在尝试将其应用到您的应用程序之前,我会考虑了解更多关于此做法的信息,因为这是相当基本的。
与您的问题相关的第一个指示应该是,您实际上并没有在任何地方使用StreamReader
或StreamWriter
。
if("log.txt".Contains(Username.Text)
这是在检查实际字符串"log.txt"是否包含用户名,并且没有靠近任何文件。
您正在使用"Log.txt"作为字符串。您需要在文件中搜索实际值。