C# 登录错误,文本 checking/validation
C# Login error with text checking/validation
所以基本上我登录时在我的文本文件中注册的第一个用户名和密码能够通过验证,但是我的下一对通过了 .contains 但无法检查密码,没有给我消息并关闭控制台。
文本文件示例-
艾略特|Benten67Fred|佩恩
它将能够检查 Elliot 和 Benten67。但是可以找到 Fred 但无法检查密码是否正确?任何帮助都会很棒
public void Register()
{
string filePath = @"/Users/elliot/Documents/Film Libary Software/Film-Libary/Film-Libary/bin/Debug/netcoreapp3.1/UserInfo.txt";
Console.WriteLine("Create A Username which contains A Upper Case character");
Username = Console.ReadLine();
bool usernameIsUpper = Username.Any(char.IsUpper);
if (usernameIsUpper)
{
Console.WriteLine("Please enter a password: ");
Password = Console.ReadLine();
string toWrite = Username + "|" + Password;
File.AppendAllText(filePath, toWrite);
Login();
}
else
{
Console.WriteLine("Invalid Username: Please try again!");
Register();
}
}
public void Login()
{
string fileName = @"/Users/elliot/Documents/Film Libary Software/Film-Libary/Film-Libary/bin/Debug/netcoreapp3.1/UserInfo.txt";
using (StreamReader reader = new StreamReader(fileName))
{
string line;
Console.WriteLine("Enter your username");
string loginUsername = Console.ReadLine();
while ((line = reader.ReadLine()) != null)
{
if (line.Contains(loginUsername))
{
int indexOfDelimiter = line.IndexOf('|');
string usernameFromFile = loginUsername;
string passwordFromFile = line.Substring(indexOfDelimiter + 1, line.Length - (indexOfDelimiter + 1));
Console.WriteLine("Please enter your password");
string enteredPassword = Console.ReadLine();
if (enteredPassword == passwordFromFile)
{
Console.WriteLine("Elliot well done");
}
}
}
}
}
你的阅读代码要求每个用户在一个单独的行,但你没有写新行,你可以在这里看到
Elliot|Benten67Fred|Payne
你需要
Elliot|Benten67
Fred|Payne
错误在这里
string toWrite = Username + "|" + Password;
File.AppendAllText(filePath, toWrite);
你需要
string toWrite = Username + "|" + Password + "\n";
File.AppendAllText(filePath, toWrite);
所以基本上我登录时在我的文本文件中注册的第一个用户名和密码能够通过验证,但是我的下一对通过了 .contains 但无法检查密码,没有给我消息并关闭控制台。
文本文件示例-
艾略特|Benten67Fred|佩恩
它将能够检查 Elliot 和 Benten67。但是可以找到 Fred 但无法检查密码是否正确?任何帮助都会很棒
public void Register()
{
string filePath = @"/Users/elliot/Documents/Film Libary Software/Film-Libary/Film-Libary/bin/Debug/netcoreapp3.1/UserInfo.txt";
Console.WriteLine("Create A Username which contains A Upper Case character");
Username = Console.ReadLine();
bool usernameIsUpper = Username.Any(char.IsUpper);
if (usernameIsUpper)
{
Console.WriteLine("Please enter a password: ");
Password = Console.ReadLine();
string toWrite = Username + "|" + Password;
File.AppendAllText(filePath, toWrite);
Login();
}
else
{
Console.WriteLine("Invalid Username: Please try again!");
Register();
}
}
public void Login()
{
string fileName = @"/Users/elliot/Documents/Film Libary Software/Film-Libary/Film-Libary/bin/Debug/netcoreapp3.1/UserInfo.txt";
using (StreamReader reader = new StreamReader(fileName))
{
string line;
Console.WriteLine("Enter your username");
string loginUsername = Console.ReadLine();
while ((line = reader.ReadLine()) != null)
{
if (line.Contains(loginUsername))
{
int indexOfDelimiter = line.IndexOf('|');
string usernameFromFile = loginUsername;
string passwordFromFile = line.Substring(indexOfDelimiter + 1, line.Length - (indexOfDelimiter + 1));
Console.WriteLine("Please enter your password");
string enteredPassword = Console.ReadLine();
if (enteredPassword == passwordFromFile)
{
Console.WriteLine("Elliot well done");
}
}
}
}
}
你的阅读代码要求每个用户在一个单独的行,但你没有写新行,你可以在这里看到
Elliot|Benten67Fred|Payne
你需要
Elliot|Benten67
Fred|Payne
错误在这里
string toWrite = Username + "|" + Password;
File.AppendAllText(filePath, toWrite);
你需要
string toWrite = Username + "|" + Password + "\n";
File.AppendAllText(filePath, toWrite);